尝试为 Stripe 上的产品创建订阅。该产品已经有明确的价格。我尝试直接使用 Price 对象并创建一个新的价格对象,行为保持不变。
具有以下代码和 JSON 正文对象的获取请求:
async createSubscription(data) {
try {
const params = new URLSearchParams();
params.append('customer', data.customer);
params.append('cancel_at_period_end', data.cancel_at_period_end.toString());
params.append('currency', data.currency);
params.append('description', data.description);
params.append('items[0][price_data][currency]', data.items[0].price_data.currency);
params.append('items[0][price_data][product]', data.items[0].price_data.product);
params.append('items[0][price_data][recurring]', data.items[0].price_data.recurring);
params.append('items[0][price_data][unit_amount]', data.items[0].price_data.unit_amount);
const response = await fetch(url, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.STRIPE_SECRET_KEY}`,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: params});
return {data: response};
} catch (err) {
return {error: err.message };
}
}
JSON:
{
"customer": "cus_QjVBjHwGQiiHie",
"cancel_at_period_end": false,
"currency": "eur",
"description": "my test subscription",
"items": [
{
"price_data": {
"currency": "eur",
"product": "prod_Ql0OtnWNPRhvlh",
"recurring": "month",
"unit_amount": 1000
}
}
]
}
API响应:
{
"data": {
"size": 0,
"timeout": 0
}
}
问题是
{"size","timeout}
不是 Stripe API 返回的内容。
您还需要调用 .json()
来查看响应(这可能是一个错误,告诉您发生了什么)
https://stackoverflow.com/a/49842045/9769731
还可以考虑查看您的 Stripe API 日志以获取提示和帮助:https://docs.stripe.com/development/dashboard/request-logs
我还建议不要以这种方式编写代码,您应该使用官方的 Stripe Node 库。 https://github.com/stripe/stripe-node