PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.9.1
GiveWP – Donation Plugin and Fundraising Platform v2.9.1
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 / DataTransferObjects / PayPalWebhookHeaders.php
give / src / PaymentGateways / PayPalCommerce / DataTransferObjects Last commit date
PayPalWebhookHeaders.php 5 years ago
PayPalWebhookHeaders.php
92 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\DataTransferObjects;
4
5 use HttpHeaderException;
6
7 class PayPalWebhookHeaders {
8 /**
9 * @since 2.9.0
10 * @var string
11 */
12 public $transmissionId;
13
14 /**
15 * @since 2.9.0
16 * @var string
17 */
18 public $transmissionTime;
19
20 /**
21 * @since 2.9.0
22 * @var string
23 */
24 public $transmissionSig;
25
26 /**
27 * @since 2.9.0
28 * @var string
29 */
30 public $certUrl;
31
32 /**
33 * @since 2.9.0
34 * @var string
35 */
36 public $authAlgo;
37
38 /**
39 * This grabs the headers from the webhook request to be used in the signature verification
40 *
41 * A strange thing here is that the headers are inconsistent between live and sandbox mode, so this also checks for
42 * both forms of the headers (studly case and all caps).
43 *
44 * @since 2.9.0
45 *
46 * @param array $headers
47 *
48 * @return self
49 * @throws HttpHeaderException
50 */
51 public static function fromHeaders( array $headers ) {
52 $headerKeys = [
53 'transmissionId' => 'Paypal-Transmission-Id',
54 'transmissionTime' => 'Paypal-Transmission-Time',
55 'transmissionSig' => 'Paypal-Transmission-Sig',
56 'certUrl' => 'Paypal-Cert-Url',
57 'authAlgo' => 'Paypal-Auth-Algo',
58 ];
59
60 $payPalHeaders = new self();
61 $missingKeys = [];
62 foreach ( $headerKeys as $property => $key ) {
63 if ( ! isset( $headers[ $key ] ) ) {
64 $key = strtoupper( $key );
65 }
66
67 if ( isset( $headers[ $key ] ) ) {
68 $payPalHeaders->$property = $headers[ $key ];
69 } else {
70 $missingKeys[] = $key;
71 }
72 }
73
74 if ( ! empty( $missingKeys ) ) {
75 give_record_gateway_error(
76 'Missing PayPal webhook header',
77 print_r(
78 [
79 'missingKeys' => $missingKeys,
80 'headers' => $headers,
81 ],
82 true
83 )
84 );
85
86 throw new HttpHeaderException( "Missing PayPal header: $key" );
87 }
88
89 return $payPalHeaders;
90 }
91 }
92