PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.7
GiveWP – Donation Plugin and Fundraising Platform v2.19.7
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 / LegacyPaymentGateways / Adapters / LegacyPaymentGatewayAdapter.php
give / src / LegacyPaymentGateways / Adapters Last commit date
LegacyPaymentGatewayAdapter.php 4 years ago
LegacyPaymentGatewayAdapter.php
126 lines
1 <?php
2
3 namespace Give\LegacyPaymentGateways\Adapters;
4
5 use Give\Framework\PaymentGateways\Contracts\PaymentGatewayInterface;
6 use Give\PaymentGateways\Actions\CreatePaymentAction;
7 use Give\PaymentGateways\Actions\CreateSubscriptionAction;
8 use Give\PaymentGateways\DataTransferObjects\FormData;
9 use Give\PaymentGateways\DataTransferObjects\GiveInsertPaymentData;
10 use Give\PaymentGateways\DataTransferObjects\SubscriptionData;
11
12 /**
13 * Class LegacyPaymentGatewayAdapter
14 * @since 2.18.0
15 */
16 class LegacyPaymentGatewayAdapter
17 {
18
19 /**
20 * Get legacy form field markup to display gateway specific payment fields
21 *
22 * @since 2.18.0
23 * @since 2.19.0 Added missing $args parameter for ID prefixing and general backwards compatibility.
24 *
25 * @param int $formId
26 * @param array $args
27 * @param PaymentGatewayInterface $registeredGateway
28 *
29 * @return string|bool
30 */
31 public function getLegacyFormFieldMarkup($formId, $args, $registeredGateway)
32 {
33 return $registeredGateway->getLegacyFormFieldMarkup($formId, $args);
34 }
35
36 /**
37 * First we create a payment, then move on to the gateway processing
38 *
39 * @since 2.18.0
40 * @since 2.19.0 Replace is_recurring with is_donation_recurring to detect recurring donations.
41 *
42 * @param array $legacyDonationData Legacy Donation Data
43 * @param PaymentGatewayInterface $registeredGateway
44 *
45 * @return void
46 */
47 public function handleBeforeGateway($legacyDonationData, $registeredGateway)
48 {
49 $formData = FormData::fromRequest($legacyDonationData);
50
51 $this->validateGatewayNonce($formData->gatewayNonce);
52
53 $donationId = $this->createPayment($formData->toGiveInsertPaymentData());
54
55 $gatewayPaymentData = $formData->toGatewayPaymentData($donationId);
56
57 if (give_recurring_is_donation_recurring($formData->legacyDonationData)) {
58 $subscriptionData = SubscriptionData::fromRequest($legacyDonationData);
59 $subscriptionId = $this->createSubscription($donationId, $formData, $subscriptionData);
60
61 $gatewaySubscriptionData = $subscriptionData->toGatewaySubscriptionData($subscriptionId);
62
63 $registeredGateway->handleCreateSubscription($gatewayPaymentData, $gatewaySubscriptionData);
64 }
65
66 $registeredGateway->handleCreatePayment($gatewayPaymentData);
67 }
68
69 /**
70 * Create the payment
71 *
72 * @since 2.18.0
73 *
74 * @param GiveInsertPaymentData $giveInsertPaymentData
75 *
76 * @return int
77 */
78 private function createPayment(GiveInsertPaymentData $giveInsertPaymentData)
79 {
80 /** @var CreatePaymentAction $createPaymentAction */
81 $createPaymentAction = give(CreatePaymentAction::class);
82
83 return $createPaymentAction($giveInsertPaymentData);
84 }
85
86 /**
87 * Create the payment
88 *
89 * @since 2.18.0
90 *
91 * @param int $donationId
92 * @param FormData $formData
93 * @param SubscriptionData $subscriptionData
94 *
95 * @return int
96 */
97 private function createSubscription($donationId, FormData $formData, SubscriptionData $subscriptionData)
98 {
99 /** @var CreateSubscriptionAction $createSubscriptionAction */
100 $createSubscriptionAction = give(CreateSubscriptionAction::class);
101
102 return $createSubscriptionAction($donationId, $formData, $subscriptionData);
103 }
104
105 /**
106 * Validate Gateway Nonce
107 *
108 * @since 2.18.0
109 *
110 * @param string $gatewayNonce
111 */
112 private function validateGatewayNonce($gatewayNonce)
113 {
114 if (!wp_verify_nonce($gatewayNonce, 'give-gateway')) {
115 wp_die(
116 esc_html__(
117 'We\'re unable to recognize your session. Please refresh the screen to try again; otherwise contact your website administrator for assistance.',
118 'give'
119 ),
120 esc_html__('Error', 'give'),
121 ['response' => 403]
122 );
123 }
124 }
125 }
126