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