PayPal API 与 PHP 和 cURL

2022-08-30 14:24:03

我正在尝试“第一次调用”,如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实例,除了最后一个之外,上面所有标头都带有。在 PHP 中,标志转换为什么 curl 选项?据我所知,那里几乎没有什么解释。我设法推断为.-d-uCURLOPT_USERPWD


答案 1

有一个很好的拖网,我从开发人员那里拼凑了其他问题的部分。我使用以下代码成功获得了访问令牌:

<?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);

?>

答案 2

@Lee正确的方式指出,但如果你使用和旧的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

只需堆叠溢出它!在这里,他们讨论问题


推荐