Assalam Docs

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

Повтор запроса не спишет деньги дважды

Заголовок Idempotency-Key обязателен для запросов, создающих операции с деньгами: создание платежа и возврат. Значение выбираете вы — например, идентификатор заказа в вашей системе.

Правила

  • Повтор с тем же ключом и тем же телом вернёт сохранённый ответ. Операция не выполнится второй раз.
  • Тот же ключ с другим телом — ошибка 409. Это защита от случайного переиспользования: иначе платёж на другую сумму тихо вернул бы результат старого.
  • Параллельный запрос с тем же ключом — тоже 409: первый ещё выполняется.
  • Если операция не удалась, ключ освобождается — можно повторить с ним же.
Ваш сервер · запрос
curl -X POST https://api.assalam.uz/subscribe/v1/charges \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: order-1024" \
  -H "Content-Type: application/json" \
  -d '{"amount": 5000000, "card": "cmsr…"}'
Повтор вернёт тот же ответ
{
  "id": "cmsr1a2b",
  "amount": 5000000,
  "status": "REQUIRES_PAYMENT"
}
Тот же ключ, другое тело
{
  "message": "Idempotency-Key уже использован с другим телом запроса",
  "error": "Conflict",
  "statusCode": 409
}

Как выбирать ключ

Ключ должен быть привязан к намерению, а не к попытке. Хорошо: order-1024, policy-5567-payment. Плохо: случайная строка на каждый вызов — тогда повтор после обрыва создаст второй платёж.

Минимальная длина — 8 символов.

Таймаут — не отказ

Если запрос оборвался и вы не знаете исход, повторите его с тем же ключом и посмотрите ответ. Не создавайте новый платёж «на всякий случай»: со стороны банка операция могла пройти.

Дальше по теме

На этой странице