Для стандартной 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:
- Ваш бэкенд выполняет подписанный POST на: https://vkplay.ru/app/[GMRID]/billing/client?sign=...
- Получает JSON с полем url.
- Передаёт полученный платёжный URL фронтенду для отображения.
То есть открывать в новом окне нужно URL из ответа, а не сам endpoint billing/client.
При самостоятельном открытии ссылки в отдельной вкладке не стоит автоматически обещать такую же доставку JS-коллбеков, как при открытии окна через API платформы.