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