Notell API Docs
English

Возможности

Отмена раунда и возвраты

Платный раунд начинается с колбэка 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 с. Повторы самого колбэка описаны в Колбэках кошелька.

Когда раунд отменён:

  1. Ставка закрывается и больше никогда не отправляется.
  2. Создаётся операция refund на ту же сумму, где meta.original_transaction равен meta.transaction ставки.
  3. refund доставляется, пока вы не ответите ok (задержки 2 с с удвоением, не более 5 минут).

Для игрока раунд заканчивается как отклонённый: ничего не сыграно, результат не раскрыт, после перезагрузки то же самое, можно начать новый раунд. Значения политики задаёт платформа; если нужны другие, обратитесь к вашему менеджеру.

Сторона вашего кошелька#

Реализуйте refund, как описано в Колбэках кошелька. Два важных случая:

  • ставка была списана (ваш ответ потерялся или был 4xx после учёта): верните её один раз;
  • ставка не была получена: запомните id транзакции как отменённый, ответьте ok и отклоните ставку, если она придёт позже (TRANSACTION_CANCELLED).

round_cancel#

POST/gameActions.domethodround_cancel

Отменяет незавершённый раунд и возвращает его списание. Повтор вызова безопасен.

Запрос#

curl
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"
  }'
JSON
{
  "method": "round_cancel",
  "partner": "demo-casino",
  "api_key": "YOUR_API_KEY",
  "round_id": "b2a74c1e-5d90-4f3a-8c21-0e9b7a6d4f12"
}
ПолеТипОбязательноОписание
methodstringда"round_cancel".
partner, api_keystringдаИдентификатор проекта и API-ключ.
round_idstringдаmeta.round_id колбэков кошелька этого раунда или round_id из report_rounds. Другие поля не принимаются.

Раунд можно отменить, если

  • его ставка ещё не подтверждена, либо
  • ставка подтверждена, но результат ещё не показан игроку и выигрыш не зачисляется (например, бонусный раунд, который игрок не открыл).

Необязательный заголовок Idempotency-Key поддерживается (Соглашения).

Ответ#

json
{
  "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_idstringРаунд.
round.statestring"cancelled".
round.resultenumcancelled сейчас, already_cancelled при повторе.
round.reasonstringoperator_cancel для этого метода, wallet_unconfirmed, если раунд отменила платформа.
round.sourcestringoperator или worker.
round.refund.transactionstringId транзакции колбэка refund (meta.transaction).
round.refund.amountmoneyСумма возврата; равна ставке.
round.refund.statusenumpending, пока кошелёк не подтвердит возврат, затем confirmed. Проверьте через report_rounds.

Ошибки#

КодHTTPКогда
INVALID_REQUEST400round_id отсутствует или не строка, либо передано другое поле.
ROUND_NOT_FOUND404Id не принадлежит раунду вашего проекта (включая id, не являющийся UUID).
ROUND_NOT_CANCELLABLE409Завершённый раунд, выигрыш в процессе зачисления, результат уже показан, ставка отклонена или раунд фриспина (ничего не списывалось).
ROUND_BUSY409Идёт вызов кошелька по этому раунду. Повторите через несколько секунд.
ROUND_CANCEL_UNAVAILABLE400Отмена раунда недоступна на этом сервере.

Правила денег#

  • Одна ставка возвращается не более одного раза; сумма возврата всегда равна ставке.
  • Ставка, выигрыш и возврат отправляются с уникальным id транзакции и повторяются без изменений: ваш кошелёк отвечает на повтор из своей записи.
  • report_ggr считает ставки − возвраты − выигрыши.

См. также#

Документация для операторов и интеграторов.Платформа TEST_ONLY: невыводимые единицы, реальные платежи не используются.