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