Продажа виртуальных ценностей в Одноклассниках
В Одноклассниках площадка и сервер приложения обмениваются данными с помощью POST- и GET-запросов. В отличие от покупки виртуальных ценностей ВКонтакте, используются два адреса обратного вызова для отправки уведомлений. Они указываются в настройках приложения.
Как реализовать продажу виртуальных товаров
Шаг 1. Подготовьте серверную часть приложения
- 1.
На сервере приложения определите URL, на которые будут приходить запросы, связанные с покупками. Нужно определить адрес для POST-запроса данных о товаре и адрес для GET-запроса о подтверждении покупки.
Важно! URL-адреса для платёжных уведомлений ВКонтакте и Одноклассников должны быть разными.
- 2.
В код сервера добавьте обработчики запросов, которые будут приходить на этот URL. Для работы с платежами за товары надо реализовать обработку следующих уведомлений:
- •
get_item. Площадка отсылает это уведомление, чтобы получить информацию о товаре для отображения в окне покупки: название, стоимость, изображение. Уведомление приходит на URL для платёжных уведомлений ВКонтакте.В параметре
siteпередаётся название площадки, на которой производится покупка. Учитывайте это значение при расчёте стоимости товара в голосах или ОКах. - •
GET-запрос. Это уведомление отправляется при покупке, приходит на URL для платёжных уведомлений Одноклассников.
- •
Шаг 2. Укажите адрес обратного вызова в настройках приложения
Найдите ваше мини-приложение или игру в списке приложений и нажмите Настройки. Выберите раздел Платежи в меню слева.
Настройки подключения платежей
- 1.
В поле URL для платёжных уведомлений ВКонтакте укажите URL, на который площадка будет отсылать уведомления, чтобы получить информацию о товаре.
- 2.
В поле URL для платёжных уведомлений Одноклассников укажите URL, на который площадка будет отсылать уведомления о подтверждении покупки.
Вы определили эти URL на шаге 1.
- 3.
Новые версии платформы могут привносить изменения в структуру данных уведомлений. В поле Версия API укажите версию уведомлений, которую поддерживает ваш сервер. Актуально только для запроса
get_item.
Подробнее о тестировании платежей — в разделе Тестовый режим.
Шаг 3. Вызовите событие VK Bridge для показа окна покупки
Для продажи игрового товара вызовите событие VKWebAppShowOrderBox в клиентской части игры. Например, так:
bridge.send('VKWebAppShowOrderBox',
{
type: 'item', // Всегда должно быть 'item'
item: 'sale_item_id_1', // Идентификатор товара
})
.then( (data) => {console.log('Покупка состоялась.', data) })
.catch( (e) => {console.log('Ошибка!', e) });Обратите внимание, что если вы не используете какой-либо сборщик, например webpack, a включаете .js-файл библиотеки VK Bridge в HTML-код своих страниц, то в JavaScript-коде надо использовать имя объекта vkBridge, а не bridge.
Проверить результаты можно не только c помощью then и catch, но и через события платформы. Подробнее — в разделе Обработка результатов.
Порядок обработки ответов на уведомление зависит от платформы:
- •
В десктопной версии сайта ваше приложение получает событие
VKWebAppShowOrderBoxResultтолько после того, как площадка обработала ответ на уведомление. Если сервер приложения сообщает об ошибке в ответе на платёжное уведомление, площадка отправляет событиеVKWebAppShowOrderBoxFailed. - •
На Android и в мобильной версии сайта ваше приложение всегда получает событие
VKWebAppShowOrderBoxResultпосле того, как пользователь подтвердит оплату голосами. Площадка ожидает ответ на уведомление, но не отправляет событиеVKWebAppShowOrderBoxFailed, даже если приложение вернёт код ошибки.
Обмен данными
Обмен уведомлениями между сервером приложения и площадкой отличается для ВКонтакте и Одноклассников:
- •При продаже виртуальных ценностей площадка Одноклассники отсылает уведомления на URL для платёжных уведомлений ВКонтакте серверу приложения для получения информации о продаваемом объекте.
- •Для информации о подтверждении покупки площадка отсылает уведомления на URL для платёжных уведомлений Одноклассников серверу приложения.
Обмен данными происходит в два этапа:
- 1.
Чтобы показать окно покупки товара, вызовите событие
VKWebAppShowOrderBoxбиблиотеки VK Bridge.- •
Библиотека отправляет запрос площадке о необходимости показа диалогового окна.
- •
Площадка, в свою очередь, отправляет серверу приложения на URL платёжных уведомлений ВКонтакте уведомление вида
get_itemдля получения информации о продаваемом объекте.Значение параметра
siteуказывает, на какой площадке производится покупка товара. - •
Сервер приложения отвечает на этот запрос и сообщает площадке название товара, его стоимость и другие данные.
Цена товара должна быть предоставлена в ОКах.
- •
Площадка проверяет, достаточно ли у пользователя ОКов на счёте.
Если виртуальной валюты достаточно, площадка покажет диалоговое окно для подтверждения платежа.
Если виртуальной валюты недостаточно, площадка предложит пользователю докупить их с помощью банковской карты или электронного кошелька. После покупки обмен данными между площадкой и сервером приложения проходит так же, как и в случае с достаточным количеством виртуальной валюты на счёте.
- •
- 2.
После того как пользователь нажмёт Оплатить в окне покупки:
- •
Площадка отправляет серверу приложения на URL платёжных уведомлений в Одноклассниках уведомление в виде GET-запроса, который сообщает, что пользователь оплатил товар.
- •
Сервер приложения предоставляет пользователю покупаемый товар и возвращает площадке ответ об успешной обработке заказа.
- •
Площадка переводит ОКи со счёта пользователя на счёт приложения, а также сообщает клиентской части приложения об успешной покупке.
Приложение, в свою очередь, может выполнить какие-либо действия, которые визуально покажут пользователю, что покупка состоялась.
- •
Возврат товаров
Возврат товаров в Одноклассниках можно осуществить с помощью метода payment.refundUserPayment.
Тестовый режим
Важно протестировать работу приложения, связанную с покупками и платежами, перед тем как сделать его доступным широкому кругу пользователей.
Подробнее о получении доступа к тестовому режиму платежей и рекламы — в документации API Одноклассники.
Работа с платежами
Для работы с платежами в Одноклассниках, например получения статистики по платежам или возврата товара, вы можете использовать API-операции группы payment.
Материалы по теме
- •
- •
- •
- •