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

Подписки

Обрабатывайте рекуррентные платежи игроков.

Обзор

Сервис позволяет вашим игрокам оформлять подписки. Например, покупать VIP-доступ, требующий ежемесячного продления. Платежи за товары и платежи за подписки различаются периодичностью списания средств со счета пользователя. Разовые платежи списываются один раз за одну покупку, а платежи за подписки — с некоторой периодичностью.

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

Таким образом, подписка по своей сути является товаром, который имеет такие поля как:

ПолеТипОписаниеПример
isSubscriptionbooleanПокупка является подпискойпо умолчанию false
periodnumberДлительность подписки в днях7, 30, 90
trialPeriodnumberДлительность триального периода в днях (за это время пользователь может без списания средств отменить подписку)0, 3, 7, 30

В SDK вам доступна информация по купленным подпискам игрока, они расширяют стандартную покупку.

ПолеТипОписаниеПример
subscribedbooleanПроверка активности подписки на покупкуtrue
expiredAtstringДата завершения подписки, формат ISO 8601 UTC2022-12-01T04:52:26+0000

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

  • Вконтакте
  • Одноклассники
  • Площадки без поддержки
  • CrazyGames
  • GamePix
  • GameDistribution
  • GameMonetize
  • SmartMarket
  • VK Play
  • Яндекс.Игры
  • WG Playground
  • Kongregate
  • PlayDeck
  • Google Play
  • Telegram
  • билайн
  • Фотострана
  • Y8
  • CoolMathGames
  • Android (альтернативные сторы)
  • Web (свои сайты)
  • Поддерживаемые площадки (разовые подписки)

  • Яндекс.Игры
  • VK Play
  • Kongregate
  • Telegram
  • билайн
  • Фотострана
  • Площадки без поддержки
  • CrazyGames
  • GamePix
  • GameDistribution
  • GameMonetize
  • Одноклассники
  • SmartMarket
  • Вконтакте
  • WG Playground
  • PlayDeck
  • Google Play
  • Y8
  • CoolMathGames
  • Android (альтернативные сторы)
  • Web (свои сайты)
  • Для проверки поддержки подписок на площадке в SDK используйте свойство isSubscriptionsAvailable.

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

    Период подписки и тестовый период

    Период указывается в днях. Для тестового периода доступны: 0, 3, 7 и 30 дней. Тестовый период - это период, когда с игрока не снимаются деньги и он может безвозмездно отменить подписку. По завершению тестового периода площадка списывает средства.

    Срок действия подписки можно указать в 7, 30 и 90 дней. Подписка автоматически продлится при завершении периода, если она не была отменена пользователем (игроком).

    tip

    Предложенные периоды в 7, 30 и 90 дней обусловлены единой реализацией подписок на всех площадках. Некоторые площадки разрешают только такие значения.

    Работа с подписками

    Подключение подписок на площадках

    Настройки площадок описаны в разделе платежей, ничего с технической стороны дополнительно не требуется. Обратите внимание на особенности работы с площадками.

    Добавление подписки

    Для включения подписки нужно выбрать покупку и перевести ее в статус подписки с помощью тумблера "Включить подписку".

    Теперь вы можете оформлять подписку на этот товар.

    tip

    Если купить подписку через метод покупки purchase, то она будет оформлена как подписка без автоматического продления и израсходуется через указанный в покупке период

    Оформление подписки

    +1-3 Request

    Для оформления подписки воспользуйтесь методом subscribe.

    // По ID
    gp.payments.subscribe({ id: 12 });

    // По тегу
    gp.payments.subscribe({ tag: 'VIP' });

    Результат вызова можно узнать предварительно подписавшись на события subscribe.

    // Игрок оформил подписку
    gp.payments.on('subscribe', ({ product, purchase }) => {});

    // Подписка не оформлена
    gp.payments.on('error:subscribe', (error) => {});

    При асинхронном использовании:

    const result = await gp.payments.subscribe({ id: 17541 });

    /**
    * Данные продукта
    * @type {Product}
    */
    result.product;

    /**
    * Данные покупки
    * @type {PlayerPurchase}
    */
    result.purchase;

    Отмена подписки

    +0-1 Request

    У игрока должна быть возможность отписаться от подписки. Для отмены подписки используйте метод unsubscribe

    tip

    Отмена подписки не значит удаление покупки игрока. Покупка будет действовать до окончания периода.

    // По ID
    gp.payments.unsubscribe({ id: 12 });

    // По тегу
    gp.payments.unsubscribe({ tag: 'VIP' });

    Результат вызова можно узнать предварительно подписавшись на события unsubscribe

    // Игрок отменил подписку
    gp.payments.on('unsubscribe', ({ product, purchase }) => {});

    // Не удалось отменить подписку
    gp.payments.on('error:unsubscribe', (error) => {});

    При асинхронном использовании:

    const result = await gp.payments.unsubscribe({ id: 17541 });

    /**
    * Данные продукта
    * @type {Product}
    */
    result.product;

    /**
    * Данные покупки
    * @type {PlayerPurchase}
    */
    result.purchase;

    Возобновление подписки

    +0-3 Request

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

    Тестирование подписок

    Мы подготовили для вас удобный инструмент тестирования подписок без необходимости тестировать на площадках напямую.

    Тестовые подписки автоматически продлеваются по истечению срока. Для тестирования истечения подписки вы можете в панели управления выставить дату истечения подписки на прошлый день. Каждые 10 минут мы удаляем просроченные подписки.

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

    Интерфейс изменения время истечения подписки:

    Особенности работы с площадками

    Разовые подписки

    На Яндекс.Играх, VK Play и Kongregate нет функционала подписок, однако мы обеспечили единую логику работы. Можно оформить подписку, которая не будет продлена, а после завершения периода подписки будет удалена. Это будет работать как разовая покупка, но с автоматическим консумированием при истечении.

    Одноклассники

    Перед тем как использовать подписки необходимо подать заявку в техподдежку с указанием подробной инофорации о товарах, на которые нужно оформить подписку. В идентификаторе товара укажите ID товара в админке GamePush.

    tip

    Не удаляйте опубликованные подписки и не меняйте в них информацию о периодах. Данные хранятся на стороне Одноклассников. Сначала внесите изменения в Одноклассниках.

    Примеры реализации

    Проверка товара. Может возникнуть ситуация, когда необходимо проверить факт того, что товар является подпиской. И в зависимости от этой проверки - купить товар, либо оформить на него подписку (если он isSubscription). Реализация данной проверки показана ниже:

    if (product.isSubscription) {
    gp.payments.subscribe({ id: product.id });
    } else {
    gp.payments.purchase({ id: product.id });
    }

    Покупка. Пример явной покупки подписки по идентификатору id:

    gp.payments.subscribe({ id: 12 });

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

    $form.setText(`Бесплатно первые ${product.trialPeriod} дней`);
    $form.setText(`Затем ${product.price} ${product.currencySymbol} каждые ${product.period} дней`);

    Уведомление пользователя. Пример уведомления пользователя о приближении события завершения подписки:

    const purchase = gp.payments.getPurchase('VIP');

    const timeBetween = new Date(purchase.expiredAt).getTime() - new Date(gs.serverTime).getTime();
    const daysBetween = timeBetween / (1000 * 3600 * 24);

    if (daysBetween <= 3 && !purchase.subscribed) {
    alert('У вас осталось 3 дня подписки, вы ее не возобновили');
    }

    Оставайтесь на связи

    С другими разделами документации вы можете ознакомиться здесь. Для начала работы вы можете ознакомиться с нашими туториалами.

    Сообщество GamePush в Telegram: @gs_community.

    Для ваших обращений e-mail: [email protected]

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