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