PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.4
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 / PaymentGateways / PayPalCommerce / Webhooks / WebhookRegister.php
give / src / PaymentGateways / PayPalCommerce / Webhooks Last commit date
Listeners 2 years ago WebhookChecker.php 2 years ago WebhookRegister.php 2 years ago
WebhookRegister.php
111 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Webhooks;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use Give\PaymentGateways\PayPalCommerce\Webhooks\Listeners\EventListener;
7 use Give\PaymentGateways\PayPalCommerce\Webhooks\Listeners\PayPalCommerce\CustomerMerchantIntegrationProductSubscriptionUpdated;
8 use Give\PaymentGateways\PayPalCommerce\Webhooks\Listeners\PayPalCommerce\PaymentCaptureCompleted;
9 use Give\PaymentGateways\PayPalCommerce\Webhooks\Listeners\PayPalCommerce\PaymentCaptureDenied;
10 use Give\PaymentGateways\PayPalCommerce\Webhooks\Listeners\PayPalCommerce\PaymentCaptureRefunded;
11
12 class WebhookRegister
13 {
14 /**
15 * Array of the PayPal webhook event handlers. Add-ons can use the registerEventHandler method
16 * to add additional events/handlers.
17 *
18 * Structure: PayPalEventName => EventHandlerClass
19 *
20 * @since 3.0.0 Register new events and handlers.
21 * @since 2.9.0
22 *
23 * @var string[]
24 */
25 private $eventHandlers = [
26 'PAYMENT.CAPTURE.REFUNDED' => PaymentCaptureRefunded::class,
27 'PAYMENT.CAPTURE.COMPLETED' => PaymentCaptureCompleted::class,
28 'PAYMENT.CAPTURE.DENIED' => PaymentCaptureDenied::class,
29 'CUSTOMER.MERCHANT-INTEGRATION.PRODUCT-SUBSCRIPTION-UPDATED' => CustomerMerchantIntegrationProductSubscriptionUpdated::class,
30 ];
31
32 /**
33 * Use this to register additional events and handlers
34 *
35 * @since 2.9.0
36 *
37 * @param string $payPalEvent PayPal event to listen for, i.e. CHECKOUT.ORDER.APPROVED
38 * @param string $eventHandler The FQCN of the event handler
39 *
40 * @return $this
41 */
42 public function registerEventHandler($payPalEvent, $eventHandler)
43 {
44 if (isset($this->eventHandlers[$payPalEvent])) {
45 throw new InvalidArgumentException('Cannot register an already registered event');
46 }
47
48 if ( ! is_subclass_of($eventHandler, EventListener::class)) {
49 throw new InvalidArgumentException('Listener must be a subclass of ' . EventListener::class);
50 }
51
52 $this->eventHandlers[$payPalEvent] = $eventHandler;
53
54 return $this;
55 }
56
57 /**
58 * Registers multiple event handlers using an array where the key is the
59 *
60 * @since 2.9.0
61 *
62 * @param array $handlers = [ 'PAYPAL.EVENT' => EventHandler::class ]
63 */
64 public function registerEventHandlers(array $handlers)
65 {
66 foreach ($handlers as $event => $handler) {
67 $this->registerEventHandler($event, $handler);
68 }
69 }
70
71 /**
72 * Returns Event Listener instance for given event
73 *
74 * @since 2.9.0
75 *
76 * @param string $event
77 *
78 * @return EventListener
79 */
80 public function getEventHandler($event)
81 {
82 return give($this->eventHandlers[$event]);
83 }
84
85 /**
86 * Checks whether the given event is registered
87 *
88 * @since 2.9.0
89 *
90 * @param string $event
91 *
92 * @return bool
93 */
94 public function hasEventRegistered($event)
95 {
96 return isset($this->eventHandlers[$event]);
97 }
98
99 /**
100 * Returns an array of the registered events
101 *
102 * @since 2.9.0
103 *
104 * @return string[]
105 */
106 public function getRegisteredEvents()
107 {
108 return array_keys($this->eventHandlers);
109 }
110 }
111