我正在尝试获取 Paypal 的 RESTful Web 服务的访问令牌,但不幸的是没有取得任何进展。这是我第一次与 REST 打交道,所以请耐心等待 :)
这是我所拥有的:
- 贝宝通过贝宝开发者网站为沙盒帐户提供的 Client_id 和密码。
- 端点: https ://api.sandbox.paypal.com/v1/oauth2/token
我指的文档是:https ://developer.paypal.com/webapps/developer/docs/integration/direct/make-your-first-call/
现在是进行 API 调用的有趣部分。我正在使用 PHP 进行开发,所以我使用 CURL 进行调用。像这样的东西;
const CLIENT_ID = ****..*** ;
const SECRET = ***..***;
$base64EncodedClientID = base64_encode(self::CLIENT_ID . ":" . self::SECRET);
$headers = array("Authorization" => "Basic " . $base64EncodedClientId, "Accept" =>"*/*", "Content-type" => "multipart/form-data");
$params = array("grant_type"=>"client_credentials");
$url = "https://api.sandbox.paypal.com/v1/oauth2/token";
$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_HEADER, $headers);
curl_setopt($ch,CURLOPT_POSTFIELDS,$params);
$response = curl_exec($ch);
很香草对吧?除了我没有得到我期望从 Paypal 得到的 JSON 响应,而是错误的。这意味着我的 CURL 请求没有准备好,可能是我错误地设置了标头或参数不正确。无论如何,该 URL 绝对是可访问的,因为我能够使用相同的凭据通过命令行访问它并获得所需的 JSON 响应。
上面代码的一个明显问题是我提供了 client_id 和 secret 作为标头选项。基本意义告诉我,它们需要成为 POST 字段数据的一部分但是,如果您查看此 Github 代码的第 89 行https://github.com/paypal/rest-api-sdk-php/blob/master/lib /PayPal/Auth/OAuthTokenCredential.php(Paypals 的官方 PHP REST SDK),它清楚地表明正在标题字段中设置凭据。
我在哪里搞砸了?