【问题标题】:How to catch all stripe webhook events that are not explicitly handled?如何捕获所有未明确处理的条带 webhook 事件?
【发布时间】:2022-01-04 01:38:07
【问题描述】:

Stripe events 有很多不同的类型。此外,他们指出他们可以随时添加更多内容。我正在使用 dj-stripe。使用我的事件处理程序,我对应该监控哪些类型的 webhook 以实现非常简单的 Stripe 订阅设置有了一个很好的了解。在 dj-stripe 框架中是否有一种简单的方法来捕获我在生产中遇到的未处理的 webhook?在这些问题上,我想通过电子邮件向自己发送未处理的 Stripe webhook 事件。

例如,我有以下 webhook 处理程序:

@csrf_exempt
@webhooks.handler("checkout")
def my_handler(event, **kwargs):
    print("handling checkout event...")
    print(event.type)

@csrf_exempt
@webhooks.handler("customer")
def my_customer_handler(event, **kwargs):
    print("handling customer event... in my_customer_handler")
    print(event.type)

@csrf_exempt
@webhooks.handler("charge")
def my_charge_handler(event, **kwargs):
    print("handling charge event... in my_charge_handler")
    print(event.type)

@csrf_exempt
@webhooks.handler("payment_intent")
def my_payment_intent_handler(event, **kwargs):
    print("handling payment_intent event... in my_payment_intent_handler")
    print(event.type)


@csrf_exempt
@webhooks.handler("price", "product")
def my_price_and_product_handler(event, **kwargs):
    print("handling price/product event... in my_price_and_product_handler")
    print(event.type)

现在假设某种类型的发票 webhook 进来了。我知道 djstripe 会将此事件保存到 djstripe_invoice 表(通过 path('stripe/', include("djstripe.urls", namespace="djstripe")),)。但是,如果我想知道它不是当前在内置 dj-stripe URL 之外处理的 webhook 类型怎么办?我可以添加任何 webhook 签名来通知我发生了一个 webhook 事件,而我除了更新数据库之外没有做任何事情?

【问题讨论】:

    标签: django stripe-payments webhooks


    【解决方案1】:

    Stripe 推荐only subscribing to events necessary for your business,因此如果您确实发现了订阅的事件,那么您没有处理好的选择是取消订阅。

    如果您想对所有事件进行一些处理,看起来dj-stripe 有一个handler_all 选项(code)。您可能希望维护一些您处理的显式事件类型的字典,并在记录未处理的事件之前检查是否处理了接收到的事件。

    【讨论】:

    • 好的,感谢@Nolan 的回答。我可能需要澄清一下,我怎么知道我应该订阅哪些事件?以及如何区分我不应该处理但我应该收听的事件和我不应该收听或处理的事件?
    • 对于第二部分,由于 djstripe 处理事件类型组的方式,它有点棘手。我认为您会维护各种处理程序涵盖的事件列表,并根据该列表检查类型。至于您应该订阅哪个,这实际上取决于您要实现的目标。每个集成都是不同的。各种场景的 Stripes 文档将指定何时推荐个别事件,但适合您的并不是一刀切的答案。
    • 那是我从文档中得到的要点(有点“取决于”),但他们确实触及了要在订阅中监控的最低限度的事件和类似的事情。您的回答将帮助我抓住任何我没有处理的东西(尤其是外部新客户),因此受到支持和接受。谢谢。
    猜你喜欢
    • 2021-06-05
    • 2021-03-05
    • 1970-01-01
    • 2020-06-02
    • 2011-02-16
    • 2012-09-16
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多