Stripe: 'payment_intent.succeeded' также срабатывает при продлении подписки

У меня есть два API для веб-крючков Stripe в моем бэкенде (Django).

  • веб-крючок "Подписка": /api/subscriptions/webhook/
  • веб-крючок "Добавить баланс в кошелек": /api/wallet/webhook/

В вебхуке подписки я слушаю события invoice.paid и invoice.payment_failed, а в вебхуке кошелька я слушаю событие payment_intent.succeeded. Проблема в том, что каждый раз, когда вызывается веб-клик подписки, событие payment_intent.succeeded также срабатывает для веб-локатора кошелька. Я думаю, это происходит потому, что намерения оплаты также создаются и для подписки. Мне нужен способ разграничить эти два вида платежей (единовременный платеж [он же пополнение баланса кошелька] и подписка), чтобы не получить в итоге дополнительный кредит в кошельке пользователя при продлении подписки.

В итоге я использовал событие invoice.paid для обоих вебхуков и проверял поле data.object.lines.data[0].price.type, которое может быть либо one_time, либо recurring. Подробнее об этом можно прочитать на https://stripe.com/docs/api/invoices/line_item#invoice_line_item_object-type

Вернуться на верх