Да, в стандартном JS API предусмотрены:
- paymentReceivedCallback(data) — уведомление об успешной оплате.
Документированный состав:
json
{ "uid": 123456 }
Здесь нет tid, суммы или параметров конкретного заказа.
- paymentWindowClosedCallback() — платёжное окно закрыто пользователем или автоматически. Само закрытие не означает успешную оплату.
Фронтенд-коллбек используется для UX, а основание для начисления — подписанное серверное уведомление.
Платформа отправляет на настроенный Callback URL:
text
GET https://partner.example/api/billing/?uid=...&sum=...&tid=...&merchant_param=...&sign=...
На сервере игры необходимо:
1. Проверить подпись.
2. Обработать покупку с защитой от повторного начисления по tid.
3. После успешной обработки вернуть {"status":"ok"}.
4. На повтор уже обработанного tid тоже вернуть {"status":"ok"}, не начисляя покупку заново.
5. Если требуется повторная доставка из-за временной ошибки, вернуть {"status":"error","errcode":0}.