PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.17.0
GiveWP – Donation Plugin and Fundraising Platform v4.17.0
4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 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 All 256 releases
give / src / PaymentGateways / Gateways / PayPalStandard / Actions / CreatePayPalStandardPaymentURL.php

CreatePayPalStandardPaymentURL.php in GiveWP – Donation Plugin and Fundraising Platform 4.17.0, at src/PaymentGateways/Gateways/PayPalStandard/Actions/CreatePayPalStandardPaymentURL.php

117 lines 4.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\PayPalStandard\Actions;
4
5 use Give\Donations\Models\Donation;
6 use Give\Framework\PaymentGateways\DonationSummary;
7
8 /**
9 * This class create PayPal Standard payment gateway one time payment url on basis of donor donation query.
10 *
11 * @since 2.22.2
12 */
13 class CreatePayPalStandardPaymentURL
14 {
15 public function __invoke(
16 Donation $donation,
17 $successRedirectUrl, // PayPal Standard will redirect donor to this url after successful payment.
18 $failedRedirectUrl, // PayPal Standard will redirect donor to this url after failed payment.
19 $payPalIpnListenerUrl // PayPal Standard will send ipn notification to this url on payment update.
20 )
21 {
22 $paypalPaymentRedirectUrl = trailingslashit(give_get_paypal_redirect()) . '?';
23 $itemName = (new DonationSummary($donation))->getSummary();
24 $payPalPartnerCode = 'givewp_SP';
25 // Setup PayPal API params.
26 $paypalPaymentArguments = [
27 // PayPal account information
28 'business' => give_get_option('paypal_email', false),
29
30 // Donor info
31 'first_name' => $donation->firstName,
32 'last_name' => $donation->lastName,
33 'email' => $donation->email,
34 'address1' => $donation->billingAddress->address1,
35 'address2' => $donation->billingAddress->address2,
36 'city' => $donation->billingAddress->city,
37 'state' => $donation->billingAddress->state,
38 'zip' => $donation->billingAddress->zip,
39 'country' => $donation->billingAddress->country,
40
41 // Donation information.
42 'invoice' => $donation->purchaseKey,
43 'amount' => $donation->amount->formatToDecimal(),
44 'item_name' => stripslashes($itemName),
45 'currency_code' => give_get_currency($donation->id),
46
47 // Urls
48 'return' => $successRedirectUrl,
49 'cancel_return' => $failedRedirectUrl,
50 'notify_url' => $payPalIpnListenerUrl,
51
52 'no_shipping' => '1',
53 'shipping' => '0',
54 'no_note' => '1',
55 'charset' => get_bloginfo('charset'),
56 'custom' => $donation->id,
57 'rm' => '2',
58 'page_style' => give_get_paypal_page_style(),
59 'cbt' => get_bloginfo('name'),
60 'bn' => $payPalPartnerCode,
61 ];
62
63 // Donations or regular transactions?
64 $paypalPaymentArguments['cmd'] = give_get_paypal_button_type();
65
66 $paypalPaymentArguments = $this->supportLegacyFilter($paypalPaymentArguments, $donation);
67
68 /**
69 * Filter the PayPal Standard redirect args.
70 *
71 * @since 2.19.0
72 *
73 * @param array $paypalPaymentArguments PayPal Standard payment Data.
74 * @param Donation $paymentData Gateway payment data.
75 */
76 $paypalPaymentArguments = apply_filters(
77 'give_gateway_paypal_redirect_args',
78 $paypalPaymentArguments,
79 $donation
80 );
81
82 $paypalPaymentRedirectUrl .= http_build_query($paypalPaymentArguments);
83
84 // Fix for some sites that encode the entities.
85 return str_replace('&amp;', '&', $paypalPaymentRedirectUrl);
86 }
87
88 /**
89 * @since 2.19.0
90 */
91 private function supportLegacyFilter(array $paypalPaymentArguments, Donation $donation): array
92 {
93 /**
94 * Filter the PayPal Standard redirect args.
95 *
96 * @since 2.21.0 Create and pass legacy payment data to filter hook
97 * @since 1.8
98 */
99 return apply_filters_deprecated(
100 'give_paypal_redirect_args',
101 [
102 $paypalPaymentArguments,
103 $paypalPaymentArguments['custom'],
104 [
105 'price' => $donation->amount->formatToDecimal(),
106 'purchase_key' => $donation->purchaseKey,
107 'user_email' => $donation->email,
108 'date' => $donation->createdAt->format('Y-m-d H:i:s'),
109 'post_data' => give_clean($_POST),
110 'gateway' => $donation->gatewayId,
111 ]
112 ],
113 '2.19.0'
114 );
115 }
116 }
117