如何生成带动态定价的Stripe自定义订阅链接?
动态定价Stripe订阅支付链接的最优方案
不需要每次创建全新的订阅产品/价格对象,Stripe提供了两种更高效的方案来实现动态定价的订阅支付链接:
方案1:使用价格查找键(Lookup Keys)
适合有预设几种定价档位的场景(比如针对不同用户等级设置不同订阅价格)。你可以给同一个产品下的不同价格对象设置唯一的lookup_key,生成支付链接时直接指定这个键,而不用硬编码价格ID。
步骤:
- 先创建基础订阅产品,再为不同定价创建价格对象时指定
lookup_key:
// 创建价格对象示例(一次性操作,可在控制台或API完成) await stripe.prices.create({ product: 'prod_XXXX', // 你的基础产品ID unit_amount: 999, // 金额(单位:分) currency: 'usd', recurring: {interval: 'month'}, lookup_key: 'basic_subscription' // 自定义查找键 }); await stripe.prices.create({ product: 'prod_XXXX', unit_amount: 1999, currency: 'usd', recurring: {interval: 'month'}, lookup_key: 'premium_subscription' });
- 生成支付链接时用
lookup_key代替price参数:
const paymentLink = await stripe.paymentLinks.create({ line_items: [{ lookup_key: 'premium_subscription', // 根据用户身份动态传入对应的键 quantity: 1 }], metadata: { author_id: message.author.id, }, subscription_data: { // 可选:设置订阅额外参数,比如试用天数 trial_period_days: 7 } });
方案2:使用报价(Quotes)生成自定义订阅链接
适合完全自定义的动态定价场景(比如每个用户的价格都不同,或需要调整订阅周期、折扣等)。通过Quote可以为单个用户创建专属的订阅方案,再生成对应的支付链接。
代码示例:
// 1. 创建报价 const quote = await stripe.quotes.create({ customer: 'cus_XXXX', // 可选:关联已有客户,无则留空 line_items: [{ price: 'price_XXXX', // 基础价格ID,可在此基础上调整金额 quantity: 1, // 自定义金额:覆盖基础价格,设置当前用户专属价格(单位:分) unit_amount: 2499 }], subscription_data: { payment_behavior: 'default_incomplete', payment_settings: {save_default_payment_method: 'on_subscription'} }, expires_at: Math.floor(Date.now() / 1000) + 86400 // 报价有效期1天 }); // 2. 获取报价对应的支付链接 const paymentLink = quote.hosted_invoice_url; // 直接使用托管账单链接作为支付入口
总结
- 如果是固定几个定价档位动态切换,优先用Lookup Keys,实现简单且维护成本低;
- 如果需要完全个性化的定价(比如专属折扣、定制金额),用Quotes更灵活,还能支持订阅的个性化配置。
内容的提问来源于stack exchange,提问作者Bucky
相关产品推荐
相关产品推荐

