Идемпотентность
Как не списать деньги дважды
Сеть ненадёжна: ответ может потеряться, хотя деньги уже списаны. Поэтому 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.