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

Платежи

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

  • Yandex Games
  • VK Games
  • VK Play
  • OK Games
  • SmartMarket
  • Kongregate
  • Площадки без поддержки
  • CrazyGames
  • GamePix
  • GameDistribution
  • GameMonetize
  • WG Playground
  • PlayDeck
  • Google Play
  • Для проверки поддержки покупок на площадке в 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

    Тестирование

    В разделе "Разработчики" наведите на свое имя, всплывет подсказка "Роли пользователя", кликните и выставите в открывшемся окне галку "Тестировщик платежей".

    Затем перейдите в "Настройки" > "Персональные настройки" > включите галку "Платежи: тестовый режим".

    Kongregate

    Настройка

    Необходимо заполнить "API Callback URL" в секции Edit your game. Указать: https://gamepush.com/api/kongregate/payments

    Тестирование

    Вы можете тестировать сразу со своего аккаунта разработчика. Платежи с аккаунта разработчика стоят 0 Kreds.

    SmartMarket

    Настройка

    Необходимо заполнить Webhook смартапа в настройках приложения. Указать: https://gamepush.com/api/smartmarket/webhook

    Тестирование

    Отстутствует. Оплата по карте. Выставите покупкам цену в 1 Р. Цену можно поменять в любой момент в панели.

    Локальное тестирование

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

    Покупка продукта

    +1-3 Request

    Чтобы приобрести покупку, вам необходимо передать 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;

    Расходование (консумирование) покупки

    +1 Request

    Чтобы использовать покупку, вам необходимо передать 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;

    Списки товаров и покупок

    FREE

    Списки загружаются при старте игры и доступны сразу после инициализации SDK.

    Получить список товаров:

    gp.payments.products;

    Получить список покупок игрока:

    gp.payments.purchases;

    Получение списка продуктов

    FREE Устарело
    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]

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