PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.19.8
GiveWP – Donation Plugin and Fundraising Platform v2.19.8
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 / PayPalAuth.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
PayPalAuth.php
192 lines
1 <?php
2
3 namespace Give\PaymentGateways\PayPalCommerce\Repositories;
4
5 use Give\ConnectClient\ConnectClient;
6 use Give\Helpers\ArrayDataSet;
7 use Give\PaymentGateways\PayPalCommerce\PayPalClient;
8
9 class PayPalAuth
10 {
11 /**
12 * @since 2.9.0
13 *
14 * @var PayPalClient
15 */
16 private $payPalClient;
17
18 /**
19 * @since 2.9.0
20 *
21 * @var ConnectClient
22 */
23 private $connectClient;
24
25 /**
26 * PayPalAuth constructor.
27 *
28 * @since 2.9.0
29 *
30 * @param PayPalClient $payPalClient
31 * @param ConnectClient $connectClient
32 */
33 public function __construct(PayPalClient $payPalClient, ConnectClient $connectClient)
34 {
35 $this->payPalClient = $payPalClient;
36 $this->connectClient = $connectClient;
37 }
38
39 /**
40 * Retrieves a token for the Client ID and Secret
41 *
42 * @since 2.9.0
43 *
44 * @param string $client_id
45 * @param string $client_secret
46 *
47 * @return array
48 */
49 public function getTokenFromClientCredentials($client_id, $client_secret)
50 {
51 $auth = base64_encode("$client_id:$client_secret");
52
53 $request = wp_remote_post(
54 $this->payPalClient->getApiUrl('v1/oauth2/token'),
55 [
56 'headers' => [
57 'Authorization' => "Basic $auth",
58 'Content-Type' => 'application/x-www-form-urlencoded',
59 ],
60 'body' => [
61 'grant_type' => 'client_credentials',
62 ],
63 ]
64 );
65
66 return ArrayDataSet::camelCaseKeys(json_decode(wp_remote_retrieve_body($request), true));
67 }
68
69 /**
70 * Retrieves a token from the authorization code
71 *
72 * @since 2.9.0
73 *
74 * @param string $authCode
75 * @param string $sharedId
76 * @param string $nonce
77 *
78 * @return array|null
79 */
80 public function getTokenFromAuthorizationCode($authCode, $sharedId, $nonce)
81 {
82 $response = wp_remote_retrieve_body(
83 wp_remote_post(
84 $this->payPalClient->getApiUrl('v1/oauth2/token'),
85 [
86 'headers' => [
87 'Authorization' => sprintf(
88 'Basic %1$s',
89 base64_encode($sharedId)
90 ),
91 'Content-Type' => 'application/x-www-form-urlencoded',
92 ],
93 'body' => [
94 'grant_type' => 'authorization_code',
95 'code' => $authCode,
96 'code_verifier' => $nonce, // Seller nonce.
97 ],
98 ]
99 )
100 );
101
102 return empty($response) ? null : ArrayDataSet::camelCaseKeys(json_decode($response, true));
103 }
104
105 /**
106 * Retrieves a Partner Link for on-boarding
107 *
108 * @param $returnUrl
109 * @param $country
110 *
111 * @return array|null
112 */
113 public function getSellerPartnerLink($returnUrl, $country)
114 {
115 $response = wp_remote_retrieve_body(
116 wp_remote_post(
117 sprintf(
118 $this->connectClient->getApiUrl('paypal?mode=%1$s&request=partner-link'),
119 $this->payPalClient->mode
120 ),
121 [
122 'body' => [
123 'return_url' => $returnUrl,
124 'country_code' => $country,
125 ],
126 ]
127 )
128 );
129
130 return empty($response) ? null : json_decode($response, true);
131 }
132
133 /**
134 * Get seller on-boarding details from seller.
135 *
136 * @since 2.9.0
137 *
138 * @param string $accessToken
139 *
140 * @param string $merchantId
141 *
142 * @return array
143 */
144 public function getSellerOnBoardingDetailsFromPayPal($merchantId, $accessToken)
145 {
146 $request = wp_remote_post(
147 $this->connectClient->getApiUrl(
148 sprintf(
149 'paypal?mode=%1$s&request=seller-status',
150 $this->payPalClient->mode
151 )
152 ),
153 [
154 'body' => [
155 'merchant_id' => $merchantId,
156 'token' => $accessToken,
157 ],
158 ]
159 );
160
161 return json_decode(wp_remote_retrieve_body($request), true);
162 }
163
164 /**
165 * Get seller rest API credentials
166 *
167 * @since 2.9.0
168 *
169 * @param string $accessToken
170 *
171 * @return array
172 */
173 public function getSellerRestAPICredentials($accessToken)
174 {
175 $request = wp_remote_post(
176 $this->connectClient->getApiUrl(
177 sprintf(
178 'paypal?mode=%1$s&request=seller-credentials',
179 $this->payPalClient->mode
180 )
181 ),
182 [
183 'body' => [
184 'token' => $accessToken,
185 ],
186 ]
187 );
188
189 return json_decode(wp_remote_retrieve_body($request), true);
190 }
191 }
192