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