首页 > 解决方案 > 与 PayPal 连接:获取状态 4​​00(错误请求)

问题描述

在基于访问代码获取访问令牌期间,我面临来自 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
        (
        )
)

标签: phppaypalpaypal-sandboxpaypal-rest-sdkpaypal-connect

解决方案


将数组传递给 CURLOPT_POSTFIELDS 会将内容类型设置为multipart/form-data. 这是错误的。

您需要将查询字符串传递给 CURLOPT_POSTFIELDS。

CURLOPT_POSTFIELDS => http_build_query(array(
        'grant_type' => 'authorization_code',
        'code' => '{authorization_code}'
    )),

推荐阅读