创建结算方案时格式错误的请求

时间:2016-06-04 17:46:34

标签: javascript node.js paypal paypal-rest-sdk

所以我使用节点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键,但没有提到它与其他键不同。

如果你可以指出我的方向很好。

编辑:更改了返回网址并取消了网址以包含完整的网址,但仍然存在相同的错误。

2 个答案:

答案 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' 

然后它工作正常!也许其他人也在这个问题上运行。