我正在Symfony 5.4项目中实现PayPal Checkout(https://developer.paypal.com/docs/checkout/standard/integrate/)。
通过使用Symfony HttpClient将clientId和clientSecret发送到PayPal REST API(https://developer.paypal.com/api/rest/authentication/),我在检索访问令牌时遇到了一些麻烦。
PayPal定义了一个curl请求来获取令牌:
curl -v -X POST "https://api-m.sandbox.paypal.com/v1/oauth2/token" \
-u "<CLIENT_ID>:<CLIENT_SECRET>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials"
我试着用Symfony的HttpClient来实现这个功能,但是没有成功,因为我不知道如何传递选项。
我尝试使用CURLOPT_VERBOSE,CURLOPT_USERNAME,CURLOPT_HEADER来传递extra.curl的选项(找不到grant_type选项的定义)。似乎在extra.curl中不允许设置header和verbose模式,所以我尝试在'body'部分设置它。这导致了401。
下面是我的尝试:
$response = $this->httpClient->request('POST', 'https://api-m.sandbox.paypal.com/v1/oauth2/token', [
'extra' => [
'curl'=> [
CURLOPT_VERBOSE => 1,
CURLOPT_USERNAME => $clientId.':'.$clientSecret,
CURLOPT_HEADER => "Content-Type: application/x-www-form-urlencoded"
]
]
]);
或者:
$response = $this->httpClient->request('POST', 'https://api-m.sandbox.paypal.com/v1/oauth2/token', [
'body' => [
'Content-Type' => 'application/x-www-form-urlencoded',
'grant_type' => 'client_credentials'
],
'extra' => [
'curl'=> [
CURLOPT_USERNAME => $clientId.':'.$clientSecret,
]
]
]);
我找不到任何合适的HttpClient curl使用示例。所以基本上我正在尝试了解如何使用HttpClient实现PayPal Auth请求。欢迎提供任何提示。
1条答案
按热度按时间bbuxkriu1#
使用'auth_basic'...