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

Есть ли JS-метод для открытия платёжного окна внутри фрейма, или достаточно открыть URL из billing/client в новом окне?

Для стандартной iframe-интеграции есть готовые JS-методы.

Открыть платёжное окно можно средствами платформы:

ПРИМЕР КОДА

js
   externalApi.paymentFrame({
     merchant_param: {
       amount: 100,
       currency: "RUB",
       description: "Золотой сундук",
       item_id: "776"
     }
   });

Есть вариант для товаров, заведённых в каталоге проекта:

ПРИМЕР КОДА

js
   externalApi.paymentFrameItem({
     ids: "10,100,200",
     merchant_param: {
       order_id: "ваш_номер_заказа"
     }
   });

paymentFrameItem принимает один объект, а не два позиционных аргумента ids, merchant_param.

Есть и paymentFrameUrl({ merchant_param: ... }): вместо открытия окна он возвращает ссылку через paymentFrameUrlCallback. 

Серверный вариант также штатный, но здесь важно не перепутать два URL:

  1. Ваш бэкенд выполняет подписанный POST на: https://vkplay.ru/app/[GMRID]/billing/client?sign=...
  2. Получает JSON с полем url.
  3. Передаёт полученный платёжный URL фронтенду для отображения.

 То есть открывать в новом окне нужно URL из ответа, а не сам endpoint billing/client.

При самостоятельном открытии ссылки в отдельной вкладке не стоит автоматически обещать такую же доставку JS-коллбеков, как при открытии окна через API платформы.