下面是我的代码:
$pp = curl_init();
curl_setopt($pp, CURLOPT_URL, "https://api.paypal.com/v1/payments/billing-plans");
curl_setopt($pp, CURLOPT_HEADER, false);
curl_setopt($pp, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($pp, CURLOPT_SSLVERSION , 6);
curl_setopt($pp, CURLOPT_POST, true);
curl_setopt($pp, CURLOPT_RETURNTRANSFER, true);
curl_setopt($pp, CURLOPT_POSTFIELDS, "page_size=3&status=ALL&page=1&total_required=yes");
curl_setopt($pp, CURLOPT_HTTPHEADER, array(
"Content-Type: application/json",
"Authorization: Bearer $token"
));
$result_pp = curl_exec($pp);
echo $result_pp;
下面是我得到的错误:
{"name":"MALFORMED_REQUEST","message":"The request JSON is not well formed.","information_link":"https://developer.paypal.com/webapps/developer/docs/api/#MALFORMED_REQUEST","debug_id":"b742c35fe6e0e"}
这是文档链接:
https://developer.paypal.com/docs/api/payments.billing-plans/v1/#billing-plans_list
基本上我只是想拉出我所有PayPal订阅的列表,但看起来我没有正确地用JSON发送一些东西……
发布于 2018-08-13 02:14:07
由于您发送的是POST
请求,API认为您正在尝试create a billing plan,因此,您的post数据应为json格式-但事实并非如此。
根据文档,对于list your plans,请求类型应该是GET
。所以你需要在url中添加你的params:
curl_setopt($pp, CURLOPT_URL, "https://api.paypal.com/v1/payments/billing-plans?page_size=3&status=ALL&page=1&total_required=yes");
并删除这两行:
curl_setopt($pp, CURLOPT_POST, true);
curl_setopt($pp, CURLOPT_POSTFIELDS, "page_size=3&status=ALL&page=1&total_required=yes");
重要的是要理解,许多RESTful API使用请求类型来区分同一端点上的操作。根据接口的不同,PATCH
、POST
、PUT
、GET
和DELETE
请求可能都有不同的含义。
https://stackoverflow.com/questions/51811526
复制相似问题