PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.12.3
GiveWP – Donation Plugin and Fundraising Platform v3.12.3
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 / EventHandlers / Actions / UpdateDonationStatus.php
give / src / Framework / PaymentGateways / Webhooks / EventHandlers / Actions Last commit date
UpdateDonationStatus.php 2 years ago UpdateSubscriptionStatus.php 2 years ago
UpdateDonationStatus.php
122 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions;
4
5 use Exception;
6 use Give\Donations\Models\Donation;
7 use Give\Donations\Models\DonationNote;
8 use Give\Donations\ValueObjects\DonationStatus;
9 use Give\Framework\PaymentGateways\Log\PaymentGatewayLog;
10 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
11
12 /**
13 * @since 3.6.0
14 */
15 class UpdateDonationStatus
16 {
17 /**
18 * @since 3.6.0
19 *
20 * @throws Exception
21 */
22 public function __invoke(
23 Donation $donation,
24 DonationStatus $status,
25 string $message = ''
26 ) {
27 $donation->status = $status;
28 $donation->save();
29
30 if (empty($message)) {
31 $message = $this->getMessageFromStatus($status);
32 }
33
34 DonationNote::create([
35 'donationId' => $donation->id,
36 'content' => $message . ' ' . sprintf(__('%s transaction ID: %s', 'give'),
37 $donation->gateway()->getName(),
38 $donation->gatewayTransactionId
39 ),
40 ]);
41
42 PaymentGatewayLog::info(
43 $message . ' ' . sprintf('Donation ID: %s.', $donation->id),
44 [
45 'Payment Gateway' => $donation->gatewayId,
46 'Gateway Transaction Id' => $donation->gatewayTransactionId,
47 'Donation' => $donation->id,
48 'Subscription' => $donation->subscriptionId,
49 'Gateway Subscription Id' => ! $donation->type->isSingle() ? $donation->subscription->gatewaySubscriptionId : null,
50 ]
51 );
52
53 if ($this->isInvalidSubscriptionFirstPayment($donation) &&
54 ! $donation->subscription->status->isCancelled()) {
55 $donation->subscription->status = SubscriptionStatus::CANCELLED();
56 $donation->subscription->save();
57
58 PaymentGatewayLog::info(
59 sprintf("The subscription was canceled because the first payment wasn't finished. Subscription ID: %s.",
60 $donation->subscription->id),
61 [
62 'Payment Gateway' => $donation->gatewayId,
63 'First Payment Status' => $donation->status->getValue(),
64 'First Payment ID' => $donation->id,
65 'First Payment Gateway Transaction ID' => $donation->gatewayTransactionId,
66 'Gateway Subscription Id' => $donation->subscription->gatewaySubscriptionId,
67 'Subscription ID' => $donation->subscription->id,
68 ]
69 );
70 }
71 }
72
73 /**
74 * @since 3.6.0
75 */
76 private function isInvalidSubscriptionFirstPayment(Donation $donation): bool
77 {
78 return $donation->type->isSubscription() &&
79 ($donation->status->isAbandoned() || $donation->status->isCancelled());
80 }
81
82 /**
83 * @since 3.6.0
84 */
85 protected function getMessageFromStatus(DonationStatus $status): string
86 {
87 $message = '';
88
89 switch (true):
90 case ($status->isAbandoned()):
91 $message = __('Donation Abandoned.', 'give');
92 break;
93 case ($status->isCancelled()):
94 $message = __('Donation Cancelled.', 'give');
95 break;
96 case ($status->isComplete()):
97 $message = __('Donation Completed.', 'give');
98 break;
99 case ($status->isFailed()):
100 $message = __('Donation Failed.', 'give');
101 break;
102 case ($status->isPending()):
103 $message = __('Donation Pending.', 'give');
104 break;
105 case ($status->isPreapproval()):
106 $message = __('Donation Pre Approval.', 'give');
107 break;
108 case ($status->isProcessing()):
109 $message = __('Donation Processing.', 'give');
110 break;
111 case ($status->isRefunded()):
112 $message = __('Donation Refunded.', 'give');
113 break;
114 case ($status->isRevoked()):
115 $message = __('Donation Revoked.', 'give');
116 break;
117 endswitch;
118
119 return $message;
120 }
121 }
122