PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.14.2
GiveWP – Donation Plugin and Fundraising Platform v4.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 / Framework / PaymentGateways / Webhooks / EventHandlers / SubscriptionFirstDonationCompleted.php
give / src / Framework / PaymentGateways / Webhooks / EventHandlers Last commit date
Actions 11 months ago DonationAbandoned.php 2 years ago DonationCancelled.php 2 years ago DonationCompleted.php 2 years ago DonationFailed.php 2 years ago DonationPending.php 2 years ago DonationPreapproval.php 2 years ago DonationProcessing.php 2 years ago DonationRefunded.php 2 years ago DonationRevoked.php 2 years ago SubscriptionActive.php 2 years ago SubscriptionCancelled.php 2 years ago SubscriptionCompleted.php 2 years ago SubscriptionExpired.php 2 years ago SubscriptionFailing.php 2 years ago SubscriptionFirstDonationCompleted.php 11 months ago SubscriptionPaused.php 11 months ago SubscriptionPending.php 11 months ago SubscriptionRenewalDonationCreated.php 1 year ago SubscriptionSuspended.php 2 years ago
SubscriptionFirstDonationCompleted.php
81 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Webhooks\EventHandlers;
4
5 use Exception;
6 use Give\Donations\Models\DonationNote;
7 use Give\Donations\ValueObjects\DonationStatus;
8 use Give\Framework\PaymentGateways\Log\PaymentGatewayLog;
9 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions\UpdateDonationStatus;
10 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions\UpdateSubscriptionStatus;
11 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
12
13 /**
14 * @since 3.6.0
15 */
16 class SubscriptionFirstDonationCompleted
17 {
18 /**
19 * @since 4.5.0 Add $setDonationComplete and $gatewaySubscriptionId parameters
20 * @since 3.6.0
21 */
22 public function __invoke(
23 string $gatewayTransactionId,
24 string $message = '',
25 bool $setSubscriptionActive = true,
26 bool $setDonationComplete = true,
27 string $gatewaySubscriptionId = ''
28 )
29 {
30 $donation = give()->donations->getByGatewayTransactionId($gatewayTransactionId);
31
32 if (! $donation && ! empty($gatewaySubscriptionId) && $subscription = give()->subscriptions->getByGatewaySubscriptionId($gatewaySubscriptionId)) {
33 $donation = $subscription->initialDonation();
34 $donation->gatewayTransactionId = $gatewayTransactionId;
35 $donation->save();
36 }
37
38 if ( ! $donation || ! $donation->type->isSubscription() || $donation->id !== $donation->subscription->initialDonation()->id) {
39 return;
40 }
41
42 try {
43 if ($setDonationComplete && ! $donation->status->isComplete()) {
44 if (empty($message)) {
45 $message = __('Subscription First Donation Completed.', 'give');
46 }
47
48 (new UpdateDonationStatus())($donation, DonationStatus::COMPLETE(), $message);
49 } else {
50 if (empty($message)) {
51 $message = __('Subscription First Donation Updated.', 'give');
52 }
53
54 DonationNote::create([
55 'donationId' => $donation->id,
56 'content' => $message . ' ' . sprintf(__('%s transaction ID: %s', 'give'),
57 $donation->gateway()->getName(),
58 $donation->gatewayTransactionId
59 ),
60 ]);
61 }
62
63 if ($setSubscriptionActive && ! $donation->subscription->status->isActive()) {
64 (new UpdateSubscriptionStatus())($donation->subscription, SubscriptionStatus::ACTIVE(),
65 __('Subscription Active After The First Donation Got Completed.', 'give'));
66 }
67 } catch (Exception $e) {
68 PaymentGatewayLog::error(
69 sprintf('Subscription First Donation Failed! Error: %s',
70 $e->getCode() . ' - ' . $e->getMessage()),
71 [
72 'Donation Id' => $donation->id,
73 'Gateway Transaction Id' => $gatewayTransactionId,
74 'Gateway Subscription Id' => $donation->subscriptionId,
75 'message' => $message,
76 ]
77 );
78 }
79 }
80 }
81