PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.23.2
GiveWP – Donation Plugin and Fundraising Platform v2.23.2
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 / PayPalStandard / Actions / CreatePayPalStandardPaymentURL.php
give / src / PaymentGateways / Gateways / PayPalStandard / Actions Last commit date
CreatePayPalStandardPaymentURL.php 3 years ago GenerateDonationFailedPageUrl.php 4 years ago GenerateDonationReceiptPageUrl.php 4 years ago ProcessIpnDonationRefund.php 4 years ago
CreatePayPalStandardPaymentURL.php
117 lines
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