PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.25.2
GiveWP – Donation Plugin and Fundraising Platform v2.25.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 / PayPalCommerce / ScriptLoader.php
give / src / PaymentGateways / PayPalCommerce Last commit date
Actions 4 years ago DataTransferObjects 4 years ago Exceptions 4 years ago Migrations 4 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 4 years ago Utils.php 4 years ago onBoardingRedirectHandler.php 3 years ago
ScriptLoader.php
223 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 'liveWarning' => give_is_test_mode() ? esc_html__(
96 'You have connected your account for test mode. You will need to connect again once you
97 are in live mode.',
98 'give'
99 ) : '',
100 ],
101 ]
102 );
103
104 $script = <<<EOT
105 function givePayPalOnBoardedCallback(authCode, sharedId) {
106 const query = '&authCode=' + authCode + '&sharedId=' + sharedId;
107 fetch( ajaxurl + '?action=give_paypal_commerce_user_on_boarded' + query )
108 .then(function(res){ return res.json() })
109 .then(function(res) {
110 if ( true !== res.success ) {
111 alert('Something went wrong!');
112 return;
113 }
114
115 // Remove PayPal quick help container.
116 const paypalErrorQuickHelp = document.getElementById('give-paypal-onboarding-trouble-notice');
117 paypalErrorQuickHelp && paypalErrorQuickHelp.remove();
118 });
119 }
120 EOT;
121
122 wp_add_inline_script(
123 'give-paypal-partner-js',
124 $script
125 );
126 }
127
128 /**
129 * Load public assets.
130 *
131 * @since 2.9.0
132 */
133 public function loadPublicAssets()
134 {
135 if (!Utils::gatewayIsActive() || !Utils::isAccountReadyToAcceptPayment()) {
136 return;
137 }
138
139 /* @var MerchantDetail $merchant */
140 $merchant = give(MerchantDetail::class);
141 $scriptId = 'give-paypal-commerce-js';
142
143 /**
144 * List of PayPal query parameters: https://developer.paypal.com/docs/checkout/reference/customize-sdk/#query-parameters
145 */
146 $payPalSdkQueryParameters = [
147 'client-id' => $merchant->clientId,
148 'merchant-id' => $merchant->merchantIdInPayPal,
149 'components' => 'hosted-fields,buttons',
150 'locale' => get_locale(),
151 'disable-funding' => 'credit',
152 'vault' => true,
153 'data-partner-attribution-id' => give('PAYPAL_COMMERCE_ATTRIBUTION_ID'),
154 'data-client-token' => $this->merchantRepository->getClientToken(),
155 ];
156
157 if (give_is_setting_enabled(give_get_option('paypal_commerce_accept_venmo', 'disabled'))) {
158 $payPalSdkQueryParameters['enable-funding'] = 'venmo';
159 }
160
161 wp_enqueue_script(
162 $scriptId,
163 GIVE_PLUGIN_URL . 'assets/dist/js/paypal-commerce.js',
164 [],
165 GIVE_VERSION,
166 true
167 );
168
169 wp_localize_script(
170 $scriptId,
171 'givePayPalCommerce',
172 [
173 'paypalCardInfoErrorPrefixes' => [
174 'expirationDateField' => esc_html__('Card Expiration Date:', 'give'),
175 'cardNumberField' => esc_html__('Card Number:', 'give'),
176 'cardCvcField' => esc_html__('Card CVC:', 'give'),
177 ],
178 'cardFieldPlaceholders' => [
179 'cardNumber' => esc_html__('Card Number', 'give'),
180 'cardCvc' => esc_html__('CVC', 'give'),
181 'expirationDate' => esc_html__('MM/YY', 'give'),
182 ],
183 'threeDsCardAuthenticationFailedNotice' => esc_html__(
184 'There was a problem authenticating your payment method. Please try again. If the problem persists, please try another payment method.',
185 'give'
186 ),
187 'errorCodeLabel' => esc_html__('Error Code', 'give'),
188 'genericDonorErrorMessage' => __(
189 'There was an error processing your donation. Please contact the administrator.',
190 'give'
191 ),
192 // 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
193 'hostedCardFieldStyles' => apply_filters('give_paypal_commerce_hosted_field_style', []),
194 'supportsCustomPayments' => $merchant->supportsCustomPayments ? 1 : '',
195 'accountCountry' => $merchant->accountCountry,
196 'separatorLabel' => esc_html__('Or pay with card', 'give'),
197 'payPalSdkQueryParameters' => $payPalSdkQueryParameters,
198 'textForOverlayScreen' => sprintf(
199 '<h3>%1$s</h3><p>%2$s</p><p>%3$s</p>',
200 esc_html__('Donation Processing...', 'give'),
201 esc_html__('Checking donation status with PayPal.', 'give'),
202 esc_html__('This will only take a second!', 'give')
203 ),
204 ]
205 );
206 }
207
208 /**
209 * Get PayPal partner js url.
210 *
211 * @since 2.9.0
212 *
213 * @return string
214 */
215 private function getPartnerJsUrl()
216 {
217 return sprintf(
218 '%1$swebapps/merchantboarding/js/lib/lightbox/partner.js',
219 give(PayPalClient::class)->getHomePageUrl()
220 );
221 }
222 }
223