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

Платежи

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

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

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

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

    +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]

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