Как проверить потоки обновления подписки в stripe?


Я хочу проверить, как мое приложение обрабатывает события webhook из stripe, когда оплата подписки была произведена (или не удалась). Вот что я пытался сделать до сих пор:

  • Настройка новой подписки
  • обновите кредитную карту пользователя, чтобы она могла быть добавлена к учетной записи, но фактически не будет списана
  • Измените дату окончания испытания на одну секунду
  • Подождите несколько секунд, ожидая отправки webhook

Однако, согласно документация :

Если вы настроили webhooks, счет-фактура будет ждать до одного часа после успешной отправки последнего webhook (или последнего времени ожидания webhook после сбоя).

Один час-это долгое ожидание, так как я пытаюсь сделать это в рамках автоматизированного набора интеграционных тестов.

Одно предложение (от IRC)заключается в том, чтобы подделать запрос webhook, чтобы мой интеграционный тест отправлял событие, а не Stripe. Однако, поскольку Stripe не включает никаких HMAC в webhooks, я не могу доверять данным в полезной нагрузке. Итак, мое приложение просто берет идентификатор события из полезной нагрузки webhook и извлекает событие из Stripe API :

Если вас беспокоит безопасность или важно подтвердить, что Stripe отправила webhook, вы должны использовать только идентификатор, отправленный в вашем webhook, и запрашивать остальные данные непосредственно из API.

Это, очевидно, не будет работать, если я попытка ввести поддельные события для моего теста (по дизайну).

Каковы наилучшие методы тестирования такого рода сценариев?

1 6

1 ответ:

Похоже, что нет идеального способа сделать это. Как было предложено @koopajah в комментарии , я добавил в свое приложение значение конфигурации, которое отключит извлечение события из Stripe, а вместо этого просто доверяет данным события в webhook. Это позволяет мне тестировать мой поток почти так же, как он работал бы на производстве, так как данные события в webhook и событие, полученное из Stripe, идентичны (предполагая, что это аутентичный запрос webhook :)

Если / до тех пор, пока Stripe не включит подпись HMAC в запрос webhook для проверки подлинности, что она пришла от них, я думаю, что это лучший способ решить проблему.