PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.2
GiveWP – Donation Plugin and Fundraising Platform v3.12.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 / PayPalCommerce.php
give / src / PaymentGateways / PayPalCommerce Last commit date
Banners 2 years ago DataTransferObjects 4 years ago Exceptions 3 years ago Migrations 2 years ago Models 2 years ago PayPalCheckoutSdk 2 years ago Repositories 2 years ago Webhooks 2 years ago AccountAdminNotices.php 4 years ago AdminSettingFields.php 2 years ago AdvancedCardFields.php 4 years ago AjaxRequestHandler.php 2 years ago DonationDetailsPage.php 4 years ago DonationFormPaymentMethod.php 2 years ago PayPalClient.php 2 years ago PayPalCommerce.php 2 years ago RefreshToken.php 2 years ago RefundPaymentHandler.php 4 years ago ScriptLoader.php 2 years ago Utils.php 2 years ago onBoardingRedirectHandler.php 2 years ago
PayPalCommerce.php
256 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\Exceptions\Primitives\Exception;
7 use Give\Framework\PaymentGateways\Commands\GatewayCommand;
8 use Give\Framework\PaymentGateways\Commands\PaymentComplete;
9 use Give\Framework\PaymentGateways\PaymentGateway;
10 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
11 use Give\PaymentGateways\PayPalCommerce\Models\PayPalOrder;
12
13 /**
14 * Class PayPalCommerce
15 *
16 * Boots the PayPalCommerce gateway and provides its basic registration properties
17 *
18 * @since 2.9.0
19 */
20 class PayPalCommerce extends PaymentGateway
21 {
22 /**
23 * @deprecated
24 *
25 * Use getId or id function to access payment gateway id.
26 *
27 */
28 const GATEWAY_ID = 'paypal-commerce';
29
30 /**
31 * @since 2.19.0
32 */
33 public function getLegacyFormFieldMarkup(int $formId, array $args): string
34 {
35 return give(AdvancedCardFields::class)->addCreditCardForm($formId);
36 }
37
38 /**
39 * @since 2.19.0
40 *
41 * @return string
42 */
43 public static function id(): string
44 {
45 return 'paypal-commerce';
46 }
47
48 /**
49 * @since 2.19.0
50 *
51 * @return string
52 */
53 public function getId(): string
54 {
55 return self::id();
56 }
57
58 /**
59 * @since 2.19.0
60 *
61 * @return string
62 */
63 public function getName(): string
64 {
65 return esc_html__('PayPal Donations', 'give');
66 }
67
68 /**
69 * @since 2.19.0
70 *
71 * @return string
72 */
73 public function getPaymentMethodLabel(): string
74 {
75 return esc_html__('Credit Card', 'give');
76 }
77
78 /**
79 * @inerhitDoc
80 * @since 2.19.0
81 *
82 * @param array{paypalOrder: PayPalOrder} $gatewayData
83 */
84 public function createPayment(Donation $donation, $gatewayData): GatewayCommand
85 {
86 /** @var PayPalOrder $paypalOrder */
87 $paypalOrder = $gatewayData['paypalOrder'];
88
89 $command = PaymentComplete::make($paypalOrder->payment->id)
90 ->setPaymentNotes(
91 sprintf(
92 __('Transaction Successful. PayPal Transaction ID: %1$s PayPal Order ID: %2$s', 'give'),
93 $paypalOrder->payment->id,
94 $paypalOrder->id
95 )
96 );
97
98 give()->payment_meta->update_meta(
99 $donation->id,
100 '_give_order_id',
101 $paypalOrder->id
102 );
103
104 return $command;
105 }
106
107 /**
108 * @since 3.0.0 Conditionally add "Transaction Type" setting.
109 * @since 2.33.0 Register new payment field type setting.
110 * @since 2.27.3 Enable Venmo payment method by default.
111 * @since 2.16.2 Add setting "Transaction type".
112 */
113 public function getOptions()
114 {
115 /* @var MerchantDetail $merchantDetails */
116 $merchantDetails = give(MerchantDetail::class);
117
118 $settings = [
119 [
120 'type' => 'title',
121 'id' => 'give_gateway_settings_1',
122 'table_html' => false,
123 ],
124 [
125 'id' => 'paypal_commerce_introduction',
126 'type' => 'paypal_commerce_introduction',
127 ],
128 [
129 'type' => 'sectionend',
130 'id' => 'give_gateway_settings_1',
131 'table_html' => false,
132 ],
133 [
134 'type' => 'title',
135 'id' => 'give_gateway_settings_2',
136 ],
137 [
138 'name' => esc_html__('Account Country', 'give'),
139 'id' => 'paypal_commerce_account_country',
140 'type' => 'paypal_commerce_account_country',
141 ],
142 [
143 'name' => esc_html__('Connect With Paypal', 'give'),
144 'id' => 'paypal_commerce_account_manger',
145 'type' => 'paypal_commerce_account_manger',
146 ],
147 [
148 'name' => esc_html__('Accept Venmo', 'give'),
149 'id' => 'paypal_commerce_accept_venmo',
150 'type' => 'radio_inline',
151 'desc' => esc_html__(
152 'Displays a button allowing Donors to pay with Venmo (US-only). Donations still come into your PayPal account and are subject to normal PayPal transaction fees.',
153 'give'
154 ),
155 'default' => 'enabled',
156 'options' => [
157 'enabled' => esc_html__('Enabled', 'give'),
158 'disabled' => esc_html__('Disabled', 'give'),
159 ],
160 ],
161 [
162 'name' => esc_html__('Payment Field Type', 'give'),
163 'desc' => sprintf(
164 esc_html__(
165 '"Auto" provides the most payment options to the donor as possible, based on your account. "Smart Buttons Only" shows only the payment buttons. There is no "Hosted Only" option at this time due to limitations with PayPal\'s hosted fields. Not sure what this means? %1$sRead here%2$s.',
166 'give'
167 ),
168 '<a href="https://docs.givewp.com/paypal-settings" target="_blank">',
169 '</a>'
170 ),
171 'id' => 'paypal_payment_field_type',
172 'type' => 'radio_inline',
173 'options' => [
174 'auto' => esc_html__('Auto', 'give'),
175 'smart-buttons' => esc_html__('Smart Buttons Only', 'give'),
176 ],
177 'default' => 'auto',
178 ],
179 [
180 'name' => esc_html__('PayPal Donations Gateway Settings Docs Link', 'give'),
181 'id' => 'paypal_commerce_gateway_settings_docs_link',
182 'url' => esc_url('http://docs.givewp.com/paypal-donations'),
183 'title' => esc_html__('PayPal Donations Gateway Settings', 'give'),
184 'type' => 'give_docs_link',
185 ],
186 [
187 'type' => 'sectionend',
188 'id' => 'give_gateway_settings_2',
189 ],
190 ];
191
192 if (Utils::isDonationTransactionTypeSupported($merchantDetails->accountCountry ?: '')) {
193 $settings = give_settings_array_insert(
194 $settings,
195 'paypal_commerce_accept_venmo',
196 [
197 [
198 'name' => esc_html__('Transaction Type', 'give'),
199 'desc' => esc_html__(
200 'Nonprofits must verify their status to withdraw donations they receive via PayPal. PayPal users that are not verified nonprofits must demonstrate how their donations will be used, once they raise more than $10,000. By default, GiveWP transactions are sent to PayPal as donations. You may change the transaction type using this option if you feel you may not meet PayPal\'s donation requirements.',
201 'give'
202 ),
203 'id' => 'paypal_commerce_transaction_type',
204 'type' => 'radio_inline',
205 'options' => [
206 'donation' => esc_html__('Donation', 'give'),
207 'standard' => esc_html__('Standard Transaction', 'give'),
208 ],
209 'default' => 'donation',
210 ]
211 ]
212 );
213 }
214
215 if ($merchantDetails->accountIsReady) {
216 $settings = give_settings_array_insert(
217 $settings,
218 'paypal_commerce_gateway_settings_docs_link',
219 [
220 [
221 'name' => esc_html__('Collect Billing Details', 'give'),
222 'id' => 'paypal_commerce_collect_billing_details',
223 'type' => 'radio_inline',
224 'desc' => esc_html__(
225 'If enabled, required billing address fields are added to PayPal Donations Donation forms. These fields are required to process the transaction when enabled. Billing address details are added to both the donation and donor record in GiveWP.',
226 'give'
227 ),
228 'default' => 'disabled',
229 'options' => [
230 'enabled' => esc_html__('Enabled', 'give'),
231 'disabled' => esc_html__('Disabled', 'give'),
232 ],
233 ],
234 ]
235 );
236 }
237
238 /**
239 * filter the settings
240 *
241 * @since 2.9.6
242 */
243 return apply_filters('give_get_settings_paypal_commerce', $settings);
244 }
245
246 /**
247 * @since 2.20.0
248 * @inerhitDoc
249 * @throws Exception
250 */
251 public function refundDonation(Donation $donation)
252 {
253 throw new Exception('Method has not been implemented yet. Please use the legacy method in the meantime.');
254 }
255 }
256