PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.3.2
GiveWP – Donation Plugin and Fundraising Platform v4.3.2
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
resources 1 year ago PayPalCommerceGateway.php 1 year ago payPalCommerceGateway.tsx 1 year ago types.ts 1 year ago
PayPalCommerceGateway.php
140 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\PayPalCommerce;
4
5 use Exception;
6 use Give\DonationForms\Actions\GenerateDonationFormValidationRouteUrl;
7 use Give\Framework\Support\Scripts\Concerns\HasScriptAssetFile;
8 use Give\Helpers\Form\Utils;
9 use Give\Helpers\Language;
10 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
11 use Give\PaymentGateways\PayPalCommerce\PayPalCommerce;
12 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
13
14 /**
15 * An extension of the PayPalCommerce gateway in GiveWP that supports the NextGenPaymentGatewayInterface.
16 */
17 class PayPalCommerceGateway extends PayPalCommerce
18 {
19 use HasScriptAssetFile;
20
21 /**
22 * This function uses to render the credit card form for v2 donation forms.
23 *
24 * @since 3.0.0
25 *
26 * @param int $formId
27 * @param array $args
28 *
29 * @return string
30 */
31 public function getLegacyFormFieldMarkup(int $formId, array $args): string
32 {
33 return parent::getLegacyFormFieldMarkup($formId, $args);
34 }
35
36 /**
37 * @since 3.1.0 set translations for script
38 * @since 3.0.0
39 */
40 public function enqueueScript(int $formId)
41 {
42 $assets = $this->getScriptAsset(GIVE_PLUGIN_DIR . 'build/payPalCommerceGateway.asset.php');
43 $handle = $this::id();
44
45 wp_enqueue_script(
46 $handle,
47 GIVE_PLUGIN_URL . 'build/payPalCommerceGateway.js',
48 $assets['dependencies'],
49 $assets['version'],
50 true
51 );
52
53 Language::setScriptTranslations($handle);
54 }
55
56 /**
57 * @since 3.19.1 Add validate URL
58 *
59 * @throws Exception
60 */
61 public function formSettings(int $formId): array
62 {
63 return [
64 'ajaxUrl' => admin_url('admin-ajax.php'),
65 'donationFormId' => $formId,
66 'donationFormNonce' => wp_create_nonce("give_donation_form_nonce_{$formId}"),
67 'sdkOptions' => $this->getPayPalSDKOptions($formId),
68 'validateUrl' => (new GenerateDonationFormValidationRouteUrl())(),
69 ];
70 }
71
72 /**
73 * List of PayPal query parameters: https://developer.paypal.com/docs/checkout/reference/customize-sdk/#query-parameters
74 *
75 * @since 3.0.0
76 * @throws Exception
77 */
78 private function getPayPalSDKOptions(int $formId): array
79 {
80 /* @var MerchantDetail $merchantDetailModel */
81 $merchantDetailModel = give(MerchantDetail::class);
82
83 /* @var MerchantDetails $merchantDetailRepository */
84 $merchantDetailRepository = give(MerchantDetails::class);
85
86 // Add hosted fields if payment field type is auto and connect account type supports custom payments.
87 $paymentFieldType = give_get_option('paypal_payment_field_type', 'auto');
88 $paymentComponents[] = 'buttons';
89
90 $formIsV3 = Utils::isV3Form($formId);
91 $venmoEnabled = give_is_setting_enabled(give_get_option('paypal_commerce_accept_venmo', 'disabled'));
92 $fieldsEnabled = 'auto' === $paymentFieldType && $merchantDetailModel->supportsCustomPayments;
93
94 $data = [
95 'intent' => 'capture',
96 'vault' => 'false',
97 'currency' => give_get_currency($formId),
98 ];
99
100 if ($formIsV3) {
101 if ($fieldsEnabled) {
102 $paymentComponents[] = 'card-fields';
103 }
104
105 $data = array_merge($data, [
106 'dataNamespace' => 'givewp/paypal-commerce',
107 'clientId' => $merchantDetailModel->clientId,
108 'disableFunding' => 'credit',
109 'dataPartnerAttributionId' => give('PAYPAL_COMMERCE_ATTRIBUTION_ID'),
110 'dataClientToken' => $merchantDetailRepository->getClientToken(),
111 'components' => implode(',', $paymentComponents),
112 ]);
113
114 if ($venmoEnabled){
115 $data['enableFunding'] = 'venmo';
116 }
117 } else {
118 if ($fieldsEnabled) {
119 $paymentComponents[] = 'hosted-fields';
120 }
121
122 $data = array_merge($data, [
123 // data-namespace is required for multiple PayPal SDKs to load in harmony.
124 'data-namespace' => 'givewp/paypal-commerce',
125 'client-id' => $merchantDetailModel->clientId,
126 'disable-funding' => 'credit',
127 'data-partner-attribution-id' => give('PAYPAL_COMMERCE_ATTRIBUTION_ID'),
128 'data-client-token' => $merchantDetailRepository->getClientToken(),
129 'components' => implode(',', $paymentComponents),
130 ]);
131
132 if ($venmoEnabled){
133 $data['enable-funding'] = 'venmo';
134 }
135 }
136
137 return $data;
138 }
139 }
140