PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.31.0
GiveWP – Donation Plugin and Fundraising Platform v2.31.0
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 / PayPalCommerce / ScriptLoader.php
give / src / PaymentGateways / PayPalCommerce Last commit date
DataTransferObjects 4 years ago Exceptions 3 years ago Migrations 3 years ago Models 3 years ago PayPalCheckoutSdk 3 years ago Repositories 3 years ago Webhooks 4 years ago AccountAdminNotices.php 4 years ago AdminSettingFields.php 3 years ago AdvancedCardFields.php 4 years ago AjaxRequestHandler.php 3 years ago DonationDetailsPage.php 4 years ago DonationFormPaymentMethod.php 4 years ago PayPalClient.php 3 years ago PayPalCommerce.php 3 years ago RefreshToken.php 3 years ago RefundPaymentHandler.php 4 years ago ScriptLoader.php 3 years ago Utils.php 4 years ago onBoardingRedirectHandler.php 3 years ago
ScriptLoader.php
226 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce;
4
5 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
6 use Give\PaymentGateways\PayPalCommerce\Repositories\MerchantDetails;
7 use Give_Admin_Settings;
8
9 /**
10 * Class ScriptLoader
11 * @package Give\PaymentGateways\PayPalCommerce
12 *
13 * @since 2.9.0
14 */
15 class ScriptLoader
16 {
17 /**
18 * @since 2.9.0
19 *
20 * @var MerchantDetails
21 */
22 private $merchantRepository;
23
24 /**
25 * ScriptLoader constructor.
26 *
27 * @since 2.9.0
28 *
29 * @param MerchantDetails $merchantRepository
30 */
31 public function __construct(MerchantDetails $merchantRepository)
32 {
33 $this->merchantRepository = $merchantRepository;
34 }
35
36 /**
37 * Load admin scripts
38 *
39 * @since 2.9.0
40 */
41 public function loadAdminScripts()
42 {
43 if (!Give_Admin_Settings::is_setting_page('gateway', 'paypal')) {
44 return;
45 }
46
47 wp_enqueue_script(
48 'give-paypal-partner-js',
49 $this->getPartnerJsUrl(),
50 [],
51 null,
52 true
53 );
54
55 wp_enqueue_style(
56 'give-admin-paypal-commerce-css',
57 GIVE_PLUGIN_URL . 'assets/dist/css/admin-paypal-commerce.css',
58 [],
59 GIVE_VERSION
60 );
61
62 wp_localize_script(
63 'give-paypal-partner-js',
64 'givePayPalCommerce',
65 [
66 'translations' => [
67 'confirmPaypalAccountDisconnection' => esc_html__('Disconnect PayPal Account', 'give'),
68 'disconnectPayPalAccount' => esc_html__(
69 'Are you sure you want to disconnect your PayPal account?',
70 'give'
71 ),
72 'connectSuccessTitle' => esc_html__('You’re connected to PayPal! Here’s what’s next...', 'give'),
73 'pciWarning' => sprintf(
74 __(
75 'PayPal allows you to accept credit or debit cards directly on your website. Because of
76 this, your site needs to maintain <a href="%1$s" target="_blank">PCI-DDS compliance</a>.
77 GiveWP never stores sensitive information like card details to your server and works
78 seamlessly with SSL certificates. Compliance is comprised of, but not limited to:',
79 'give'
80 ),
81 'https://givewp.com/documentation/resources/pci-compliance/'
82 ),
83 'pciComplianceInstructions' => [
84 esc_html__(
85 'Using a trusted, secure hosting provider – preferably one which claims and actively promotes PCI compliance.',
86 'give'
87 ),
88 esc_html__(
89 'Maintain security best practices when setting passwords and limit access to your server.',
90 'give'
91 ),
92 esc_html__('Implement an SSL certificate to keep your donations secure.', 'give'),
93 esc_html__('Keep plugins up to date to ensure latest security fixes are present.', 'give'),
94 ]
95 ],
96 ]
97 );
98
99 $script = <<<EOT
100 function giveSandboxPayPalOnBoardedCallback(authCode, sharedId){
101 givePayPalOnBoardedCallback('sandbox', authCode, sharedId);
102 }
103
104 function giveLivePayPalOnBoardedCallback(authCode, sharedId){
105 givePayPalOnBoardedCallback('live', authCode, sharedId);
106 }
107
108 function givePayPalOnBoardedCallback(mode, authCode, sharedId) {
109 const query = '&mode=' + mode + '&authCode=' + authCode + '&sharedId=' + sharedId;
110
111 fetch( ajaxurl + '?action=give_paypal_commerce_user_on_boarded' + query )
112 .then(function(res){ return res.json() })
113 .then(function(res) {
114 if ( true !== res.success ) {
115 console.log(res);
116 alert('Something went wrong!');
117 return;
118 }
119
120 // Remove PayPal quick help container.
121 const paypalErrorQuickHelp = document.getElementById('give-paypal-onboarding-trouble-notice');
122 paypalErrorQuickHelp && paypalErrorQuickHelp.remove();
123 });
124 }
125 EOT;
126
127 wp_add_inline_script(
128 'give-paypal-partner-js',
129 $script
130 );
131 }
132
133 /**
134 * Load public assets.
135 *
136 * @since 2.9.0
137 */
138 public function loadPublicAssets()
139 {
140 if (!Utils::gatewayIsActive() || !Utils::isAccountReadyToAcceptPayment()) {
141 return;
142 }
143
144 /* @var MerchantDetail $merchant */
145 $merchant = give(MerchantDetail::class);
146 $scriptId = 'give-paypal-commerce-js';
147
148 /**
149 * List of PayPal query parameters: https://developer.paypal.com/docs/checkout/reference/customize-sdk/#query-parameters
150 * @since 2.27.1 Removed locale query parameter.
151 */
152 $payPalSdkQueryParameters = [
153 'client-id' => $merchant->clientId,
154 'merchant-id' => $merchant->merchantIdInPayPal,
155 'components' => 'hosted-fields,buttons',
156 'disable-funding' => 'credit',
157 'vault' => true,
158 'data-partner-attribution-id' => give('PAYPAL_COMMERCE_ATTRIBUTION_ID'),
159 'data-client-token' => $this->merchantRepository->getClientToken(),
160 ];
161
162 if (give_is_setting_enabled(give_get_option('paypal_commerce_accept_venmo', 'disabled'))) {
163 $payPalSdkQueryParameters['enable-funding'] = 'venmo';
164 }
165
166 wp_enqueue_script(
167 $scriptId,
168 GIVE_PLUGIN_URL . 'assets/dist/js/paypal-commerce.js',
169 [],
170 GIVE_VERSION,
171 true
172 );
173
174 wp_localize_script(
175 $scriptId,
176 'givePayPalCommerce',
177 [
178 'paypalCardInfoErrorPrefixes' => [
179 'expirationDateField' => esc_html__('Card Expiration Date:', 'give'),
180 'cardNumberField' => esc_html__('Card Number:', 'give'),
181 'cardCvcField' => esc_html__('Card CVC:', 'give'),
182 ],
183 'cardFieldPlaceholders' => [
184 'cardNumber' => esc_html__('Card Number', 'give'),
185 'cardCvc' => esc_html__('CVC', 'give'),
186 'expirationDate' => esc_html__('MM/YY', 'give'),
187 ],
188 'threeDsCardAuthenticationFailedNotice' => esc_html__(
189 'There was a problem authenticating your payment method. Please try again. If the problem persists, please try another payment method.',
190 'give'
191 ),
192 'errorCodeLabel' => esc_html__('Error Code', 'give'),
193 'genericDonorErrorMessage' => __(
194 'There was an error processing your donation. Please contact the administrator.',
195 'give'
196 ),
197 // List of style properties support by PayPal for advanced card fields: https://developer.paypal.com/docs/business/checkout/reference/style-guide/#style-the-card-payments-fields
198 'hostedCardFieldStyles' => apply_filters('give_paypal_commerce_hosted_field_style', []),
199 'supportsCustomPayments' => $merchant->supportsCustomPayments ? 1 : '',
200 'accountCountry' => $merchant->accountCountry,
201 'separatorLabel' => esc_html__('Or pay with card', 'give'),
202 'payPalSdkQueryParameters' => $payPalSdkQueryParameters,
203 'textForOverlayScreen' => sprintf(
204 '<h3>%1$s</h3><p>%2$s</p><p>%3$s</p>',
205 esc_html__('Donation Processing...', 'give'),
206 esc_html__('Checking donation status with PayPal.', 'give'),
207 esc_html__('This will only take a second!', 'give')
208 ),
209 ]
210 );
211 }
212
213 /**
214 * Get PayPal partner js url.
215 *
216 * @since 2.30.0 sandbox PayPal partner js loads slow. So we are using live url for now.
217 * @since 2.9.0
218 *
219 * @return string
220 */
221 private function getPartnerJsUrl()
222 {
223 return 'https://www.paypal.com/webapps/merchantboarding/js/lib/lightbox/partner.js';
224 }
225 }
226