PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 3.19.4
GiveWP – Donation Plugin and Fundraising Platform v3.19.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 / Models / PayPalOrder.php
give / src / PaymentGateways / PayPalCommerce / Models Last commit date
MerchantDetail.php 2 years ago PayPalOrder.php 4 years ago PayPalPayment.php 4 years ago WebhookConfig.php 4 years ago
PayPalOrder.php
161 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Models;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6 use Give\Helpers\ArrayDataSet;
7 use stdClass;
8
9 /**
10 * Class PayPalOrder
11 * @package Give\PaymentGateways\PayPalCommerce
12 *
13 * @since 2.9.0
14 */
15 class PayPalOrder
16 {
17 /**
18 * Order Id.
19 *
20 * @since 2.9.0
21 *
22 * @var string
23 */
24 public $id;
25
26 /**
27 * Order intent.
28 *
29 * @since 2.9.0
30 *
31 * @var string
32 */
33 public $intent;
34
35 /**
36 * Order status.
37 *
38 * @since 2.9.0
39 *
40 * @var string
41 */
42 public $status;
43
44 /**
45 * Order creation time.
46 *
47 * @since 2.9.0
48 *
49 * @var string
50 */
51 public $createTime;
52
53 /**
54 * Order update time.
55 *
56 * @since 2.9.0
57 *
58 * @var string
59 */
60 public $updateTime;
61
62 /**
63 * PayPal Order action links.
64 *
65 * @since 2.9.0
66 *
67 * @var string
68 */
69 public $links;
70
71 /**
72 * Payer information.
73 *
74 * @since 2.9.0
75 *
76 * @var stdClass
77 */
78 public $payer;
79
80 /**
81 * Order purchase unit details.
82 *
83 * @since 2.9.0
84 *
85 * @var stdClass
86 */
87 private $purchaseUnit;
88
89 /**
90 * Payment details for order.
91 *
92 * @since 2.9.0
93 *
94 * @var PayPalPayment
95 */
96 public $payment;
97
98 /**
99 * Create PayPalOrder object from given array.
100 *
101 * @since 2.9.0
102 *
103 * @param $array
104 *
105 * @return PayPalOrder
106 */
107 public static function fromArray($array)
108 {
109 /* @var PayPalOrder $order */
110 $order = give(__CLASS__);
111
112 $order->validate($array);
113 $array = ArrayDataSet::camelCaseKeys($array);
114
115 foreach ($array as $itemName => $value) {
116 if ('purchaseUnits' === $itemName) {
117 $value = current($value);
118
119 $order->purchaseUnit = $value;
120 $order->payment = PayPalPayment::fromArray((array)current($order->purchaseUnit->payments->captures));
121
122 continue;
123 }
124
125 $order->{$itemName} = $value;
126 }
127
128 return $order;
129 }
130
131 /**
132 * Validate order given in array format.
133 *
134 * @since 2.9.0
135 *
136 * @param array $array
137 *
138 * @throws InvalidArgumentException
139 */
140 private function validate($array)
141 {
142 $required = ['id', 'intent', 'purchase_units', 'create_time', 'update_time', 'links'];
143
144 // PayPal does not send following parameter in Order (completed with advanced card fields payment method) details.
145 if ( ! isset($array['payment_source'])) {
146 $required = array_merge($required, ['payer', 'status']);
147 }
148
149 $array = array_filter($array); // Remove empty values.
150
151 if (array_diff($required, array_keys($array))) {
152 throw new InvalidArgumentException(
153 sprintf(
154 esc_html__('To create a PayPalOrder object, please provide valid %1$s', 'give'),
155 implode(', ', $required)
156 )
157 );
158 }
159 }
160 }
161