PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.18.0
GiveWP – Donation Plugin and Fundraising Platform v4.18.0
4.18.0 4.17.0 4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 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 All 257 releases
give / src / Framework / PaymentGateways / Webhooks / EventHandlers / SubscriptionActive.php

SubscriptionActive.php in GiveWP – Donation Plugin and Fundraising Platform 4.18.0, at src/Framework/PaymentGateways/Webhooks/EventHandlers/SubscriptionActive.php

53 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Give\Framework\PaymentGateways\Webhooks\EventHandlers;
4
5 use Exception;
6 use Give\Framework\PaymentGateways\Log\PaymentGatewayLog;
7 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions\UpdateSubscriptionStatus;
8 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
9
10 /**
11 * @since 3.6.0
12 */
13 class SubscriptionActive
14 {
15 /**
16 * @since 4.18.0 Bail when the subscription has no initial donation instead of fataling on it.
17 * @since 3.6.0
18 *
19 * @throws Exception
20 */
21 public function __invoke(
22 string $gatewaySubscriptionId,
23 string $message = '',
24 bool $initialDonationShouldBeCompleted = false
25 )
26 {
27 $subscription = give()->subscriptions->getByGatewaySubscriptionId($gatewaySubscriptionId);
28
29 if ( ! $subscription || $subscription->status->isActive()) {
30 return;
31 }
32
33 if ($initialDonationShouldBeCompleted) {
34 $initialDonation = $subscription->initialDonation();
35
36 if ( ! $initialDonation || ! $initialDonation->status->isComplete()) {
37 PaymentGatewayLog::error(
38 sprintf('The subscription was not activated for the gateway subscription ID %s because its initial donation is missing or has not completed yet.',
39 $gatewaySubscriptionId),
40 [
41 'Gateway Subscription ID' => $gatewaySubscriptionId,
42 'Message' => $message,
43 ]
44 );
45
46 return;
47 }
48 }
49
50 (new UpdateSubscriptionStatus())($subscription, SubscriptionStatus::ACTIVE(), $message);
51 }
52 }
53