我在将 stripe webhook 链接到客户时遇到问题,因为我通常使用 client_reference_id 或元数据字段,但是订阅 webhook 似乎没有这些字段。例如事件结帐.会话.完成确实包含 client_reference_id,而发票已付才不是。
生成付款的 NodeJS 代码:
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],
line_items: [
{
price_data: {
currency: 'usd',
product_data: {
name: `Premium license`,
},
unit_amount: 600,
recurring: {
interval: "month",
interval_count: 1
},
},
quantity: 1
}],
subscription_data: {
trial_period_days: 1,
},
metadata: { 'userId': userId },
client_reference_id: userId,
mode: 'subscription',
customer_email: customerEmail,
success_url: `...`,
cancel_url: `...`,
});
是的,这是一个重大的缺失,因为没有选项可以在事件之间建立联系。当您无法依赖 Webhook 事件的顺序时,这一点就变得至关重要。
我确实使用解决了这个问题metadata
尽管。传递您自己的参考 ID,例如,my_database_reference_id
到两者的元数据checkout.session.create
并且还在subscription_data
在结帐创建中。这可以与您在内部传递的值相同client_reference_id
。现在,您可以在侦听 Webhook 时使用它,在结帐会话和订阅对象之间进行连接,无论其进入的顺序如何。
注意:请注意,Stripe 帐户可以编辑元数据,因此如果您是平台并依赖于此进行任何逻辑,请小心。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)