У вас есть 2 запроса Stripe API в одном блоке try
. Это означает, что если один успешно, а другой не работает из-за ошибки подключения, вы будете рассматривать оба как неудачные. Лучше всего иметь только одну операцию API на блок try / catch.
У вас также есть запрос на отмену жестко запрограммированного PaymentIntent после того, как ваш код вернет объект JSON. Поскольку возврат не является условным, это, скорее всего, мертвый код.
Отмена logi c в случае ошибки соединения здесь не имеет смысла. Вы должны использовать этот путь только в том случае, если соединение не удалось и намерение не было создано, поэтому попытка отменить несуществующий PaymentIntent, скорее всего, приведет к еще одной ошибке. Вместо этого вы должны ввести здесь retry logi c. К счастью, в stripe- python есть встроенная функция, специально предназначенная для сетевых ошибок: https://github.com/stripe/stripe-python#configuring -automati c -retries
После того, как все попытки завершились неудачно, вам, вероятно, следует зарегистрировать это где-нибудь и проинформируйте пользователя о том, что возникла проблема и что он должен попробовать еще раз позже.
Что касается ключей идемпотентности, в документации Stripe есть учебник по этому поводу: https://stripe.com/docs/api/idempotent_requests?lang=python