PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.2
GiveWP – Donation Plugin and Fundraising Platform v2.19.2
4.16.4 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 / 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
70 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 *
18 * @param array $eventData PayPal ipn body data.
19 *
20 * @return bool
21 */
22 public function verifyEventSignature(array $eventData)
23 {
24 $eventData = array_merge( [ 'cmd' => '_notify-validate' ], $eventData );
25
26 // Validate IPN request w/ PayPal if user hasn't disabled this security measure.
27 if (! give_is_setting_enabled(give_get_option('paypal_verification', 'enabled'))) {
28 return true;
29 }
30
31 $requestArgs = [
32 'method' => 'POST',
33 'timeout' => 45,
34 'redirection' => 5,
35 'httpversion' => '1.1',
36 'blocking' => true,
37 'headers' => [
38 'host' => give_is_test_mode() ? 'www.sandbox.paypal.com' : 'www.paypal.com',
39 'connection' => 'close',
40 'content-type' => 'application/x-www-form-urlencoded',
41 'post' => '/cgi-bin/webscr HTTP/1.1',
42 ],
43 'sslverify' => false,
44 'body' => $eventData,
45 ];
46
47 $apiResponse = wp_remote_post(give_get_paypal_redirect(), $requestArgs);
48
49 if (is_wp_error($apiResponse)) {
50 Log::error(
51 'PayPal Standard IPN Error',
52 ['IPN Data' => $apiResponse]
53 );
54
55 return false;
56 }
57
58 if ('VERIFIED' !== $apiResponse['body']) {
59 Log::error(
60 'PayPal Standard IPN Error',
61 ['IPN Data' => $apiResponse]
62 );
63
64 return false;
65 }
66
67 return true;
68 }
69 }
70