1

Paypal アダプティブ ペイメントのAPI ドキュメントを見つけようとしています。だから私はこのcurlコマンド(例)を翻訳しようとしています:

curl https://api.sandbox.paypal.com/v1/oauth2/token \
 -H "Accept: application/json" \
 -H "Accept-Language: en_US" \
 -u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \
 -d "grant_type=client_credentials"

php に (表示されていないのは、私の clientID とシークレットだけです):

$data =
    'client_id=' . $clientID . '&' .
    'client_secret=' . $clientSecret . '&' .
    "grant_type=client_credentials";

$url = "https://api.sandbox.paypal.com/v1/oauth2/token";
$headers = array(
    'Accept' => 'application/json',
    'Accept-Language' => 'en_US',
    "grant_type=client_credentials"
);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_USERPWD, $clientID . ':' . $clientSecret);
$x = json_decode(curl_exec($ch));

var_dump($x);

これは次のように表示されます:

object(stdClass)#1 (2) { ["error"]=> string(22) "unsupported_grant_type" ["error_description"]=> string(22) "Unsupported grant_type" }

私は何を台無しにしていますか?ポインタ、ディレクティブ、またはヒントはありますか? 私は 3 日間ドキュメントを調べてきましたが、非常に乾燥しており、適切なチュートリアルが存在しないようです。ありがとう。

4

2 に答える 2

5

理由はわかりませんが、理由を説明できる回答は引き続き受け入れますが、問題json_encode($data)"grant_type=client_credentials"修正したものに置き換えます。それがなくても動作するように見えるので、私はまだ JSON について混乱していると思います。

それは今、それが与えるはずの答えを与えています。私はまた信じられないほど混乱しているとき、私は数日後に戻ってきます;)ペイパルAPIは最悪です.

于 2013-10-06T17:54:50.683 に答える
0

私は同じ問題を抱えていましたが、トークンを取得した方法は次のとおりです

public function getToken(){

        $curl = curl_init("https://api-m.sandbox.paypal.com/v1/oauth2/token");

        curl_setopt_array($curl, array(
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => "grant_type=client_credentials",
            CURLOPT_HTTPHEADER => array(
                "Content-Type: application/json",
                "Authorization: Basic ". base64_encode("$clientApi:$clientSecret")
            ),
        ));

        $response = curl_exec($curl);
        $no_json = json_decode($response, true);
        if (!curl_errno($curl)) {

            switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
                case 200:
                    return $no_json['access_token'];
                    break;
                default:
                    return $no_json;
            }
        }

        curl_close($curl);

    }

于 2021-03-04T14:20:50.753 に答える