在获取基于访问码的访问令牌期间,我面临来自PayPal的400错误请求响应。我通过下面的参考链接https://developer.paypal.com/docs/connect-with-paypal/integrate/#1-create-the-app
我完美地遵循了5个步骤,但是第一个步骤遇到了问题。 6.参见下面的代码:
请求零件:
$curl = curl_init();
$base_token = "{client_id:secret}";
$data = array(
CURLOPT_URL => "https://api.sandbox.paypal.com/v1/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array(
'grant_type' => 'authorization_code',
'code' => '{authorization_code}'
),
CURLOPT_HTTPHEADER => array(
"Authorization: Basic ".$base_token,
),
);
curl_setopt_array($curl,$data );
$response = curl_exec($curl);
curl_close($curl);
响应部分:
stdClass Object (
[name] => Bad Request
[debug_id] => 5837077aa8787
[message] => java.lang.IllegalArgumentException
[details] => Array
(
)
)
答案 0 :(得分:0)
将数组传递给CURLOPT_POSTFIELDS会将内容类型设置为multipart/form-data
。这是错误的。
您需要将查询字符串传递给CURLOPT_POSTFIELDS。
CURLOPT_POSTFIELDS => http_build_query(array(
'grant_type' => 'authorization_code',
'code' => '{authorization_code}'
)),
答案 1 :(得分:0)
解决问题,请参见下面的代码:
$base_token = '{client_id:secret}';
$curl = curl_init();
$data = array(
CURLOPT_URL => "https://api.sandbox.paypal.com/v1/oauth2/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_POSTFIELDS => http_build_query(array(
'grant_type'=>'authorization_code',
'code'=> $request->code,
)),
CURLOPT_HTTPHEADER => array(
"Content-Type: application/x-www-form-urlencoded",
),
CURLOPT_USERPWD => $base_token
);
curl_setopt_array($curl, $data);
$response = curl_exec($curl);
curl_close($curl);