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