我在通过条带会话创建 90 天的条带计划(当前日期 + 90 天)时遇到问题。在我的页面上选择套餐后,它将重定向到 Stripe UI,客户可以在其中输入付款详细信息。
const line_items = [
[
{
price: "price_1PM8z7P7ZWYXRvciYRvdPmPc", // subscription fee /month interval
quantity: 1,
},
{
price: "price_1PH2ayP7ZWYXRvcioelaTBhc", // media budget fee /month interval
quantity: 1,
},
],
];
let subscription_data = {
description: "Subscription description Loc L1, Loc L2",
};
subscription_data = {
...subscription_data,
billing_cycle_anchor: 1732905000, // Sat Nov 30 2024 00:00:00
proration_behavior: "none",
};
/* subscription_data = {
...subscription_data,
trial_end: 1738348200,
}; */
const session = await stripe.checkout.sessions.create({
ui_mode: "embedded",
mode: "subscription",
customer: customer,
line_items: line_items[price_set],
subscription_data: subscription_data,
metadata: {
Loc1Id: "Loc1 description",
Loc2Id: "Loc2 description",
},
return_url: `http://localhost:3000/success?success=true&session_id={CHECKOUT_SESSION_ID}`,
});
res.json({
id: session.id,
url: session.url,
client_secret: session?.client_secret,
session,
});
它给我错误“billing_cycle_anchor 不能晚于下一个自然计费日期。”
但这不是我的问题的解决方案,我需要一些解决方法。
我需要这个问题的解决方案或解决方法。
billing_cycle_anchor
或 billing_cycle_anchor_config
不会帮助您,他们不允许设置超出价格循环周期的日期(我认为这里是一个月)。
在单个会话创建调用中执行此操作的唯一方法是使用试用期:
subscription_data:{
trial_period_days:90
}
这可能不适合,因为您可能想在第一天向客户收费,在这种情况下,解决方案是为第一天添加一次性价格:
line_items:[
{
price_data: {
currency: currency,
product_data: {
name: 'product name',
},
unit_amount: amount,
},
quantity: 1,
}
如果会话中的设置外观仍然不适合您,下一个方法是进行两次调用:
-以 90 天的价格创建您的会话
- 使用 30 天价格更新订阅:
items: [
{
id: subscription.items[0].id,
price: 30_day_price,
},
],
proration_behavior: 'none'
第一个 90 天期限结束后,订阅将自动更新为 30 天价格,无需按比例分配。