Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

A timeout is not a failure

Описание и применение

При интеграции MTN MoMo таймауты не считаются ошибками; вместо этого они помечаются как UNKNOWN и повторно проверяются до получения окончательного ответа, предотвращая ложные провалы и финансовые потери.

Задача

When MTN Mobile Money’s API does not return a callback, developers mistakenly treat a timeout as a failed transaction, leading to incorrect ledger entries and financial loss.

Результат

By treating timeouts as UNKNOWN and implementing idempotent callbacks, the gateway avoids false failure marking, reduces financial risk, and improves reconciliation reliability.

Рабочий процесс

  • 1. Register a providerCallbackHost with MTN API user. 2. Send payment request with X-Callback-Url header. 3. If MTN does not call back, treat the request as UNKNOWN, not FAILED. 4. Reconciler polls MTN for status until a terminal state is returned. 5. If status remains UNKNOWN beyond configured window, escalates to human review. 6. Record final status only after conclusive response.
  • 7. Ensure callback endpoint is idempotent to handle retries.
  • 8. Map MTN response codes to internal status, prioritizing status over reason field.

Доказательства

Registering it does not cause MTN to call you. It only constrains where a supplied X-Callback-Url is permitted to point.

Источник

MTN retries a delivery you already answered. The third submission's callback arrived twice…

Источник

A payment was accepted — 202, CREATED → SUBMITTED. MTN then answered every status query with status: FAILED, reason: INTERNAL_PROCESSING_ERROR.

Источник

  • Дата записи: 2026-09-22T04:30:37.690Z