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