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 / Repositories / MerchantDetails.php
give / src / PaymentGateways / PayPalCommerce / Repositories Last commit date
Traits 2 years ago MerchantDetails.php 2 years ago PayPalAuth.php 2 years ago PayPalOrder.php 2 years ago Settings.php 2 years ago Webhooks.php 2 years ago
MerchantDetails.php
202 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\PayPalCheckoutSdk\Requests\GenerateClientToken;
8 use Give\PaymentGateways\PayPalCommerce\PayPalClient;
9 use Give\PaymentGateways\PayPalCommerce\Repositories\Traits\HasMode;
10
11 /**
12 * Class MerchantDetails
13 *
14 * @since 2.9.0
15 */
16 class MerchantDetails
17 {
18 use HasMode;
19
20 /**
21 * Returns whether or not the account has been connected
22 *
23 * @since 2.9.0
24 * @since 2.9.6 Check for PayPal merchant id to confirm whether or not account is connected.
25 *
26 * @return bool
27 */
28 public function accountIsConnected()
29 {
30 $merchantDetails = $this->getDetails();
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.30.0 Use PayPal client to generate client token.
127 * @since 2.9.0
128 *
129 * @return string
130 * @throws \Exception If there is an error generating the client token.
131 */
132 public function getClientToken(): string
133 {
134 $optionName = $this->getClientTokenKey();
135
136 if ($optionValue = get_transient($optionName)) {
137 return $optionValue;
138 }
139
140 try {
141 $response = give(PayPalClient::class)
142 ->getHttpClient()
143 ->execute(new GenerateClientToken());
144
145 // If the response is empty or does not have the client token, return empty string.
146 if (
147 $response->statusCode !== 200
148 || ! property_exists($response->result, 'client_token')
149 ) {
150 throw new \Exception(esc_html__('Unable to generate client token.', 'give'));
151 }
152
153 // Save the client token in the transient.
154 set_transient(
155 $optionName,
156 $response->result->client_token,
157 $response->result->expires_in - 60 // Expire token before one minute to prevent unnecessary race condition.
158 );
159 } catch (\Exception $e) {
160 throw new \Exception($e->getMessage());
161 }
162
163 return $response->result->client_token;
164 }
165
166 /**
167 * Returns the options key for the account in the give mode
168 *
169 * @since 2.9.0
170 *
171 * @return string
172 */
173 public function getAccountKey()
174 {
175 return "give_paypal_commerce_{$this->mode}_account";
176 }
177
178 /**
179 * Returns the options key for the account errors in the give mode
180 *
181 * @since 2.9.0
182 *
183 * @return string
184 */
185 private function getAccountErrorsKey()
186 {
187 return "give_paypal_commerce_{$this->mode}_account_errors";
188 }
189
190 /**
191 * Returns the options key for the client token in the give mode
192 *
193 * @since 2.9.0
194 *
195 * @return string
196 */
197 private function getClientTokenKey()
198 {
199 return "give_paypal_commerce_{$this->mode}_client_token";
200 }
201 }
202