SplitPay

Идемпотентность

Как не списать деньги дважды

Сеть ненадёжна: ответ может потеряться, хотя деньги уже списаны. Поэтому POST /v1/cards и POST /v1/charges требуют заголовок Idempotency-Key - 8-128 символов [A-Za-z0-9._:-].

Повтор с тем же ключомРезультат
то же тело, первый запрос завершёнсохранённый ответ, заголовок Idempotent-Replayed: true
то же тело, первый ещё выполняется409, код -11003 - повторите позже
другое тело422, код -11002

Ошибки не запоминаются: исправленный запрос можно отправить с тем же ключом.

Вторая защита - externalId: даже с новым ключом второе списание по тому же заказу не создастся.

Рекомендация: стройте ключ из идентификатора операции у себя, например order-777-charge.