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 / ServiceProvider.php
give / src / Framework / PaymentGateways Last commit date
Actions 1 week ago CommandHandlers 2 years ago Commands 2 years ago Contracts 11 months ago Controllers 2 years ago DataTransferObjects 3 years ago Exceptions 4 years ago Log 4 years ago Routes 3 years ago Traits 2 years ago Webhooks 1 week ago DonationSummary.php 3 years ago PaymentGateway.php 9 months ago PaymentGatewayRegister.php 2 years ago ServiceProvider.php 1 week ago SubscriptionModule.php 1 year ago
ServiceProvider.php
112 lines
1 <?php
2
3 namespace Give\Framework\PaymentGateways;
4
5 use Give\Donations\ValueObjects\DonationStatus;
6 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions\GetEventHandlerClassByDonationStatus;
7 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\Actions\GetEventHandlerClassBySubscriptionStatus;
8 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\SubscriptionFirstDonationCompleted;
9 use Give\Framework\PaymentGateways\Webhooks\EventHandlers\SubscriptionRenewalDonationCreated;
10 use Give\Helpers\Hooks;
11 use Give\ServiceProviders\ServiceProvider as ServiceProviderInterface;
12 use Give\Subscriptions\ValueObjects\SubscriptionStatus;
13
14 /**
15 * @since 4.5.0
16 */
17 class ServiceProvider implements ServiceProviderInterface
18 {
19 /**
20 * @since 4.5.0
21 */
22 public function register()
23 {
24 // TODO: Implement register() method.
25 }
26
27 /**
28 * @since 4.5.0
29 */
30 public function boot()
31 {
32 $this->registerWebhookEventHandlers();
33 }
34
35 /**
36 * @since 4.5.0
37 */
38 private function registerWebhookEventHandlers()
39 {
40 add_action('init', function () {
41 $registeredPaymentGatewayIds = give()->gateways->getPaymentGateways();
42 foreach ($registeredPaymentGatewayIds as $gatewayId => $class) {
43 $this->addDonationStatusEventHandlers($gatewayId);
44 $this->addSubscriptionStatusEventHandlers($gatewayId);
45 $this->addSubscriptionFirstDonationEventHandler($gatewayId);
46 $this->addSubscriptionRenewalDonationEventHandler($gatewayId);
47 }
48 }, 999);
49 }
50
51 /**
52 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
53 * @since 4.5.0
54 */
55 private function addDonationStatusEventHandlers(string $gatewayId)
56 {
57 foreach (DonationStatus::values() as $status) {
58 if ($eventHandlerClass = (new GetEventHandlerClassByDonationStatus())($status)) {
59 Hooks::addAction(
60 sprintf('givewp_%s_webhook_event_donation_status_%s', $gatewayId, $status->getValue()),
61 $eventHandlerClass,
62 '__invoke',
63 10,
64 4
65 );
66 }
67 }
68 }
69
70 /**
71 * @since 4.5.0
72 */
73 private function addSubscriptionStatusEventHandlers(string $gatewayId)
74 {
75 foreach (SubscriptionStatus::values() as $status) {
76 if ($eventHandlerClass = (new GetEventHandlerClassBySubscriptionStatus())($status)) {
77 $parameterCount = $status->isActive() ? 3 : 2;
78 Hooks::addAction(
79 sprintf('givewp_%s_webhook_event_subscription_status_%s', $gatewayId, $status->getValue()),
80 $eventHandlerClass, '__invoke', 10, $parameterCount
81 );
82 }
83 }
84 }
85
86 /**
87 * @since 4.16.0 Add $donationId to support gateways that only receive the transaction ID via webhook (e.g. PayFast).
88 * @since 4.5.0
89 */
90 private function addSubscriptionFirstDonationEventHandler(string $gatewayId)
91 {
92 Hooks::addAction(
93 sprintf('givewp_%s_webhook_event_subscription_first_donation', $gatewayId),
94 SubscriptionFirstDonationCompleted::class,
95 '__invoke',
96 10,
97 6
98 );
99 }
100
101 /**
102 * @since 4.5.0
103 */
104 private function addSubscriptionRenewalDonationEventHandler(string $gatewayId)
105 {
106 Hooks::addAction(
107 sprintf('givewp_%s_webhook_event_subscription_renewal_donation', $gatewayId),
108 SubscriptionRenewalDonationCreated::class, '__invoke', 10, 2
109 );
110 }
111 }
112