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