Stripe API错误-“收到的未知参数:来源”

时间:2019-05-01 23:04:30

标签: api stripe-payments in-app-subscription

使用wix代码创建订阅站点。我不断收到400个未知参数:源错误。 (/ subscripton)

如果您能找到我要去哪里的地方,将不胜感激。谢谢!

import { fetch } from 'wix-fetch';

export async function subscription(token, item) {

    const cart = item;

    const apiKey = "PRIVATEAPI";

    const response = await
    fetch("https://api.stripe.com/v1/subscriptions", {

        method: 'post',

        headers: {

            "Content-Type": "application/x-www-form-urlencoded",

            "Authorization": "Bearer " + apiKey

        },

        body: encodeBody(token, cart)
    });
    if (response.status >= 200 && response.status < 300) {

        const ret = await response.json();

        return { "chargeId": ret.id };

    }

    let res = await response.json(); 

    let err = res.error.message;

    let code = res.error.code;

    let type = res.error.type;

    return { "error": err, "code": code, "type": type };

}

 function encodeBody(token, cart) {

    let encoded = "";

    for (let [k, v] of Object.entries(cart)) {

        encoded = encoded.concat(k, "=", encodeURI(v), "&");
    }
     encoded = encoded.concat("source=", encodeURI(token));
     return encoded;
}

2 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow!

您似乎正在创建订阅。根据API文档:https://stripe.com/docs/api/subscriptions/create?lang=ruby

在Stripe上创建订阅时,

customer是必需的参数。您需要首先创建一个客户,将标记化的卡作为来源附加到客户。然后,您可以通过传递customer: customer.id

来创建订阅

此外,此请求是否在客户端发出?使用您的秘密API密钥发出的请求应从您的服务器端代码发出,最好使用Stripe的API库:https://stripe.com/docs/libraries

由于您正在使用订阅,因此您还应该研究新版本的Stripe Checkout(https://stripe.com/docs/payments/checkout),它允许使用仅包含几行代码的客户端代码来创建订阅!

答案 1 :(得分:-1)

您可能会在调用encodeBody(token, cart)时传递您不希望使用的其他键。

根据https://stripe.com/docs/api/subscriptions/create上的文档,您应验证在tokencart中传递的密钥均有效。