PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.14.2
GiveWP – Donation Plugin and Fundraising Platform v3.14.2
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 / Gateways / PayPalStandard / Webhooks / WebhookValidator.php
give / src / PaymentGateways / Gateways / PayPalStandard / Webhooks Last commit date
Listeners 4 years ago WebhookRegister.php 4 years ago WebhookValidator.php 4 years ago
WebhookValidator.php
74 lines
1 <?php
2
3 namespace Give\PaymentGateways\Gateways\PayPalStandard\Webhooks;
4
5 use Give\Log\Log;
6
7 /**
8 * This class use to validate PayPal Standard ipn.
9 * Validate the IPN: https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNImplementation/
10 *
11 * @since 2.19.0
12 */
13 class WebhookValidator
14 {
15 /**
16 * @since 2.19.0
17 * @since 2.19.3 Update log message.
18 *
19 * @param array $eventData PayPal ipn body data.
20 *
21 * @return bool
22 */
23 public function verifyEventSignature(array $eventData)
24 {
25 $eventData = array_merge( [ 'cmd' => '_notify-validate' ], $eventData );
26
27 // Validate IPN request w/ PayPal if user hasn't disabled this security measure.
28 if (! give_is_setting_enabled(give_get_option('paypal_verification', 'enabled'))) {
29 return true;
30 }
31
32 $requestArgs = [
33 'method' => 'POST',
34 'timeout' => 45,
35 'redirection' => 5,
36 'httpversion' => '1.1',
37 'blocking' => true,
38 'headers' => [
39 'host' => give_is_test_mode() ? 'www.sandbox.paypal.com' : 'www.paypal.com',
40 'connection' => 'close',
41 'content-type' => 'application/x-www-form-urlencoded',
42 'post' => '/cgi-bin/webscr HTTP/1.1',
43 ],
44 'sslverify' => false,
45 'body' => $eventData,
46 ];
47
48 $apiResponse = wp_remote_post(give_get_paypal_redirect(), $requestArgs);
49
50 if (is_wp_error($apiResponse)) {
51 Log::error(
52 'PayPal Standard IPN Error',
53 ['IPN Data' => $apiResponse]
54 );
55
56 return false;
57 }
58
59 if ('VERIFIED' !== $apiResponse['body']) {
60 Log::warning(
61 'PayPal Standard IPN Error',
62 [
63 'Message' => 'This is not a verified IPN.',
64 'IPN Data' => $apiResponse
65 ]
66 );
67
68 return false;
69 }
70
71 return true;
72 }
73 }
74