Stripe 订阅 Webhook 缺少元数据和 client_reference_id

2024-05-01

我在将 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(使用前将#替换为@)

Stripe 订阅 Webhook 缺少元数据和 client_reference_id 的相关文章

随机推荐