Заказы и статусы
Заказы и статусы
Двухфазная модель: create → pay
Заказ оформляется в два шага, чтобы вы могли зафиксировать цену до списания денег:
POST /api/reseller/order/create— создаёт заказ, фиксирует оптовую цену. Депозит НЕ списывается. Возвращаетtotal_to_pay_rub.POST /api/reseller/order/pay— списывает депозит по зафиксированной цене и ставит заказ в очередь доставки.
Идемпотентность по custom_id
custom_id
custom_id(UUID) придумываете вы — это ключ идемпотентности. Повторныйcreateс тем же значением вернёт тот же заказ, а повторныйpayне спишет депозит повторно. Не используйте тот жеcustom_idс другими параметрами: API вернёт первый заказ. Для каждого нового заказа создавайте новыйcustom_id.
Жизненный цикл заказа
create ──> CREATED ──pay──> PENDING ──> PROCESSING ──> DELIVERED
│ └──> FAILED (депозит возвращён)
└──(не оплачен вовремя)──> CANCELLED
pay при нехватке депозита ──> REJECTED
| Статус | Значение |
|---|---|
created | Заказ создан, цена зафиксирована, не оплачен |
pending | Оплачен, в очереди на доставку |
processing | Доставляется |
delivered | ✅ Доставлен (в delivered_payload — детали, напр. tx_hash) |
failed | ❌ Не доставлен, депозит возвращён на баланс |
cancelled | Неоплаченный заказ истёк по таймауту |
rejected | При оплате не хватило депозита (списания не было) |
Данные после доставки
После статуса delivered проверьте delivered_payload:
| Товар | Значение delivered_payload |
|---|---|
stars, premium_* | tx_hash |
gift | Подтверждение отправки |
neural | Ключ или данные доступа |
game с delivery: "codes" | Коды, разделённые ; |
steam, game с delivery: "topup" | Идентификатор заказа у поставщика |
Храните ключи и данные доступа для
neuralна сервере. Не публикуйте их в клиентском приложении.
Проверка получателя заранее
Чтобы не создавать заказ с неверным получателем, проверьте его заранее — это не тратит средства. Проверка нужна для stars и gift с Telegram-юзернеймом, а также для steam с логином Steam. Для neural и game она не нужна, потому что получателя нет:
curl -H "Authorization: Bearer $KEY" \
"https://hexpay.live/api/reseller/check-recipient?product=stars&username=durov"
# {"success":true,"valid":true,"status":"ok"}Статусы: ok — можно заказывать, not_found — пользователь не найден, premium_already — у пользователя уже есть Premium.
Updated 6 days ago
