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