使用PHP和cURL的Paypal API

Lee*_*Lee 24 php curl paypal

我正在尝试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"
Run Code Online (Sandbox Code Playgroud)

我在PHP中构建了一个curl实例,除了最后一个之外还有上面的所有标题.什么是一个-d标志转换为PHP中的卷曲的选择吗?据我所知,几乎没有解释.我设法推断-uCURLOPT_USERPWD.

Lee*_*Lee 73

周围有一个很好的拖网我把开发人员的部分拼凑起来与其他问题.我使用以下代码成功获得了访问令牌:

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

?>
Run Code Online (Sandbox Code Playgroud)

  • 可悲的是,似乎 Paypal 已经从 Github 中删除了他们的 REST API curl 示例。 (2认同)
  • 这是完美的救了我的命。 (2认同)

Cat*_*luc 6

@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;
}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是旧 PHP 版本,则可能无法正常工作,并且会显示以下错误:

cURL Error #:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure
Run Code Online (Sandbox Code Playgroud)

就栈溢出吧! 他们在这里讨论问题


Rev*_*EMF 5

JSON美国英语似乎是默认值,但为了完全符合要求,请添加以下行:

curl_setopt($ch, CURLOPT_HTTPHEADER, "Accept: application/json, Accept-Language: en_US");
Run Code Online (Sandbox Code Playgroud)