Каков наилучший способ обновить подписку на серверной части, используя веб-зацепки Stripe? - PullRequest
0 голосов
/ 08 декабря 2018

Какое событие должен искать мой webhook, чтобы обновить подписку клиента в моей базе данных?Я бы предположил customer.subscription.updated, поскольку он содержит элементы current_period_start и current_period_end.Тем не менее, я обеспокоен тем, что customer.subscription.updated, по-видимому, уволен за час или около того до invoice.payment_succeeded.Я не хотел бы обновлять подписку клиента, если платеж не прошел через час.

1 Ответ

0 голосов
/ 17 декабря 2018

Как указано утка в его / ее комментарии, я думаю, что лучший способ обновить подписку, если оплата счета не удалась или прошла успешно, - это прослушать следующие события:

  • invoice.payment_succeeded: Происходит при успешной попытке платежа по счету.
  • invoice.payment_failed: Происходит при неудачной попытке платежа по счету либо по причине отклоненного платежаили из-за отсутствия хранимого способа оплаты.

На самом деле, так я работаю, и это очень эффективно.Я бы рекомендовал статью документации Stripe Жизненный цикл и события биллинга , особенно раздел Жизненный цикл подписки :

После этого первого счета-фактуры следующий цикл событийповторяется каждый платежный период:

  1. Когда подписка приближается к дате ее продления, отправляется событие invoice.upcoming.
  2. Когда истекает период подписки, отправляется событие invoice.created,указывает на создание черновика счета.
  3. Примерно через час после создания счета-фактуры он завершается (изменения больше не разрешены) и отправляется событие invoice.finalized.Предпринята попытка оплаты, и отправлено событие charge.succeeded, чтобы указать, что платеж был успешным.
  4. Отправлено событие invoice.payment_succeeded, чтобы указать, что счет был помечен как оплаченный.
...