Перейти к основному содержимому

Платежи

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

  • Yandex Games
  • VK Games
  • VK Play
  • OK Games
  • SmartMarket
  • Площадки без поддержки
  • CrazyGames
  • GamePix
  • GameDistribution
  • GameMonetize
  • Poki
  • Для проверки поддержки покупок на площадке в SDK используйте свойство gp.payments.isAvailable.

    // Проверка поддержки покупок на площадке
    if (gp.payments.isAvailable) {
    // можно оформлять покупки
    }

    Правила платежей

    Придерживайтесь правил для покупок.

    Существуют два типа платежей: одноразовые и постоянные.

    Пример одноразовой покупки:

    • Купить 1000 золота
    • Купить сундук
    • Восстановить жизни
    tip

    Одноразовые покупки необходимо израсходовать (консумировать) сразу же.

    Пример постоянной покупки:

    • Отключение рекламы
    • 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) => {});

    Поля покупки

    ПолеТипОписаниеПример
    idnumberID покупки115
    tagstringНеобязательный тег для помощи при выборе. Вы можете использовать его вместо IDVIP
    namestringНазвание, переведенное на язык пользователяVIP Статус
    descriptionstringОписание, переведенное на язык пользователяБез рекламы, награда x2
    iconstringСсылка на иконку размером 256x256Пример ссылки
    iconSmallstringСсылка на иконку размером 64x64Пример ссылки
    pricenumberЦена покупки199
    currencystringКод валютыYAN OK VOTE RUB GP
    currencySymbolstringСимвол валюты (переведенный на язык пользователя и отформатированный, если нужно)Голос, Голоса, Голосов
    isSubscriptionbooleanПокупка является подпискойпо-умолчанию false
    periodnumberДлительность подписки в днях7, 30, 90
    trialPeriodnumberДлительность триального периода в днях (за это время пользователь может без списания средств отменить подписку)0, 3, 7, 30

    Поля покупки игрока

    ПолеТипОписаниеПример
    productIdnumberID Покупки115
    payloadObjectДанные от покупки на платформе (например, ID заказа или токен){"order_id": 213}
    createdAtstringДата покупки, формат ISO 8601 UTC2022-12-01T04:52:26+0000
    giftbooleanПокупка была подарена разработчиком игрыfalse
    subscribedbooleanАктивна ли подписка на эту покупкуtrue
    expiredAtstringДата завершения подписки, формат ISO 8601 UTC2022-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]

    Желаем вам успехов!