所以我使用节点paypal-rest-sdk模块,我试图创建一个结算方案。使用文档here我制作了这个JSON:
const billingPlanAttributes = {
name: 'Subscription',
description: 'Monthly subscription plan',
type: 'INFINITE',
payment_definitions: [{
name: 'Regular monthly infinite payments',
type: 'REGULAR',
frequency_interval: '1',
frequency: 'MONTH',
cycles: '0',
amount: {
currency: 'USD',
amount: '4.99',
},
}],
merchant_preferences: {
cancel_url: 'http://localhost:3000/subscribe/cancel',
return_url: 'http://localhost:3000/subscribe/return',
auto_bill_amount: 'YES',
},
};
但是当使用paypal.billingPlan.create(...
函数时,我收到错误'MALFORMED_REQUEST', 'Incoming JSON request does not map to API request'
。所以我猜我的JSON格式不正确,或者我错过了需要的东西。
文档有一个charge_models
键,但没有提到它与其他键不同。
如果你可以指出我的方向很好。
编辑:更改了返回网址并取消了网址以包含完整的网址,但仍然存在相同的错误。
答案 0 :(得分:0)
可能还有更多,但我注意到你的JSON有一个问题。删除列表中最后一项的逗号。在'金额'和'merchant_preferences'之后。 JSON很挑剔。
答案 1 :(得分:0)
在结算方案的创建功能
中public function create($apiContext = null, $restCall = null)
{
$payLoad = $this->toJSON();
$json = self::executeCall(
"/v1/payments/billing-plans/",
"POST",
$payLoad,
null,
$apiContext,
$restCall
);
$this->fromJson($json);
return $this;
}
我发现,toJSON
方法始终返回false
。为什么地狱!?!
我做了同样的事情,并将完整的示例代码复制到我的代码中。然后它按预期工作。现在我查了一下,我的代码有什么不同。 我意识到,我在计费方案的名称和描述中使用了变音符号(ä,ü,ö)。我将变音符号改为
'ä' => 'ae',
'ö' => 'oe'
'ü' => 'ue'
然后它工作正常!也许其他人也在这个问题上运行。