в платёжный сервис
2) записать в БД результат транзакции
3) запрос на создание чека в платёжный сервис
4) записать в БД результат транзакции на создание чека
5) изменить статус заказа
Псевдокод
try:
with transaction.atomic:
payment = payment_request()
create_payment_transaction(payment)
receipt = receipt_request()
create_receipt_transaction(receipt)
set_status_order(payment)
except Exception:
вернуть ошибку, оплата не прошла
оплата прошла успешно
Вопросы:
1) правильный ли порядок операций ? Или может сначала создать записи в БД, а потом заполнить значениями из ответов на запрос в платёжный сервис
2) какие могут быть подводные камни ?
3) данная операция синхронная или лучше отдать celery и запрашивать на клиенте статус ?
Посоветуйте решение лучше
Конечно будет круто, если ответит человек с опытом в платёжках
все в таски, доверять внешнему апи что разродится, только если ваш сервис без него никак не может рабоать
как понять “доверять внешнему апи что разродится”?
Обсуждают сегодня