web-dev-qa-db-ja.com

PHPおよびcURLを使用したPaypal API

Paypal APIドキュメントで概説されているように、「最初の呼び出し」を試みています。これは私がフォローしている場合の例です:

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でcurlインスタンスを作成しましたが、最後のヘッダーを除いて上記のすべてのヘッダーを使用しています。-dフラグは、PHPのカールオプションとして変換しますか?私の知る限り、説明はほとんどありません。なんとか-u なので CURLOPT_USERPWD

26
Lee

私は他の問題を抱えた開発者からのパーツをつなぎ合わせました。次のコードを使用して、アクセストークンを取得しました。

<?php

$ch = curl_init();
$clientId = "myId";
$secret = "mySecret";

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.Paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");

$result = curl_exec($ch);

if(empty($result))die("Error: No response.");
else
{
    $json = json_decode($result);
    print_r($json->access_token);
}

curl_close($ch);

?>
71
Lee

@Leeは正しい方向を指していますが、uを使用していて古いphpバージョンの場合は機能しません。しかし、李バージョンはエラーを表示しません。代わりにこれらを使用して、何が起こっているかを確認するためにエラー部分を追加するだけです。

$ch = curl_init();
$clientId = "";
$secret = "";

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.Paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");

$result = curl_exec($ch);
$err = curl_error($ch);

$access_token="";
if ($err) {
  echo "cURL Error #:" . $err;
}
else
{
    $json = json_decode($result);
   // print_r($json->access_token);
    $access_token = $json->access_token;
}

あなたが持っていて古いPHP=バージョンである場合、それは機能しない可能性があり、このエラーが表示されます:

cURL Error #:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

スタックオーバーフローするだけです! ここで問題について議論します

4
Catluc