VK Play Разработчики

Приходит ли во фронтенд событие об успешной оплате (коллбек), или статус нужно узнавать только у своего сервера?

Да, в стандартном 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}.