我使用PHP界面[尝试]创建结算协议。生成的curl -v -X POST \
https://api.sandbox.paypal.com/v1/payments/billing-agreements/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer A21...iA" \
-d '{
"name":"sms_from_me_test",
"description":"SMS From Me Monthly Subscription Agreement",
"start_date":"2017-07-17T08:33:27Z",
"plan":"P-26R66685UX449822NJ6L2OWY",
"payer":{"payment_method":"paypal"}}'
命令如下所示:
{
"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":"9c2701965bf29"
}
响应总是这个JSON:
-d "[{
...
}]"
这对我来说完全不透明。好的,JSON不被接受,它没有说明原因。
以防万一,与我见过的一些例子相比,我在发送的JSON周围放了方括号。
$payer = new \PayPal\Api\Payer();
$payer->setPaymentMethod('paypal');
$agreement = new \PayPal\Api\Agreement();
date_default_timezone_set("UTC");
$now = time() + 60 * 5;
$created_on = strftime("%Y-%m-%dT%H:%M:%SZ", $now);
$agreement
->setName($plan_name)
->setDescription("SMS From Me Monthly Subscription Agreement")
->setStartDate($created_on)
->setPlan($plan->getId())
->setPayer($payer);
try
{
$agreement->create($api_context);
}
catch(\PayPal\Exception\PayPalConnectionException $ex)
{
echo "--------------------- exception\n";
echo "Code: ", $ex->getCode(), "\n";
echo "Data: ", $ex->getData(), "\n";
$this->error = "Sorry. Could not create the PayPal Plan.";
return false;
}
因为看起来你应该发送一个对象数组而不是一个对象。那也失败了。
我能够创建看似有效的计划,我可以激活,所以我知道OAuth就像魅力一样。所以这不是问题所在。
我还能做什么?!
使用最新版本的PayPal PHP工具包的PHP代码:
Data: ...
set path=%PATH%;YOUR_GIT_PATH
与我上面显示的JSON相同......
我的代码基于PayPal' github:
中的这个例子答案 0 :(得分:0)
我从PayPal得到了答案。
计划规范必须是一个对象:
"plan":{"id":"P-26R66685UX449822NJ6L2OWY"}
事实上,我首先将$plan
对象传递给Agreement::setPlan()
对象。但是当你有一个完整的$plan
对象时,这意味着你打破了Agreement
JSON。
你不能做什么:
$plan = \PayPal\Api\Plan::get($plan_id, $this->api_context);
$agreement->setPlan($plan);
因为get()
会返回完整的计划。
你需要做的事情是:
$reduced_plan = new \PayPal\Api\Plan();
$reduced_plan->setId($plan_id);
现在您有一个可在Agreement
:
$agreement->setPlan($reduced_plan);
文档对于那个文档肯定不清楚。
通过Paypal在github上回答:https://github.com/paypal/PayPal-PHP-SDK/issues/891