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