Ошибки и безопасные повторы
Отличайте неизвестный результат от подтверждённого отказа.
Envelope интеграции: { "error": { "code": "INVALID_AMOUNT", "message": "Human-readable diagnostic" } }. Обрабатывайте error.code, а не только HTTP/текст. Тайм-аут, потерянный ответ или обычный 5xx оставляют результат создания неизвестным: повторяйте сохранённое тело с тем же Idempotency-Key.
| Код | Действие |
|---|---|
INVALID_REQUEST, INVALID_AMOUNT | Исправьте поля; для v2 amountUsd/baseAmountUsd — положительная строка до 18 целых и 6 дробных цифр; 25.0000001 отклоняется. Без знаков, экспоненты, пробелов и ведущих нулей. |
INVALID_API_KEY | Проверьте секрет, проект и режим; не публикуйте ключ. |
PROJECT_NOT_READY, WALLET_NOT_CONFIGURED | Завершите настройку, проверьте кошелёк/маршрут и доступность аккаунта. |
UNSUPPORTED_ASSET, UNSUPPORTED_NETWORK | Используйте предлагаемый маршрут текущего контекста. |
INVOICE_NOT_FOUND | Проверьте ID и проект/контекст; исторический код может означать отсутствие сессии. |
IDEMPOTENCY_CONFLICT | Сверьте сохранённые ID/тело/заказ; не обходите новым ключом. |
DEMAND_MONITORING_UNAVAILABLE, TEMPORARILY_UNAVAILABLE | Подождите; сохраняйте идентичность запроса. |
AMOUNT_SPACE_EXHAUSTED | Маршрут недоступен; обратитесь в поддержку, не придумывайте точную сумму. |
RATE_LIMITED | Учитывайте параметры повтора, backoff и jitter. |
429 может включать resourceCode, scope, limit, profile, retryAfterSeconds, retryable. Единой гарантированной квоты нет.
Окончательный отказ создания
Только полностью проверенная ошибка с code: "PAYMENT_CREATION_DECLINED", version: 1, retryable: false, sessionCreated: false, корректным rejectionId и совпадающими projectId, mode, externalId, idempotencyKey, requestHash подтверждает зафиксированный отказ без сессии. Сверьте все поля с сохранённым запросом и сохраните квитанцию. Один HTTP 503, отсутствие поля или несовпадение идентичности оставляют результат неизвестным; не создавайте замену с новым ключом.
Истечение срока не доказывает окончательную неоплату. Проверяйте status, monitoringComplete, pendingSettlement и isFinal. Ошибочный, дополнительный или поздний перевод требует расследования; не просите автоматически новый перевод и не обещайте возврат.