охват

Почему в стандарте v2 нет идемпотентности и чем это грозит

Для реселлеров · 9 минут чтения

Повторный запрос — это второй оплаченный заказ. В стандарте нет ничего, что бы это остановило.

SMM Panel API v2 — это форма с полями key, action, service, link и quantity. Ни заголовка идемпотентности, ни идентификатора операции в нём не предусмотрено.

Значит, если ответ не дошёл — а он не дошёл, потому что оборвалась сеть, — у вас нет способа узнать, создался заказ или нет. Повторить запрос означает рискнуть вторым списанием.

Как это выглядит на практике

Таймаут на стороне клиента, ретрай по правилу «повторить трижды», и три одинаковых заказа у поставщика. Деньги списаны трижды, клиент получил втрое больше, чем просил, и вы объясняете это в поддержке.

Именно поэтому ретрая перевода денег не существует как понятия: повторный add — это не повтор запроса, это второй оплаченный заказ.

Что делаем мы

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

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

Собрать план по цели · Посмотреть цены