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 / WebhookChecker.php
give / src / PaymentGateways / PayPalCommerce / Webhooks Last commit date
Listeners 4 years ago WebhookChecker.php 4 years ago WebhookRegister.php 4 years ago
WebhookChecker.php
112 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Webhooks;
4
5 use Exception;
6 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
7 use Give\PaymentGateways\PayPalCommerce\Repositories\Webhooks;
8 use Give\Route\PayPalWebhooks as WebhooksRoute;
9 use Give_Admin_Settings;
10
11 class WebhookChecker
12 {
13 /**
14 * @since 2.9.0
15 *
16 * @var Webhooks
17 */
18 private $webhooksRepository;
19
20 /**
21 * @since 2.9.0
22 *
23 * @var WebhooksRoute
24 */
25 private $webhooksRoute;
26
27 /**
28 * @since 2.9.0
29 *
30 * @var WebhookRegister
31 */
32 private $webhookRegister;
33
34 /**
35 * @since 2.9.0
36 *
37 * @var MerchantDetail
38 */
39 private $merchantDetails;
40
41 /**
42 * WebhookChecker constructor.
43 *
44 * @since 2.9.0
45 *
46 * @param Webhooks $webhooksRepository
47 * @param MerchantDetail $merchantDetails
48 * @param WebhooksRoute $webhooksRoute
49 * @param WebhookRegister $webhookRegister
50 */
51 public function __construct(
52 Webhooks $webhooksRepository,
53 MerchantDetail $merchantDetails,
54 WebhooksRoute $webhooksRoute,
55 WebhookRegister $webhookRegister
56 ) {
57 $this->webhooksRepository = $webhooksRepository;
58 $this->merchantDetails = $merchantDetails;
59 $this->webhooksRoute = $webhooksRoute;
60 $this->webhookRegister = $webhookRegister;
61 }
62
63 /**
64 * Checks whether the webhook configuration has changed. If it has, then update the webhook with PayPal.
65 *
66 * @since 2.9.0
67 */
68 public function checkWebhookCriteria()
69 {
70 if (wp_doing_ajax() || wp_doing_cron()) {
71 return;
72 }
73
74 if ( ! $this->merchantDetails->accessToken) {
75 return;
76 }
77
78 $webhookConfig = $this->webhooksRepository->getWebhookConfig();
79
80 if ($webhookConfig === null) {
81 return;
82 }
83
84 $webhookUrl = $this->webhooksRoute->getRouteUrl();
85 $registeredEvents = $this->webhookRegister->getRegisteredEvents();
86
87 $hasMissingEvents = ! empty(
88 array_merge(
89 array_diff($registeredEvents, $webhookConfig->events),
90 array_diff($webhookConfig->events, $registeredEvents)
91 )
92 );
93
94 // Update the webhook if the return url or events have changed
95 if ($webhookUrl !== $webhookConfig->returnUrl || $hasMissingEvents) {
96 try {
97 $this->webhooksRepository->updateWebhook($this->merchantDetails->accessToken, $webhookConfig->id);
98
99 $webhookConfig->returnUrl = $webhookUrl;
100 $webhookConfig->events = $registeredEvents;
101
102 $this->webhooksRepository->saveWebhookConfig($webhookConfig);
103 } catch (Exception $exception) {
104 Give_Admin_Settings::add_error(
105 'paypal-webhook-update-error',
106 'There was a problem updating your PayPal Donations webhook. Please disconnect your account and reconnect it.'
107 );
108 }
109 }
110 }
111 }
112