Stripe:处理第一个订阅和webhook事件

时间:2016-10-22 08:38:41

标签: stripe-payments webhooks

  1. 我的客户第一次加入我们的下标计划,我创建了一个事务(称为START-transaction)并使用Stripe的API在上述事务中创建新的订阅和商店订阅对象返回。 / p>

  2. 我还使用webhook来捕捉Stripe的事件。我的最大目的是处理定期付款(发送关于收费成功或失败的通知,以及用于客户交互的内容)。我抓住事件 invoice.payment_succeeded 来检测它是一个熟练的结算。我也创建了一个事务(调用RECURRENCE),并且,事实上,我将事件对象存储在事务中。 (根据事件invoice.payment_succceeded中的订阅信息,我发现相对START事务并且只要RECURRENCE创建一个新事务)

  3. 问题暴露出来,在客户第一次创建计划时,有6个事件回到我的系统:customer.created; charge.succeeded; invoice.created; invoice.payment_succeeded; customer.card.created; customer.subscription.created。所以,我的客户第一次有2-transactiona:1-START和1-RECURRENCE。

    您建议我删除RECURRENCE交易吗?

    谢谢。

2 个答案:

答案 0 :(得分:5)

听起来您希望能够判断您收到的invoice.payment_succeeded事件是否是第一次付款(您已经在“START事务处理中”处理过),或者不是(在这种情况下您想要处理)它在“RECURRENCE交易”中。)

最简单的方法是查看event objectrequest属性。由于第一张发票是subscription creation request的直接后果,因此第一个invoice.payment_succeeded事件将为request属性设置非空值。后续发票由Stripe在后台创建,因此事件将为request属性设置空值。

答案 1 :(得分:0)

您可以使用“条纹请求”的res.toList // List[(String, String, String)] = List((English,true,asdf), (Latin,asdf,232), (Latin,0009,"")) 来确定它是第一次订阅,定期付款还是更新的发票付款。参见https://stripe.com/docs/api/invoices/object#invoice_object-billing_reason