Возможности
Отмена раунда и возвраты
Платный раунд начинается с колбэка bet в ваш кошелёк. Здесь описано, когда платформа отменяет раунд, когда отправляет колбэк refund и как вы сами отменяете незавершённый раунд.
Когда раунд отменяется#
| Ситуация | Что происходит |
|---|---|
Кошелёк отвечает на bet INSUFFICIENT_FUNDS | Раунд отклоняется сразу. Ничего не списано, ничего не сыграно, refund не отправляется. |
Кошелёк отвечает на bet HTTP-статусом 4xx, кроме 408 и 429 | Окончательный отказ. Раунд отменяется сразу, и ставится в очередь refund на ставку, потому что платформа не знает, учла ли ваша система списание. |
bet по-прежнему не подтверждён по истечении политики отмены: по умолчанию 10 минут (или 600 попыток) | Раунд отменяется, ставится в очередь refund. |
Вы вызываете round_cancel | Раунд отменяется, ставится в очередь refund. |
Всё остальное повторяется с тем же id транзакции и тем же телом: HTTP 5xx, 408, 429, таймауты, сетевые ошибки и некорректные ответы. bet повторяется сразу в первых 4 попытках, затем через 1 с с удвоением до 60 с. Повторы самого колбэка описаны в Колбэках кошелька.
Когда раунд отменён:
- Ставка закрывается и больше никогда не отправляется.
- Создаётся операция
refundна ту же сумму, гдеmeta.original_transactionравенmeta.transactionставки. refundдоставляется, пока вы не ответитеok(задержки 2 с с удвоением, не более 5 минут).
Для игрока раунд заканчивается как отклонённый: ничего не сыграно, результат не раскрыт, после перезагрузки то же самое, можно начать новый раунд. Значения политики задаёт платформа; если нужны другие, обратитесь к вашему менеджеру.
Сторона вашего кошелька#
Реализуйте refund, как описано в Колбэках кошелька. Два важных случая:
- ставка была списана (ваш ответ потерялся или был 4xx после учёта): верните её один раз;
- ставка не была получена: запомните id транзакции как отменённый, ответьте
okи отклоните ставку, если она придёт позже (TRANSACTION_CANCELLED).
round_cancel#
/gameActions.domethodround_cancelОтменяет незавершённый раунд и возвращает его списание. Повтор вызова безопасен.
Запрос#
curl -s -X POST https://notell-api.com/gameActions.do \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: cancel-b2a74c1e' \
-d '{
"method": "round_cancel",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12"
}'{
"method": "round_cancel",
"partner": "demo-casino",
"api_key": "YOUR_API_KEY",
"round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12"
}| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
method | string | да | "round_cancel". |
partner, api_key | string | да | Идентификатор проекта и API-ключ. |
round_id | string | да | meta.round_id колбэков кошелька этого раунда или round_id из report_rounds. Другие поля не принимаются. |
Раунд можно отменить, если
- его ставка ещё не подтверждена, либо
- ставка подтверждена, но результат ещё не показан игроку и выигрыш не зачисляется (например, бонусный раунд, который игрок не открыл).
Необязательный заголовок Idempotency-Key поддерживается (Соглашения).
Ответ#
{
"status": "ok",
"round": {
"round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12",
"state": "cancelled",
"result": "cancelled",
"reason": "operator_cancel",
"source": "operator",
"refund": {
"transaction": "c41e7a90-3b2d-4f68-8e15-9d0a6c2b7f34",
"amount": "1.50",
"status": "pending"
}
}
}| Поле | Тип | Описание |
|---|---|---|
round.round_id | string | Раунд. |
round.state | string | "cancelled". |
round.result | enum | cancelled сейчас, already_cancelled при повторе. |
round.reason | string | operator_cancel для этого метода, wallet_unconfirmed, если раунд отменила платформа. |
round.source | string | operator или worker. |
round.refund.transaction | string | Id транзакции колбэка refund (meta.transaction). |
round.refund.amount | money | Сумма возврата; равна ставке. |
round.refund.status | enum | pending, пока кошелёк не подтвердит возврат, затем confirmed. Проверьте через report_rounds. |
Ошибки#
| Код | HTTP | Когда |
|---|---|---|
INVALID_REQUEST | 400 | round_id отсутствует или не строка, либо передано другое поле. |
ROUND_NOT_FOUND | 404 | Id не принадлежит раунду вашего проекта (включая id, не являющийся UUID). |
ROUND_NOT_CANCELLABLE | 409 | Завершённый раунд, выигрыш в процессе зачисления, результат уже показан, ставка отклонена или раунд фриспина (ничего не списывалось). |
ROUND_BUSY | 409 | Идёт вызов кошелька по этому раунду. Повторите через несколько секунд. |
ROUND_CANCEL_UNAVAILABLE | 400 | Отмена раунда недоступна на этом сервере. |
Правила денег#
- Одна ставка возвращается не более одного раза; сумма возврата всегда равна ставке.
- Ставка, выигрыш и возврат отправляются с уникальным id транзакции и повторяются без изменений: ваш кошелёк отвечает на повтор из своей записи.
report_ggrсчитаетставки − возвраты − выигрыши.
См. также#
- Колбэки кошелька:
bet,refund, повторы. - Отчёты: поиск раундов и статусы возвратов.