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