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