PaypalのRESTfulWebサービスのアクセストークンを取得しようとしていますが、残念ながら前進していません。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応答が得られないことを除いて、falseです。これは、CURL要求が適切に準備されていないことを意味します。おそらく、ヘッダーを正しく設定していないか、パラメーターが正しくありません。とにかく、同じクレデンシャルを使用してコマンドラインからURLにアクセスでき、目的のJSON応答を取得できたため、URLには確実にアクセスできます。
上記のコードで私が抱えている明白な問題の1つは、ヘッダーオプションとして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)は、資格情報がヘッダーフィールドに設定されていることを明確に示しています。
どこをめちゃくちゃにしていますか?