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

Внутриигровые покупки

Вы можете получать доход, предоставив пользователям возможность совершать покупки в игре. Например, дополнительное время на прохождение уровня или аксессуары для игрового персонажа. Для этого:

Портальная валюта

Ян (Yan) — это портальная валюта платформы Яндекс Игры для оплаты внутриигровых покупок. Яны хранятся на едином для всех игр балансе игрока, который можно пополнить с помощью банковских карт. Курс яна к рублю динамический.

к сведению

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

Пополнить баланс можно:

  • в шапке каталога;
  • в профиле игрока;
  • во время покупки в игре.

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

Совершать внутриигровые покупки могут как авторизованные на Яндексе пользователи, так и неавторизованные. Авторизоваться пользователь может непосредственно во время игры, в том числе и в момент совершения покупки.

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

Условия подключения

Требования к подключению покупок зависят от резиденства вашего юридического лица.

Для настройки и тестирования покупок необходимо подписать «Акт приема-передачи неисключительных прав на использование Игры».

После добавления покупок и публикации черновика игры отправьте письмо с запросом формы акта на почту games-partners@yandex-team.com. В письме обязательно укажите название и идентификатор (ID) игры.

В ответ на ваше письмо будет отправлена форма «Акт приема-передачи неисключительных прав на использование Игры». Эту форму необходимо заполнить, подписать и отправить скан (или фото хорошего качества) в ответ на наше письмо.

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

Процесс покупки

Активировать внутриигровую покупку можно следующим методом:

ysdk.payments.create_purchase(callback, options)

callback — function — callback вызванного метода. Имеет вид:

function(self, purchase: table|nil, signature: string|nil): nil
  • purchase: table — информация о покупке. Содержит свойства:
    • product_id: string — идентификатор товара.
    • purchase_token: string — токен для использования покупки.
    • developer_payload: string|nil — дополнительные данные о покупке.
  • signature: string|nil — данные о покупке и подпись для проверки подлинности игрока.

options — параметры метода. Содержит свойства:

  • id: string — идентификатор товара, который задан в консоли разработчика.
  • developer_payload: string — опциональный параметр. Дополнительная информация о покупке, которую вы хотите передавать на свой сервер (будет передана в параметре signature).
  • signed: boolean|nil — опциональный параметр. Предназначен для защиты игры от накруток.

Пример

function buy_item(id)
ysdk.payments.create_purchase(
function(self, purchase, signature)
if purchase then
print(purchase.product_id, signature)
end
end,
{ id, signed = true }
)
end

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

Чтобы узнать, какие покупки игрок уже совершил, используйте метод:

ysdk.payments.getPurchases(
callback: function,
options : {
signed: boolean|nil
}
)

callback — function — callback вызванного метода. Имеет вид:

function(self, purchase: Purchase[]|nil, signature: string|nil): nil
  • Purchase — информация о покупке. Содержит свойства:
    • product_id: string — идентификатор товара.
    • purchase_token: string — токен для использования покупки.
    • developer_payload: string|nil — дополнительные данные о покупке.
  • signature: string|nil — данные о покупке и подпись для проверки подлинности игрока.

Пример

function display_puchases()
ysdk.payments.get_purchases(function(self, purchases)
if purchases then
for k, v in pairs(purchases) do print(k, v) end
end
end)
end

Получение каталога всех товаров

Чтобы получить список доступных покупок и их стоимость, используйте метод ysdk.payments.getCatalog().

ysdk.payments.getCatalog(callback: function)

callback — function — callback вызванного метода. Имеет вид:

function(self, products: Product[]|nil): nil
  • products: table[] — информация о товарах. Содержит свойства:
    products = [
    {
    id: string,
    title: string,
    description: string,
    image_uri: string,
    price: string,
    price_value: string,
    price_currency_code: string,
    price_currency_image: {
    small: string,
    medium: string,
    svg: string
    }
    },
    ...
    ]

Пример

function display_shop()
ysdk.payments.get_catalog(function(self, products)
if products then
for k, v in pairs(products) do print(v.title, v.price, v.description) end
end
end)
end

Обработка покупки и начисление внутриигровой валюты

Существуют два типа покупок — постоянные (например, отключение рекламы) и используемые (например, внутриигровая валюта).

Для обработки постоянных покупок применяйте метод ysdk.payments.get_purchases().

Для обработки используемых покупок применяйте метод ysdk.payments.consume_purchase().

ysdk.payments.consume_purchase(purchase_token: string)
осторожно

После вызова метода ysdk.ayments.consume_purchase() обработанная покупка удаляется без возможности восстановления. Поэтому сначала модифицируйте данные игрока методами ysdk.player.set_stats() или ysdk.player.increment_stats(), а затем обрабатывайте покупку.

Пример

function buy_item(id)
ysdk.payments.create_purchase(
function(self, purchase)
if purchase then
ysdk.payments.consume_puchase(purchase.purchase_token)
end
end,
{ id }
)
end