Stripe CLI 触发特定客户的订阅失败事件

问题描述 投票:0回答:1

晚上,

当用户注册订阅时,会触发 checkout.session.completed 事件,我可以通过 CLI 命令测试一切是否正常工作:

stripe trigger checkout.session.completed --add checkout_session:customer="REPLACE WITH CUSTOMER ID"

我希望能够在特定客户未能付款并触发

invoice.payment_failed
事件时执行相同的测试。

我需要 event.data.object 中的电子邮件值来匹配数据库中的电子邮件地址,以便我可以检查状态值是否正确从“member”更改为“pastMember”。

我的直觉是我想要的命令类似于

stripe trigger invoice.payment_failed --add invoice:customer="REPLACE WITH CUSTOMER ID"
但不幸的是这不起作用。

编辑发票的固定装置也不起作用。更改客户 ID 没有任何效果,并且我无法将 customer_email 参数添加到 params 对象,尽管该字段作为定义的发票架构的一部分存在here

我已经尝试了我能想到的一切,但我无法理解条纹。我发现有关测试的文档绝对令人震惊。

export async function postWebhook(req: Request, res: Response) {
    const event = req.body
    const type = event.type
    switch (type) {
// -- Working
        case 'checkout.session.completed': {
            const {customer_details, customer: customerId} = event.data.object
            const {email} = customer_details
            const user = await User.findOneAndUpdate({email}, {status: 'member', stripeId: customerId})
            await instance.customers.update(customerId, {
                metadata: {
                    mongoId: user?.id,
                },
            })
            break
        }
// -- Not working
        case 'invoice.payment_failed': {
            const email = event.data.object[???]
            await User.findOneAndUpdate({email}, {status: 'pastMember'})
            break
        }
        default:
            break
    }
    res.sendStatus(200)
}
javascript express stripe-payments payment
1个回答
0
投票

这里的复杂之处在于,您必须在此处使用

--override
来设置客户 ID(
--add
只能用于添加参数,夹具中存在 not 已经,您需要
override
当固定装置已经将该参数设置为某个值,就像发票触发固定装置所做的那样)。

但是,它本身并不能开箱即用,因为固定装置将尝试附加并使用特定的 PaymentMethod,因此您最终必须尝试并覆盖许多事情。所以我真的会为此编写自己的装置。

编辑发票的固定装置也不起作用

这可行,但很难说如果不看到你所做的具体编辑。我就是这样做的。基本上编辑现有的装置,以便加载现有的客户,然后将其用于所有后续步骤。

{
      "name": "customer",
      "path": "/v1/customers/${.env:CUSTOMER_ID|REMEMBER_TO_SET_CUSTOMER_ID}",
      "method": "get"
    },
  • 其余部分保持不变。
  • 现在你可以做
    ENV CUSTOMER_ID="cus_QX87JKPRilxAOU" stripe fixtures ./custom_invoice_payment_failed.json
    并且它应该可以工作。

https://docs.stripe.com/cli/fixtures

© www.soinside.com 2019 - 2024. All rights reserved.