PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.3
GiveWP – Donation Plugin and Fundraising Platform v3.0.3
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / PaymentGateways / Gateways / PayPalCommerce / PayPalCommerceGateway.php
give / src / PaymentGateways / Gateways / PayPalCommerce Last commit date
PayPalCommerceGateway.php 2 years ago payPalCommerceGateway.tsx 2 years ago
PayPalCommerceGateway.php
103 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\PayPalCommerce;
4
5 use Give\Framework\Support\Scripts\Concerns\HasScriptAssetFile;
6 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
7 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
8 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
9
10 /**
11 * An extension of the PayPalCommerce gateway in GiveWP that supports the NextGenPaymentGatewayInterface.
12 */
13 class PayPalCommerceGateway extends PayPalCommerce
14 {
15 use HasScriptAssetFile;
16
17 /**
18 * This function uses to render the credit card form for v2 donation forms.
19 *
20 * @since 3.0.0
21 *
22 * @param int $formId
23 * @param array $args
24 *
25 * @return string
26 */
27 public function getLegacyFormFieldMarkup(int $formId, array $args): string
28 {
29 return parent::getLegacyFormFieldMarkup($formId, $args);
30 }
31
32 /**
33 * @since 3.0.0
34 */
35 public function enqueueScript(int $formId)
36 {
37 $assets = $this->getScriptAsset(GIVE_PLUGIN_DIR . 'build/payPalCommerceGateway.asset.php');
38
39 wp_enqueue_script(
40 self::id(),
41 GIVE_PLUGIN_URL . 'build/payPalCommerceGateway.js',
42 $assets['dependencies'],
43 $assets['version'],
44 true
45 );
46 }
47
48 /**
49 * @throws \Exception
50 */
51 public function formSettings(int $formId): array
52 {
53 return [
54 'ajaxUrl' => admin_url('admin-ajax.php'),
55 'donationFormId' => $formId,
56 'donationFormNonce' => wp_create_nonce("give_donation_form_nonce_{$formId}"),
57 'sdkOptions' => $this->getPayPalSDKOptions($formId),
58 ];
59 }
60
61 /**
62 * List of PayPal query parameters: https://developer.paypal.com/docs/checkout/reference/customize-sdk/#query-parameters
63 *
64 * @since 3.0.0
65 * @throws \Exception
66 */
67 private function getPayPalSDKOptions(int $formId): array
68 {
69 /* @var MerchantDetail $merchantDetailModel */
70 $merchantDetailModel = give(MerchantDetail::class);
71
72 /* @var MerchantDetails $merchantDetailRepository */
73 $merchantDetailRepository = give(MerchantDetails::class);
74
75 // Add hosted fields if payment field type is auto and connect account type supports custom payments.
76 $paymentFieldType = give_get_option('paypal_payment_field_type', 'auto');
77 $paymentComponents[] = 'buttons';
78 if ('auto' === $paymentFieldType && $merchantDetailModel->supportsCustomPayments) {
79 $paymentComponents[] = 'hosted-fields';
80 }
81
82 $data = [
83 // data-namespace is required for multiple PayPal SDKs to load in harmony.
84 'data-namespace' => 'givewp/paypal-commerce',
85 'client-id' => $merchantDetailModel->clientId,
86 'merchant-id' => $merchantDetailModel->merchantIdInPayPal,
87 'components' => implode(',', $paymentComponents),
88 'disable-funding' => 'credit',
89 'intent' => 'capture',
90 'vault' => 'false',
91 'data-partner-attribution-id' => give('PAYPAL_COMMERCE_ATTRIBUTION_ID'),
92 'data-client-token' => $merchantDetailRepository->getClientToken(),
93 'currency' => give_get_currency($formId),
94 ];
95
96 if (give_is_setting_enabled(give_get_option('paypal_commerce_accept_venmo', 'disabled'))) {
97 $data['enable-funding'] = 'venmo';
98 }
99
100 return $data;
101 }
102 }
103