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 / Framework / PaymentGateways / Webhooks / WebhookEvents.php
give / src / Framework / PaymentGateways / Webhooks Last commit date
EventHandlers 1 week ago Webhook.php 11 months ago WebhookEvents.php 1 week ago
WebhookEvents.php
367 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Webhooks;
4
5 use Give\Donations\ValueObjects\DonationStatus;
6 use Give\Framework\Support\Facades\ActionScheduler\AsBackgroundJobs;
7 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
8
9 /**
10 * @since 4.5.0
11 */
12 class WebhookEvents
13 {
14 /**
15 * @var string
16 */
17 protected $gatewayId;
18
19 /**
20 * @since 4.5.0
21 */
22 public function __construct(string $gatewayId)
23 {
24 $this->gatewayId = $gatewayId;
25 }
26
27 /**
28 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
29 * @since 4.5.0
30 */
31 public function donationAbandoned(
32 string $gatewayTransactionId,
33 string $message = '',
34 bool $skipRecurringDonations = false,
35 int $donationId = 0
36 ) {
37 $this->setDonationStatus(
38 DonationStatus::ABANDONED(),
39 $gatewayTransactionId,
40 $message,
41 $skipRecurringDonations,
42 $donationId
43 );
44 }
45
46 /**
47 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
48 * @since 4.5.0
49 */
50 public function donationCancelled(
51 string $gatewayTransactionId,
52 string $message = '',
53 bool $skipRecurringDonations = false,
54 int $donationId = 0
55 ) {
56 $this->setDonationStatus(
57 DonationStatus::CANCELLED(),
58 $gatewayTransactionId,
59 $message,
60 $skipRecurringDonations,
61 $donationId
62 );
63 }
64
65 /**
66 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
67 * @since 4.5.0
68 */
69 public function donationCompleted(
70 string $gatewayTransactionId,
71 string $message = '',
72 bool $skipRecurringDonations = false,
73 int $donationId = 0
74 ) {
75 $this->setDonationStatus(
76 DonationStatus::COMPLETE(),
77 $gatewayTransactionId,
78 $message,
79 $skipRecurringDonations,
80 $donationId
81 );
82 }
83
84 /**
85 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
86 * @since 4.5.0
87 */
88 public function donationFailed(
89 string $gatewayTransactionId,
90 string $message = '',
91 bool $skipRecurringDonations = false,
92 int $donationId = 0
93 )
94 {
95 $this->setDonationStatus(
96 DonationStatus::FAILED(),
97 $gatewayTransactionId,
98 $message,
99 $skipRecurringDonations,
100 $donationId
101 );
102 }
103
104 /**
105 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
106 * @since 4.5.0
107 */
108 public function donationPending(
109 string $gatewayTransactionId,
110 string $message = '',
111 bool $skipRecurringDonations = false,
112 int $donationId = 0
113 )
114 {
115 $this->setDonationStatus(
116 DonationStatus::PENDING(),
117 $gatewayTransactionId,
118 $message,
119 $skipRecurringDonations,
120 $donationId
121 );
122 }
123
124 /**
125 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
126 * @since 4.5.0
127 */
128 public function donationPreapproval(
129 string $gatewayTransactionId,
130 string $message = '',
131 bool $skipRecurringDonations = false,
132 int $donationId = 0
133 ) {
134 $this->setDonationStatus(
135 DonationStatus::PREAPPROVAL(),
136 $gatewayTransactionId,
137 $message,
138 $skipRecurringDonations,
139 $donationId
140 );
141 }
142
143 /**
144 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
145 * @since 4.5.0
146 */
147 public function donationProcessing(
148 string $gatewayTransactionId,
149 string $message = '',
150 bool $skipRecurringDonations = false,
151 int $donationId = 0
152 ) {
153 $this->setDonationStatus(
154 DonationStatus::PROCESSING(),
155 $gatewayTransactionId,
156 $message,
157 $skipRecurringDonations,
158 $donationId
159 );
160 }
161
162 /**
163 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
164 * @since 4.5.0
165 */
166 public function donationRefunded(
167 string $gatewayTransactionId,
168 string $message = '',
169 bool $skipRecurringDonations = false,
170 int $donationId = 0
171 )
172 {
173 $this->setDonationStatus(
174 DonationStatus::REFUNDED(),
175 $gatewayTransactionId,
176 $message,
177 $skipRecurringDonations,
178 $donationId
179 );
180 }
181
182 /**
183 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
184 * @since 4.5.0
185 */
186 public function donationRevoked(
187 string $gatewayTransactionId,
188 string $message = '',
189 bool $skipRecurringDonations = false,
190 int $donationId = 0
191 )
192 {
193 $this->setDonationStatus(
194 DonationStatus::REVOKED(),
195 $gatewayTransactionId,
196 $message,
197 $skipRecurringDonations,
198 $donationId
199 );
200 }
201
202 /**
203 * @since 4.5.0
204 */
205 public function subscriptionActive(
206 string $gatewaySubscriptionId,
207 string $message = '',
208 bool $initialDonationShouldBeCompleted = false
209 )
210 {
211 $this->setSubscriptionStatus(SubscriptionStatus::ACTIVE(), $gatewaySubscriptionId, $message,
212 $initialDonationShouldBeCompleted);
213 }
214
215 /**
216 * @since 4.5.0
217 */
218 public function subscriptionCancelled(string $gatewaySubscriptionId, string $message = '')
219 {
220 $this->setSubscriptionStatus(SubscriptionStatus::CANCELLED(), $gatewaySubscriptionId, $message);
221 }
222
223 /**
224 * @since 4.5.0
225 */
226 public function subscriptionCompleted(string $gatewaySubscriptionId, string $message = '')
227 {
228 $this->setSubscriptionStatus(SubscriptionStatus::COMPLETED(), $gatewaySubscriptionId, $message);
229 }
230
231 /**
232 * @since 4.5.0
233 */
234 public function subscriptionExpired(string $gatewaySubscriptionId, string $message = '')
235 {
236 $this->setSubscriptionStatus(SubscriptionStatus::EXPIRED(), $gatewaySubscriptionId, $message);
237 }
238
239 /**
240 * @since 4.5.0
241 */
242 public function subscriptionFailing(string $gatewaySubscriptionId, string $message = '')
243 {
244 $this->setSubscriptionStatus(SubscriptionStatus::FAILING(), $gatewaySubscriptionId, $message);
245 }
246
247 /**
248 * @since 4.5.0
249 */
250 public function subscriptionPaused(string $gatewaySubscriptionId, string $message = '')
251 {
252 $this->setSubscriptionStatus(SubscriptionStatus::PAUSED(), $gatewaySubscriptionId, $message);
253 }
254
255 /**
256 * @since 4.5.0
257 */
258 public function subscriptionPending(string $gatewaySubscriptionId, string $message = '')
259 {
260 $this->setSubscriptionStatus(SubscriptionStatus::PENDING(), $gatewaySubscriptionId, $message);
261 }
262
263 /**
264 * @since 4.5.0
265 */
266 public function subscriptionSuspended(string $gatewaySubscriptionId, string $message = '')
267 {
268 $this->setSubscriptionStatus(SubscriptionStatus::SUSPENDED(), $gatewaySubscriptionId, $message);
269 }
270
271 /**
272 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
273 * @since 4.5.0
274 *
275 * @return int The webhook event ID. Zero if there was an error setting the event.
276 */
277 public function subscriptionFirstDonation(
278 string $gatewayTransactionId,
279 string $message = '',
280 bool $setSubscriptionActive = true,
281 bool $setDonationComplete = true,
282 string $gatewaySubscriptionId = '',
283 int $donationId = 0
284 ): int {
285 $hook = sprintf('givewp_%s_webhook_event_subscription_first_donation', $this->gatewayId);
286 $args = [
287 $gatewayTransactionId,
288 $message,
289 $setSubscriptionActive,
290 $setDonationComplete,
291 $gatewaySubscriptionId,
292 $donationId,
293 ];
294 $group = $this->getGroup();
295
296 return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group);
297 }
298
299 /**
300 * @since 4.5.0
301 *
302 * @return int The webhook event ID. Zero if there was an error setting the event.
303 */
304 public function subscriptionRenewalDonation(
305 string $gatewaySubscriptionId,
306 string $gatewayTransactionId,
307 string $message = ''
308 ): int {
309 $hook = sprintf('givewp_%s_webhook_event_subscription_renewal_donation', $this->gatewayId);
310 $args = [$gatewaySubscriptionId, $gatewayTransactionId, $message];
311 $group = $this->getGroup();
312
313 return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group);
314 }
315
316 /**
317 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
318 * @since 4.5.0
319 *
320 * @return int The webhook event ID. Zero if there was an error setting the event.
321 */
322 protected function setDonationStatus(
323 DonationStatus $status,
324 string $gatewayTransactionId,
325 string $message = '',
326 bool $skipRecurringDonations = false,
327 int $donationId = 0
328 ): int {
329 $hook = sprintf('givewp_%s_webhook_event_donation_status_%s', $this->gatewayId, $status->getValue());
330 $args = [$gatewayTransactionId, $message, $skipRecurringDonations, $donationId];
331 $group = $this->getGroup();
332
333 return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group);
334 }
335
336 /**
337 * @since 4.5.0
338 *
339 * @return int The webhook event ID. Zero if there was an error setting the event.
340 */
341 protected function setSubscriptionStatus(
342 SubscriptionStatus $status,
343 string $gatewaySubscriptionId,
344 string $message = '',
345 bool $initialDonationShouldBeCompleted = false
346 ): int {
347 $hook = sprintf('givewp_%s_webhook_event_subscription_status_%s', $this->gatewayId, $status->getValue());
348 $args = [$gatewaySubscriptionId, $message];
349
350 if ($initialDonationShouldBeCompleted) {
351 $args[] = $initialDonationShouldBeCompleted;
352 }
353
354 $group = $this->getGroup();
355
356 return AsBackgroundJobs::enqueueAsyncAction($hook, $args, $group);
357 }
358
359 /**
360 * @since 4.5.0
361 */
362 protected function getGroup(): string
363 {
364 return 'givewp-payment-gateway-' . $this->gatewayId;
365 }
366 }
367