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