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