Создание по двухфазной модели

Проблема

Если выплата успешно создавалась в нашей системе, но мерчант не успевал зарегистрировать её у себя (например, из-за сетевой ошибки, таймаута, дубликата запроса или падения сервиса), то операция всё равно выполнялась, а у мерчанта не было о ней данных. В итоге получается рассинхронизация состояний, сложные разборки и риск того, что клиенту мерчанта уже осуществили выплату.

Как решает это двухфазная модель

1) Создание заявки (payout)

POST /v2/merchant/transactions/payout-card
  • Выплата создаётся в нашей системе

  • Мерчант получает уникальный id

  • Мерчант может безопасно зафиксировать операцию у себя в базе

2) Подтверждение выполнения (release)

POST /v2/merchant/transactions/{id}/release
  • Только после явного подтверждения от мерчанта выплата уходит в обработку

  • Это гарантирует, что обе стороны синхронизированы: у мерчанта есть запись, и он осознанно подтвердил выполнение

Last updated