PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.0.4
GiveWP – Donation Plugin and Fundraising Platform v3.0.4
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 / TestOffsiteGateway / TestOffsiteGateway.php
give / src / PaymentGateways / Gateways / TestOffsiteGateway Last commit date
TestOffsiteGateway.php 2 years ago testOffsiteGateway.tsx 2 years ago
TestOffsiteGateway.php
167 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\TestOffsiteGateway;
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\PaymentRefunded;
11 use Give\Framework\PaymentGateways\Commands\RedirectOffsite;
12 use Give\Framework\PaymentGateways\PaymentGateway;
13 use Give\Framework\Support\Facades\Scripts\ScriptAsset;
14 use Give\Helpers\Form\Utils as FormUtils;
15 use Give\PaymentGateways\Gateways\TestGateway\Views\LegacyFormFieldMarkup;
16
17 /**
18 * Class TestGatewayOffsite
19 * @since 2.18.0
20 */
21 class TestOffsiteGateway extends PaymentGateway
22 {
23 /**
24 * @inheritDoc
25 */
26 public $secureRouteMethods = [
27 'securelyReturnFromOffsiteRedirect'
28 ];
29
30 /**
31 * @inheritDoc
32 */
33 public static function id(): string
34 {
35 return 'test-offsite-gateway';
36 }
37
38 /**
39 * @inheritDoc
40 */
41 public function getId(): string
42 {
43 return self::id();
44 }
45
46 /**
47 * @inheritDoc
48 */
49 public function getName(): string
50 {
51 return __('Test Gateway (Offsite)', 'give');
52 }
53
54 /**
55 * @since 3.0.0
56 */
57 public function formSettings(int $formId): array
58 {
59 return [
60 'message' => __(
61 'There are no fields for this gateway and you will not be charged. This payment option is only for you to test the donation experience.',
62 'give'
63 )
64 ];
65 }
66
67 /**
68 * @inheritDoc
69 */
70 public function getPaymentMethodLabel(): string
71 {
72 return __('Test Gateway (Offsite)', 'give');
73 }
74
75 /**
76 * @since 2.30.0
77 */
78 public function enqueueScript(int $formId)
79 {
80 $scriptAsset = ScriptAsset::get(GIVE_PLUGIN_DIR . 'build/testOffsiteGateway.asset.php');
81
82 wp_enqueue_script(
83 $this::id(),
84 GIVE_PLUGIN_URL . 'build/testOffsiteGateway.js',
85 $scriptAsset['dependencies'],
86 $scriptAsset['version'],
87 true
88 );
89 }
90
91 /**
92 * @since 2.18.0
93 */
94 public function getLegacyFormFieldMarkup(int $formId, array $args): string
95 {
96 if (FormUtils::isLegacyForm($formId)) {
97 return false;
98 }
99
100 /** @var LegacyFormFieldMarkup $legacyFormFieldMarkup */
101 $legacyFormFieldMarkup = give(LegacyFormFieldMarkup::class);
102
103 return $legacyFormFieldMarkup();
104 }
105
106 /**
107 * @inheritDoc
108 */
109 public function createPayment(Donation $donation, $gatewayData)
110 {
111 $redirectUrl = $this->generateSecureGatewayRouteUrl(
112 'securelyReturnFromOffsiteRedirect',
113 $donation->id,
114 [
115 'givewp-donation-id' => $donation->id,
116 'givewp-return-url' => $gatewayData['successUrl']
117 ]
118 );
119
120 return new RedirectOffsite($redirectUrl);
121 }
122
123 /**
124 * @since 2.29.0 Return PaymentRefunded instead of a bool value
125 * @since 2.20.0
126 * @inerhitDoc
127 */
128 public function refundDonation(Donation $donation): PaymentRefunded
129 {
130 return new PaymentRefunded();
131 }
132
133 /**
134 * An example of using a secureRouteMethod for extending the Gateway API to handle a redirect.
135 *
136 * @since 3.0.0
137 *
138 * @throws Exception
139 */
140 protected function securelyReturnFromOffsiteRedirect(array $queryParams): RedirectResponse
141 {
142 /** @var Donation $donation */
143 $donation = Donation::find($queryParams['givewp-donation-id']);
144 $this->updateDonation($donation);
145
146 return new RedirectResponse($queryParams['givewp-return-url']);
147 }
148
149 /**
150 * @param Donation $donation
151 *
152 * @return void
153 * @throws Exception
154 */
155 private function updateDonation(Donation $donation)
156 {
157 $donation->status = DonationStatus::COMPLETE();
158 $donation->gatewayTransactionId = "test-gateway-transaction-id";
159 $donation->save();
160
161 DonationNote::create([
162 'donationId' => $donation->id,
163 'content' => 'Donation Completed from Test Gateway Offsite.'
164 ]);
165 }
166 }
167