Платежи
Поддерживаемые площадки





Площадки без поддержки





Для проверки поддержки покупок на площадке в SDK используйте свойство gp.payments.isAvailable
.
// Проверка поддержки покупок на площадке
if (gp.payments.isAvailable) {
// можно оформлять покупки
}
Правила платежей
Придерживайтесь правил для покупок.
Существуют два типа платежей: одноразовые и постоянные.
Пример одноразовой покупки:
- Купить 1000 золота
- Купить сундук
- Восстановить жизни
Одноразовые покупки необходимо израсходовать (консумировать) сразу же.
Пример постоянной покупки:
- Отключение рекламы
- VIP статус
- Увеличение x5 награды за уровень
Постоянные покупки не нужно расходовать. Как только покупка оплачена - она будет всегда видна пользователю, пока не будет израсходована.
Правила проведения одноразовой покупки
// 1. Производится покупка
await gp.payments.purchase({ tag: 'GOLD_1000' });
// 2. Начисляется награда
gp.player.add('gold', 1000);
// 3. Игрок сохраняется на сервере
await gp.player.sync();
// 4. Покупка консумируется (расходуется)
await gp.payments.consume({ tag: 'GOLD_1000' });
Правила проведения постоянной покупки
// 1. Производится покупка
await gp.payments.purchase({ tag: 'VIP' });
// 2. В нужный момент проверяется наличие покупки
if (gp.payments.has('VIP')) {
// сделать что-нибудь при наличии VIP статуса
}
Настройки платформ
Yandex.Games
Настройка
В консоли Яндекс.Игр необходимо заполнить список продуктов в соотвествии со списком продуктов в панели управления.
Тестирование
В консоли Яндекс.Игр необходимо указать свой логин в качестве тестировшика.
VK Direct Games
Настройка
Необходимо заполнить Адрес обратного вызова в разделе платежи. Указать: https://gamepush.com/api/vk/payments
Тестирование
В разделе платежи укажите аккаунт тестировщика.
VK Play
Настройка
Необходимо заполнить URL обратного вызова в разделе Основные свойства. Указать: https://gamepush.com/api/vk_play/payments
Тестирование
Вы можете тестировать сразу со своего аккаунта разработчика. Так же в разделе Аккаунты можно добавить аккаунт тестировщика. Покупки тестируются через тестовую карту, она указана рядом с полем URL обратного вызова в разделе Основные свойства.
OK Games
Настройка
Необходимо заполнить Ссылка callback в настройках приложения. Указать: https://gamepush.com/api/ok/payments
Тестирование
Отстутствует. Пополните баланс аккаунта на несколько ОКов. Выставите покупкам цену в 1 ОК. Цену можно поменять в любой момент в панели.
SmartMarket
Настройка
Необходимо заполнить Webhook смартапа в настройках приложения. Указать: https://gamepush.com/api/smartmarket/webhook
Тестирование
Отстутствует. Оплата по карте. Выставите покупкам цену в 1 Р. Цену можно поменять в любой момент в панели.
Локальное тестирование
Пока у вас выбран тестовый домен - используется тестовая форма покупки, имитирующая платформенную. Вам не нужно заливать игру на площадку для проверки работоспособности.
Покупка продукта
Чтобы приобрести покупку, вам необходимо передать ID или тег покупки.
// Покупка по ID
gp.payments.purchase({ id: 17541 });
// Покупка по тегу
gp.payments.purchase({ tag: 'GOLD_1000' });
События при покупке продукта
// Успешная покупка
gp.payments.on('purchase', ({ product, purchase }) => {});
// Ошибка если покупка не удалась
gp.payments.on('error:purchase', (error) => {});
Метод покупки с promises
const result = await gp.payments.purchase({ id: 17541 });
/**
* Данные продукта
* @type {Product}
*/
result.product;
/**
* Данные покупки
* @type {PlayerPurchase}
*/
result.purchase;
Расходование (консумирование) покупки
Чтобы использовать покупку, вам необходимо передать ID или тег продукта.
// Расходование по ID
gp.payments.consume({ id: 17541 });
// Расходование по тегу
gp.payments.consume({ tag: 'GOLD_1000' });
События при расходовании покупки
// Успешно использована
gp.payments.on('consume', ({ product, purchase }) => {});
// Ошибка при использовании
gp.payments.on('error:consume', (error) => {});
Метод расходования через promises
const result = await gp.payments.consume({ id: 17541 });
/**
* Данные продукта
* @type {Product}
*/
result.product;
/**
* Данные покупки
* @type {PlayerPurchase}
*/
result.purchase;
Получение списка продуктов
gp.payments.fetchProducts();
Метод получения через promises
const result = await gp.payments.fetchProducts();
// Результат ответа
const {
// Список продуктов
products,
// Список покупок игрока
playerPurchases,
} = result;
События при получении списка покупок
// Успешно получен
gp.payments.on('fetchProducts', (result) => {});
// Ошибки при получении
gp.payments.on('error:fetchProducts', (error) => {});
Поля покупки
Поле | Тип | Описание | Пример |
---|---|---|---|
id | number | ID покупки | 115 |
tag | string | Необязательный тег для помощи при выборе. Вы можете использовать его вместо ID | VIP |
name | string | Название, переведенное на язык пользователя | VIP Статус |
description | string | Описание, переведенное на язык пользователя | Без рекламы, награда x2 |
icon | string | Ссылка на иконку размером 256x256 | Пример ссылки |
iconSmall | string | Ссылка на иконку размером 64x64 | Пример ссылки |
price | number | Цена покупки | 199 |
currency | string | Код валюты | YAN OK VOTE RUB GP |
currencySymbol | string | Символ валюты (переведенный на язык пользователя и отформатированный, если нужно) | Голос, Голоса, Голосов |
isSubscription | boolean | Покупка является подпиской | по-умолчанию false |
period | number | Длительность подписки в днях | 7 , 30 , 90 |
trialPeriod | number | Длительность триального периода в днях (за это время пользователь может без списания средств отменить подписку) | 0 , 3 , 7 , 30 |
Поля покупки игрока
Поле | Тип | Описание | Пример |
---|---|---|---|
productId | number | ID Покупки | 115 |
payload | Object | Данные от покупки на платформе (например, ID заказа или токен) | {"order_id": 213} |
createdAt | string | Дата покупки, формат ISO 8601 UTC | 2022-12-01T04:52:26+0000 |
gift | boolean | Покупка была подарена разработчиком игры | false |
subscribed | boolean | Активна ли подписка на эту покупку | true |
expiredAt | string | Дата завершения подписки, формат ISO 8601 UTC | 2022-12-01T04:52:26+0000 |
Коды ошибок
Ошибка | Описание ошибки |
---|---|
player_not_found | Игрок не найден |
empty_id_or_tag | Передан пустой ID или тег покупки |
product_not_found | Покупка с таким ID или тегом не найдена |
purchases_not_alloved_on_platform | Покупки не доступны на этой площадке |
undefined | непредвиденная ошибка (смотрите консоль) |
Оставайтесь на связи
С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.
Сообщество GamePush в Telegram
: @gs_community.
Для ваших обращений e-mail
: [email protected]
Желаем вам успехов!