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