Php Paypal API,Curl不返回任何输出
我正在尝试了解paypal API,我有以下代码,应该进行调用,获取访问令牌,然后进行API调用。第一部分工作(直到Php Paypal API,Curl不返回任何输出,php,api,curl,paypal,call,Php,Api,Curl,Paypal,Call,我正在尝试了解paypal API,我有以下代码,应该进行调用,获取访问令牌,然后进行API调用。第一部分工作(直到$accesstoken行),并正确返回访问令牌,但第二部分不返回任何内容。此处可以找到本应模拟的代码: 卷发对我来说没有完全意义,任何帮助都将不胜感激 更新: 我将标题的格式更改为: $headers2 = array( 'Content-Type: application/json', 'Authorization: Bearer ' . $accesstoke
$accesstoken
行),并正确返回访问令牌,但第二部分不返回任何内容。此处可以找到本应模拟的代码:
卷发对我来说没有完全意义,任何帮助都将不胜感激
更新:
我将标题的格式更改为:
$headers2 = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $accesstoken
);
根据其中一个答案。现在它正在显示:
[name] => MALFORMED_REQUEST
[message] => Incoming JSON request does not map to API request
[information_link] => https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST
[debug_id] => f53a882702a04
您没有正确设置标题
$headers = array(
'Accept: application/json',
'Accept-Language: en_US'
);
及
是正确的格式
还要注意$accesstoken之间的(空格)
编辑:更新您的JSON(我认为这是正确的,但将其回显并对照引用进行检查,我可能有一对多数组()
你需要一个空间
$headers2 = array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $accesstoken // Added a space after Bearer
);
查看它现在是否工作更改
curl_setopt($sale,CURLOPT_POSTFIELDS,json_encode($data))
到
curl_setopt($sale,CURLOPT_POSTFIELDS,$data)
json encode函数在您的生产代码中打破了它始终验证对等和验证主机的安全性:永远不要假设外部调用成功。您没有检查curl_exec()的返回值对于布尔值false,这表示失败。您只需获取返回值并尝试对其进行json_解码。至少您应该有类似于
if($result=$curl_exec($handle)==false){die(curl_error($handle));}
@Matt的东西,我现在正在测试,但一旦联机,SSL当然是必须的。@I尝试过:if(($result=curl\u exec($sale))==FALSE){echo“Error.”die(curl\u Error($sale));}但它没有触发。我现在正在研究curl调试命令。(无耻的插件)如果您通过Runscope运行它,您可以更轻松地看到API返回的内容。这似乎没有改变任何事情,尽管您对空间的看法是正确的,但我的意思是将其包括在内。现在它给出了一个关于格式错误的请求的错误,“传入的JSON请求未映射到API请求”,现在它给出了:“货币金额必须是非负数,可以选择包含正好由“.”分隔的2位小数,可选的千位分隔符“,”,小数点前限制为7位”添加0(0.99 vs.99)修复了该问题。
$headers2 = array(
'Content-Type: application/json',
'Authorization: Bearer ' . $accesstoken
);
$data = array(
"intent" => "sale",
"redirect_urls" => array(
"return_url" => "http://example.com/your_redirect_url/",
"cancel_url" => "http://example.com/your_cancel_url/"
),
"payer" => array(
"payment_method" => "paypal"
),
"transactions" => array(array(
"amount" => array(
"total" => ".99",
"currency" => "USD"
)
)
)
);
$headers2 = array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . $accesstoken // Added a space after Bearer
);