PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.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 / Gateways / TestGateway / TestGatewayOffsite.php
give / src / PaymentGateways / Gateways / TestGateway Last commit date
Views 4 years ago TestGateway.php 4 years ago TestGatewayOffsite.php 4 years ago
TestGatewayOffsite.php
168 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\TestGateway;
4
5 use Give\Donations\Models\Donation;
6 use Give\Donations\Models\DonationNote;
7 use Give\Donations\ValueObjects\DonationStatus;
8 use Give\Framework\Exceptions\Primitives\Exception;
9 use Give\Framework\Http\Response\Types\RedirectResponse;
10 use Give\Framework\PaymentGateways\Commands\RedirectOffsite;
11 use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
12 use Give\Framework\PaymentGateways\PaymentGateway;
13 use Give\Helpers\Form\Utils as FormUtils;
14 use Give\PaymentGateways\Gateways\TestGateway\Views\LegacyFormFieldMarkup;
15
16 use function Give\Framework\Http\Response\response;
17
18 /**
19 * Class TestGatewayOffsite
20 * @since 2.18.0
21 */
22 class TestGatewayOffsite extends PaymentGateway
23 {
24 /**
25 * @inheritDoc
26 */
27 public $routeMethods = [
28 'returnFromOffsiteRedirect'
29 ];
30
31 /**
32 * @inheritDoc
33 */
34 public $secureRouteMethods = [
35 'securelyReturnFromOffsiteRedirect'
36 ];
37
38 /**
39 * @inheritDoc
40 */
41 public static function id(): string
42 {
43 return 'test-gateway-offsite';
44 }
45
46 /**
47 * @inheritDoc
48 */
49 public function getId(): string
50 {
51 return self::id();
52 }
53
54 /**
55 * @inheritDoc
56 */
57 public function getName(): string
58 {
59 return __('Test Gateway Offsite', 'give');
60 }
61
62 /**
63 * @inheritDoc
64 */
65 public function getPaymentMethodLabel(): string
66 {
67 return __('Test Gateway Offsite', 'give');
68 }
69
70 /**
71 * @inheritDoc
72 */
73 public function getLegacyFormFieldMarkup(int $formId, array $args): string
74 {
75 if (FormUtils::isLegacyForm($formId)) {
76 return false;
77 }
78
79 /** @var LegacyFormFieldMarkup $legacyFormFieldMarkup */
80 $legacyFormFieldMarkup = give(LegacyFormFieldMarkup::class);
81
82 return $legacyFormFieldMarkup();
83 }
84
85 /**
86 * @inheritDoc
87 */
88 public function createPayment(Donation $donation, $gatewayData = null)
89 {
90 $redirectUrl = $this->generateSecureGatewayRouteUrl(
91 'securelyReturnFromOffsiteRedirect',
92 $donation->id,
93 ['give-donation-id' => $donation->id]
94 );
95
96 return new RedirectOffsite($redirectUrl);
97 }
98
99 /**
100 * An example of using a routeMethod for extending the Gateway API to handle a redirect.
101 *
102 * @since 2.21.0 update to use Donation model
103 * @since 2.19.0
104 *
105 * @param array $queryParams
106 *
107 * @return RedirectResponse
108 * @throws Exception
109 * @throws PaymentGatewayException
110 */
111 protected function returnFromOffsiteRedirect(array $queryParams): RedirectResponse
112 {
113 $donation = Donation::find($queryParams['give-donation-id']);
114
115 $this->updateDonation($donation);
116
117 return response()->redirectTo(give_get_success_page_uri());
118 }
119
120 /**
121 * An example of using a secureRouteMethod for extending the Gateway API to handle a redirect.
122 *
123 * @since 2.21.0 update to use Donation model
124 * @since 2.19.0
125 *
126 * @param array $queryParams
127 *
128 * @return RedirectResponse
129 * @throws Exception
130 */
131 protected function securelyReturnFromOffsiteRedirect(array $queryParams): RedirectResponse
132 {
133 $donation = Donation::find($queryParams['give-donation-id']);
134
135 $this->updateDonation($donation);
136
137 return response()->redirectTo(give_get_success_page_uri());
138 }
139
140 /**
141 * @param Donation $donation
142 *
143 * @return void
144 * @throws Exception
145 */
146 private function updateDonation(Donation $donation)
147 {
148 $donation->status = DonationStatus::COMPLETE();
149 $donation->gatewayTransactionId = "test-gateway-transaction-id";
150 $donation->save();
151
152 DonationNote::create([
153 'donationId' => $donation->id,
154 'content' => 'Donation Completed from Test Gateway Offsite.'
155 ]);
156 }
157
158 /**
159 * @since 2.20.0
160 * @inerhitDoc
161 * @throws Exception
162 */
163 public function refundDonation(Donation $donation)
164 {
165 throw new Exception('Method has not been implemented yet. Please use the legacy method in the meantime.');
166 }
167 }
168