2017-01-09 51 views
0

在我的Stripe-Connect應用程序中,我想處理Stripe customer.subscription.deleted 當訂閱在失敗的付款嘗試後自動取消時生成的webhook(基於失敗的訂閱設置支付)。使用cancel_at_period_end檢測條帶訂閱的自動取消true

Stripe documentation陳述: 「如果customer.subscription.deleted事件的請求屬性爲空,您可以看到自動取消訂閱 - 而不是您的請求。 另請參閱Detect if subscription is cancelled automatically

但是,如果訂閱將cancel_at_period_end設置爲「true」,則即使訂閱在期末「自然」結束,但customer.subscription.deleted事件的請求屬性爲null,而不是付款嘗試失敗的結果。

所以,我的問題是,如何檢測到cancel_at_period_end設置爲true的訂閱已被取消,因爲付款嘗試失敗?

回答

1

不幸的是,目前無法區分這兩種情況。我建議的是,在您的最後保存您已標記的訂閱以在當前期間結束時取消。通過這種方式,當您收到customer.subscription.deleted事件時,可以根據您的結尾上的該標誌來檢查它是否來自付款失敗。

另一個解決方案是查看該訂閱的最新發票。您將能夠查看attempt_count屬性以查看對其進行了多少次重試,並推斷取消是否來自最後一次嘗試。

+0

是的,這就是我的想法。哦,謝謝! 我不太喜歡基於attempt_count來推斷它的想法,因爲這會在訂閱失敗的付款嘗試設置中引入耦合。 Anotherwords,我怎麼知道attempt_counts的價值是什麼決定了這實際上是一次失敗的付款,而沒有對訂購失敗的付款設置中配置的內容做出假設? –

+0

是的,你需要推斷這部分,但這是一個備份解決方案。我眼中的正確解決方案是自己來追蹤這個。 – koopajah