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 / Repositories / MerchantDetails.php
give / src / PaymentGateways / PayPalCommerce / Repositories Last commit date
Traits 4 years ago MerchantDetails.php 4 years ago PayPalAuth.php 4 years ago PayPalOrder.php 4 years ago Settings.php 4 years ago Webhooks.php 4 years ago
MerchantDetails.php
213 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Repositories;
4
5 use Give\Helpers\ArrayDataSet;
6 use Give\PaymentGateways\PayPalCommerce\Models\MerchantDetail;
7 use Give\PaymentGateways\PayPalCommerce\PayPalClient;
8 use Give\PaymentGateways\PayPalCommerce\Repositories\Traits\HasMode;
9
10 /**
11 * Class MerchantDetails
12 *
13 * @since 2.9.0
14 */
15 class MerchantDetails
16 {
17 use HasMode;
18
19 /**
20 * Returns whether or not the account has been connected
21 *
22 * @since 2.9.0
23 * @since 2.9.6 Check for PayPal merchant id to confirm whether or not account is connected.
24 *
25 * @return bool
26 */
27 public function accountIsConnected()
28 {
29 /* @var $merchantDetails MerchantDetail */
30 $merchantDetails = give(MerchantDetail::class);
31
32 return (bool)$merchantDetails->merchantIdInPayPal;
33 }
34
35 /**
36 * Get merchant details.
37 *
38 * @since 2.9.0
39 *
40 * @return MerchantDetail
41 */
42 public function getDetails()
43 {
44 return MerchantDetail::fromArray(get_option($this->getAccountKey(), []));
45 }
46
47 /**
48 * Save merchant details.
49 *
50 * @since 2.9.0
51 *
52 * @param MerchantDetail $merchantDetails
53 *
54 * @return bool
55 */
56 public function save(MerchantDetail $merchantDetails)
57 {
58 return update_option($this->getAccountKey(), $merchantDetails->toArray());
59 }
60
61 /**
62 * Delete merchant details.
63 *
64 * @since 2.9.0
65 *
66 * @return bool
67 */
68 public function delete()
69 {
70 return delete_option($this->getAccountKey());
71 }
72
73 /**
74 * Returns the account errors if there are any
75 *
76 * @since 2.9.0
77 *
78 * @return string[]|null
79 */
80 public function getAccountErrors()
81 {
82 return get_option($this->getAccountErrorsKey(), null);
83 }
84
85 /**
86 * Saves the account error message
87 *
88 * @since 2.9.0
89 *
90 * @param string[] $errorMessage
91 *
92 * @return bool
93 */
94 public function saveAccountErrors($errorMessage)
95 {
96 return update_option($this->getAccountErrorsKey(), $errorMessage);
97 }
98
99 /**
100 * Deletes the errors for the account
101 *
102 * @since 2.9.0
103 *
104 * @return bool
105 */
106 public function deleteAccountErrors()
107 {
108 return delete_option($this->getAccountErrorsKey());
109 }
110
111 /**
112 * Deletes the client token for the account
113 *
114 * @since 2.9.0
115 *
116 * @return bool
117 */
118 public function deleteClientToken()
119 {
120 return delete_transient($this->getClientTokenKey());
121 }
122
123 /**
124 * Get client token for hosted credit card fields.
125 *
126 * @since 2.9.0
127 *
128 * @return string
129 */
130 public function getClientToken()
131 {
132 $optionName = $this->getClientTokenKey();
133
134 if ($optionValue = get_transient($optionName)) {
135 return $optionValue;
136 }
137
138 /** @var MerchantDetail $merchant */
139 $merchant = give(MerchantDetail::class);
140
141 $response = wp_remote_retrieve_body(
142 wp_remote_post(
143 give(PayPalClient::class)->getApiUrl('v1/identity/generate-token'),
144 [
145 'headers' => [
146 'Accept' => 'application/json',
147 'Accept-Language' => 'en_US',
148 'Authorization' => sprintf(
149 'Bearer %1$s',
150 $merchant->accessToken
151 ),
152 'Content-Type' => 'application/json',
153 ],
154 ]
155 )
156 );
157
158 if ( ! $response) {
159 return '';
160 }
161
162 $response = ArrayDataSet::camelCaseKeys(json_decode($response, true));
163
164 if ( ! array_key_exists('clientToken', $response)) {
165 return '';
166 }
167
168 set_transient(
169 $optionName,
170 $response['clientToken'],
171 $response['expiresIn'] - 60 // Expire token before one minute to prevent unnecessary race condition.
172 );
173
174 return $response['clientToken'];
175 }
176
177 /**
178 * Returns the options key for the account in the give mode
179 *
180 * @since 2.9.0
181 *
182 * @return string
183 */
184 public function getAccountKey()
185 {
186 return "give_paypal_commerce_{$this->mode}_account";
187 }
188
189 /**
190 * Returns the options key for the account errors in the give mode
191 *
192 * @since 2.9.0
193 *
194 * @return string
195 */
196 private function getAccountErrorsKey()
197 {
198 return "give_paypal_commerce_{$this->mode}_account_errors";
199 }
200
201 /**
202 * Returns the options key for the client token in the give mode
203 *
204 * @since 2.9.0
205 *
206 * @return string
207 */
208 private function getClientTokenKey()
209 {
210 return "give_paypal_commerce_{$this->mode}_client_token";
211 }
212 }
213