Sobes.tech
Middle+

Hoe zorg je voor idempotentie in het geval dat de externe bank fouten maakt? Hoe voorspel je een compensatieoperatie om bevroren fondsen te ontdooien?

sobes.tech AI

Antwoord van AI

Для обеспечения идемпотентности при взаимодействии с внешним банком, который может глючить, можно использовать следующие подходы:

  • Уникальные идентификаторы транзакций: каждый запрос к банку сопровождается уникальным ID. Если запрос повторяется из-за сбоя, банк распознаёт дубликат и не проводит операцию повторно.

  • Статусные проверки: перед повторной отправкой операции проверять статус предыдущей (например, через API банка), чтобы не создавать повторных списаний.

  • Компенсационные операции для разморозки средств:

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

Пример схемы:

  1. Отправляем запрос на заморозку средств с уникальным transactionId.
  2. Если банк не отвечает или отвечает с ошибкой, повторяем запрос с тем же transactionId.
  3. Если операция не подтверждена, вызываем компенсационную операцию с тем же transactionId для разморозки.

Такой подход позволяет избежать двойных списаний и гарантирует корректное состояние средств даже при сбоях.