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