Пополнение кошелька Steam по логину с авансового баланса. Версия v1.
Логин — то, что человек вводит при входе в Steam. Это не:
steamcommunity.com/id/… — это vanity-адрес, он может не совпадать с логином);Если ваш клиент прислал ссылку или ник — попросите именно логин. Перед пополнением дёргайте
check-login: can_topup: false — не отправляйте заказ, он уйдёт в возврат.
| Base URL | https://partner.rushb.ru |
|---|---|
| Авторизация | заголовок Authorization: Bearer pk_… (токен выдаёт менеджер; храните как секрет) |
| Формат | JSON; суммы в рублях строками ("980.00") |
| Ошибки | {"error": "код", "message": "человеческое описание"} + HTTP-статус |
curl -H "Authorization: Bearer pk_…" https://partner.rushb.ru/v1/balance
→ { "balance": "48200.00", "currency": "RUB", "discount_pct": 2 }
curl -X POST https://partner.rushb.ru/v1/steam/check-login \
-H "Authorization: Bearer pk_…" -H "Content-Type: application/json" \
-d '{"steam_login": "gabelogannewell"}'
→ { "steam_login": "gabelogannewell", "can_topup": false }
can_topup: false — аккаунт не найден или не может принять пополнение.
422 login_invalid, деньги не двинутся. Отдельный check-login полезен раньше —
на этапе, когда ваш клиент вводит логин (мгновенная валидация в вашей форме).Idempotency-Key обязателен — уникальная строка на каждое пополнение (например, id вашего внутреннего заказа). Повтор запроса с тем же ключом вернёт исходный заказ и не спишет деньги второй раз — безопасно ретраить при таймаутах.curl -X POST https://partner.rushb.ru/v1/steam/topup \
-H "Authorization: Bearer pk_…" -H "Content-Type: application/json" \
-H "Idempotency-Key: your-order-12345" \
-d '{"steam_login": "somelogin", "amount": 1000}'
→ 201 {
"id": "9be31c9e-…", // id заказа у нас
"steam_login": "somelogin",
"amount": "1000.00", // номинал: столько получит Steam-кошелёк
"charged": "980.00", // списано с вашего баланса (−2%)
"status": "processing", // см. статусы ниже
"balance": "47220.00" // баланс после списания
}
| поле | правила |
|---|---|
steam_login | логин аккаунта Steam (не email, не ссылка): 2–64 символа A-Za-z0-9_- |
amount | номинал зачисления в рублях: 100–15000 |
Idempotency-Key: вернётся исходный
заказ без второго списания. Новый ключ на ретрае = второе списание.steam_login/amount
вернёт 409 idempotency_mismatch — для нового заказа берите новый ключ.
Лучший ключ — id заказа в вашей системе.→ { "id": "9be31c9e-…", "status": "completed", … }
| status | значение |
|---|---|
processing | зачисляем (обычно до пары минут) |
completed | зачислено на кошелёк Steam |
refunded | зачислить не удалось — списание возвращено на баланс (причина в fail_reason) |
Рекомендуемый поллинг: раз в 3–5 секунд до терминального статуса (completed/refunded).
Типичное время зачисления — секунды, изредка минуты. Если дольше — просто проверяйте позже:
возврат при провале произойдёт автоматически, «зависших» денег не бывает.
processing — не создавайте второй на тот же логин:
первый может завершиться, и клиент получит двойное зачисление за ваш счёт.GET /v1/orders?limit=50&offset=0 → { "orders": [ … ] }
→ { "transactions": [ { "type": "deposit"|"charge"|"refund", "amount": "+50000.00", "balance_after": "…", … } ] }
402 insufficient_funds в проде — признак, что баланс
узнают в момент заказа. Правильно: периодический GET /v1/balance и алерт себе при балансе
меньше вашего дневного оборота.2026-08-19T19:58:13.199Z). Не путайте с местным временем.pk_… в мобильное приложение или фронтенд.
Компрометация — сразу к менеджеру, перевыпустим.| HTTP | error | что делать |
|---|---|---|
| 401 | unauthorized | проверить токен |
| 400 | bad_request / idempotency_required | поправить запрос (описание в message) |
| 402 | insufficient_funds | пополнить баланс (написать менеджеру) |
| 409 | idempotency_mismatch | ключ уже использован с другими параметрами — новый заказ = новый ключ |
| 422 | login_invalid | аккаунт не найден/не принимает пополнение — деньги не списаны, проверьте логин у клиента |
| 502 | provider_error | временная недоступность — повторить позже с тем же Idempotency-Key |