PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 / TestGateway.php
give / src / PaymentGateways / Gateways / TestGateway Last commit date
Views 2 years ago TestGateway.php 11 months ago testGateway.tsx 2 years ago
TestGateway.php
167 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\TestGateway;
4
5 use Exception;
6 use Give\Donations\Models\Donation;
7 use Give\Framework\PaymentGateways\Commands\GatewayCommand;
8 use Give\Framework\PaymentGateways\Commands\PaymentComplete;
9 use Give\Framework\PaymentGateways\Commands\PaymentRefunded;
10 use Give\Framework\PaymentGateways\Contracts\WebhookNotificationsListener;
11 use Give\Framework\PaymentGateways\Log\PaymentGatewayLog;
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 * A gateway for testing the donation process. No actual payment is processed and only form validation is performed.
20 *
21 * @since 4.5.0 Implements the WebhookNotificationsListener interface
22 * @since 3.0.0 change to Test Donations and manual id to replace legacy gateway
23 * @since 2.18.0
24 */
25 class TestGateway extends PaymentGateway implements WebhookNotificationsListener
26 {
27 /**
28 * @inheritDoc
29 */
30 public static function id(): string
31 {
32 return 'manual';
33 }
34
35 /**
36 * @inheritDoc
37 */
38 public function getId(): string
39 {
40 return self::id();
41 }
42
43 /**
44 * @inheritDoc
45 */
46 public function getName(): string
47 {
48 return __('Test Donation', 'give');
49 }
50
51 /**
52 * @since 2.32.0 updated to enqueue script
53 * @since 2.30.0
54 */
55 public function enqueueScript(int $formId)
56 {
57 $scriptAsset = ScriptAsset::get(GIVE_PLUGIN_DIR . 'build/testGateway.asset.php');
58
59 wp_enqueue_script(
60 $this::id(),
61 GIVE_PLUGIN_URL . 'build/testGateway.js',
62 $scriptAsset['dependencies'],
63 $scriptAsset['version'],
64 true
65 );
66
67 Language::setScriptTranslations($this::id());
68 }
69
70 /**
71 * @inheritDoc
72 */
73 public function getPaymentMethodLabel(): string
74 {
75 return __('Test Donation', 'give');
76 }
77
78 /**
79 * @since 2.18.0
80 */
81 public function getLegacyFormFieldMarkup(int $formId, array $args): string
82 {
83 if (FormUtils::isLegacyForm($formId)) {
84 return '';
85 }
86
87 /** @var LegacyFormFieldMarkup $legacyFormFieldMarkup */
88 $legacyFormFieldMarkup = give(LegacyFormFieldMarkup::class);
89
90 return $legacyFormFieldMarkup();
91 }
92
93 /**
94 * @inheritDoc
95 */
96 public function createPayment(Donation $donation, $gatewayData): GatewayCommand
97 {
98 $intent = $gatewayData['testGatewayIntent'] ?? 'test-gateway-intent';
99
100 return new PaymentComplete("test-gateway-transaction-id-{$intent}-$donation->id");
101 }
102
103 /**
104 * @since 2.29.0 Return PaymentRefunded instead of a bool value
105 * @since 2.20.0
106 * @inerhitDoc
107 */
108 public function refundDonation(Donation $donation): PaymentRefunded
109 {
110 return new PaymentRefunded();
111 }
112
113 /**
114 * This method implementation is a sample that demonstrates how we can handle webhook notifications
115 *
116 * @since 4.5.0
117 */
118 public function webhookNotificationsListener()
119 {
120 try {
121 $webhookNotification = give_clean($_REQUEST);
122
123 /**
124 * Allow developers to handle the webhook notification.
125 *
126 * @since 4.5.0
127 *
128 * @param array $webhookNotification
129 */
130 do_action('givewp_' . $this::id() . '_webhook_notification_handler', $webhookNotification);
131
132 // We will handle recurring donations in a separate submodule.
133 if (isset($webhookNotification['gatewayRecurringPayment']) && $webhookNotification['gatewayRecurringPayment']) {
134 return;
135 }
136
137 if ( ! isset($webhookNotification['gatewayPaymentStatus']) && ! isset($webhookNotification['gatewayPaymentId'])) {
138 return;
139 }
140
141 switch (strtolower($webhookNotification['gatewayPaymentStatus'])) {
142 case 'complete':
143 $this->webhook->events->paymentCompleted($webhookNotification['gatewayPaymentId']);
144 break;
145 case 'failed':
146 $this->webhook->events->paymentFailed($webhookNotification['gatewayPaymentId']);
147 break;
148 case 'cancelled':
149 $this->webhook->events->paymentCancelled($webhookNotification['gatewayPaymentId']);
150 break;
151 case 'refunded':
152 $this->webhook->events->paymentRefunded($webhookNotification['gatewayPaymentId']);
153 break;
154 default:
155 break;
156 }
157 } catch (Exception $e) {
158 esc_html_e('Webhook Notification failed.', 'give');
159 PaymentGatewayLog::error(
160 'Webhook Notification failed. Error: ' . $e->getMessage()
161 );
162 }
163
164 exit();
165 }
166 }
167