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 / MerchantDetail.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
MerchantDetail.php
209 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Models;
4
5 use Give\Framework\Exceptions\Primitives\InvalidArgumentException;
6
7 /**
8 * Class MerchantDetail
9 * @package Give\PaymentGateways\PayPalCommerce
10 *
11 * @since 2.9.0
12 */
13 final class MerchantDetail
14 {
15 /**
16 * PayPal merchant Id (email address)
17 *
18 * @since 2.9.0
19 *
20 * @var null|string
21 */
22 public $merchantId = null;
23
24 /**
25 * PayPal merchant id
26 *
27 * @since 2.9.0
28 *
29 * @var null|string
30 */
31 public $merchantIdInPayPal = null;
32
33 /**
34 * Client id.
35 *
36 * @since 2.9.0
37 *
38 * @var null |string
39 */
40 public $clientId = null;
41
42 /**
43 * Client Secret
44 *
45 * @since 2.9.0
46 *
47 * @var null|string
48 */
49 public $clientSecret = null;
50
51 /**
52 * Access token.
53 *
54 * @since 2.9.0
55 *
56 * @var null|string
57 */
58 public $accessToken = null;
59
60 /**
61 * Whether or not the connected account is ready to process donations.
62 *
63 * @since 2.9.0
64 *
65 * @var bool
66 */
67 public $accountIsReady = false;
68
69 /**
70 * Whether or not the account can make custom payments (i.e Advanced Fields & PPCP)
71 *
72 * @since 2.9.0
73 *
74 * @var bool
75 */
76 public $supportsCustomPayments;
77
78 /**
79 * PayPal account accountCountry.
80 *
81 * @since 2.9.0
82 *
83 * @var string|null
84 */
85 public $accountCountry;
86
87 /**
88 * Access token.
89 *
90 * @since 2.9.0
91 *
92 * @var array
93 */
94 private $tokenDetails = null;
95
96 /**
97 * Return array of merchant details.
98 *
99 * @sicne 2.9.0
100 *
101 * @return array
102 */
103 public function toArray()
104 {
105 return [
106 'merchantId' => $this->merchantId,
107 'merchantIdInPayPal' => $this->merchantIdInPayPal,
108 'clientId' => $this->clientId,
109 'clientSecret' => $this->clientSecret,
110 'token' => $this->tokenDetails,
111 'accountIsReady' => $this->accountIsReady,
112 'supportsCustomPayments' => $this->supportsCustomPayments,
113 'accountCountry' => $this->accountCountry,
114 ];
115 }
116
117 /**
118 * Make MerchantDetail object from array.
119 *
120 * @since 2.9.0
121 *
122 * @param array $merchantDetails
123 *
124 * @return MerchantDetail
125 */
126 public static function fromArray($merchantDetails)
127 {
128 $obj = new static();
129
130 if ( ! $merchantDetails) {
131 return $obj;
132 }
133
134 $obj->validate($merchantDetails);
135 $obj->setupProperties($merchantDetails);
136
137 return $obj;
138 }
139
140 /**
141 * Setup properties from array.
142 *
143 * @since 2.9.0
144 *
145 * @param $merchantDetails
146 *
147 */
148 private function setupProperties($merchantDetails)
149 {
150 $this->merchantId = $merchantDetails['merchantId'];
151 $this->merchantIdInPayPal = $merchantDetails['merchantIdInPayPal'];
152
153 $this->clientId = $merchantDetails['clientId'];
154 $this->clientSecret = $merchantDetails['clientSecret'];
155 $this->tokenDetails = $merchantDetails['token'];
156 $this->accountIsReady = $merchantDetails['accountIsReady'];
157 $this->supportsCustomPayments = $merchantDetails['supportsCustomPayments'];
158 $this->accountCountry = $merchantDetails['accountCountry'];
159 $this->accessToken = $this->tokenDetails['accessToken'];
160 }
161
162 /**
163 * Validate merchant details.
164 *
165 * @since 2.9.0
166 *
167 * @param array $merchantDetails
168 */
169 private function validate($merchantDetails)
170 {
171 $required = [
172 'merchantId',
173 'merchantIdInPayPal',
174 'clientId',
175 'clientSecret',
176 'token',
177 'accountIsReady',
178 'supportsCustomPayments',
179 'accountCountry',
180 ];
181
182 if (array_diff($required, array_keys($merchantDetails))) {
183 throw new InvalidArgumentException(
184 esc_html__(
185 'To create a MerchantDetail object, please provide the following: ' . implode(', ', $required),
186 'give'
187 )
188 );
189 }
190 }
191
192 /**
193 * Get refresh token code.
194 *
195 * @since 2.32.0 Set default value for empty tokenDetails.
196 * @since 2.25.0 Set accessToken property.
197 * @since 2.9.0
198 *
199 * @param array $tokenDetails
200 *
201 * @return mixed
202 */
203 public function setTokenDetails($tokenDetails)
204 {
205 $this->tokenDetails = array_merge($this->tokenDetails ?? [] , $tokenDetails);
206 $this->accessToken = $tokenDetails['accessToken'];
207 }
208 }
209