Содержание
Payments
Для платформы Яндекс Игры прочитайте раздел их документации Внутриигровые покупки. Там необходимо отправить запрос о подключении и активировать тестовые покупки.
При использовании внутриигровых покупок на платформе Яндекс Игры необходимо сохранять прогресс в облако. По этому требуется использование модуля Storage или PlayerStats.
После добавления товаров в каталог покупок можно приступать к настройке покупок в Unity.
Симуляция отображения покупок в Unity Editor
Чтобы плагин симулировал получение каталога покупок в Unity Editor, настройте эту симуляцию в настройках модуля.
Purchases — это массив покупок для симуляции. Создайте или измените элементы массива и их параметры.
Готовое решение
Самый простой способ — использовать готовый префаб Payments Catalog из папки модуля Prefabs. Он автоматически отображает каталог всех покупок. Он создаёт экземпляры префаба из поля Purchase Prefab.
По умолчанию в данном поле ссылка на готовый префаб Purchase. Такой префаб должен иметь скрипт PurchaseYG
Скрипт PurchaseYG — отображает товар, все его данные. Можно использовать готовый префаб Purchase для отображения одного продука. Для этого необходимо заполнить поле ID. Настройте остальное по предпочтениям.
При использовании префабов PluginYG рекомендуется создавть свой префаб вариант для избежания проблем при обновлении плагина.
Активация покупки
Чтобы выдать продукт после его преобретиения, подпишитесь на событие YG2.onPurchaseSuccess
. Оно передаёт ID покупки.
Сохранять покупки рекомендуется в PlayerStats.
Есть событие неуспешной покупки YG2.onFailedPurchased
, также передаёт ID покупки.
Обратите внимание на скрипт Receiving Purchase Example, он содержит следующий пример:
Консумирование (обязательно)
Может произойти ситуация, ошибка, при которой деньги будут заплачены, но в игре товар не будет добавлен. Это называется необработанная покупка и её нужно консумировать.
При запуске игры необходимо проверять: есть ли необработанные покупки. Если есть, то консумировать их.
Консуимровать — это значит выдать необработанное вознаграждение и сказать об этом платформе. Методы консумирования:
YG2.ConsumePurchases
— консумировать все покупки
YG2.ConsumePurchaseByID
— консумировать одну покупку, необходимо передать ID
Оба метода имеют перегрузку onPurchaseSuccess
.
По умолчанию данный параметр равен true — значит для необработанных покупок будет вызвано событие успешной покупки (onPurchaseSuccess
).
При значении false — событие успешной покупки не будет вызвано, в таком случае необходимо самостоятельно выдать продукт. Подробнее будет ниже.
Если ваши скрипты в момент консумирования будут подписаны на метод получения вознаграждения, то оно будет получено.
Вы можете просто воспользоваться компонентом ConsumePurchasesYG. Повешайте его на какой-либо объект и когда он будет активен, скрипт проверит и консумирует необработанные покупки если они есть, и вызовет для них событие вознаграждения. По умолчанию на префабе Payments Catalog уже весит скрипт ConsumePurchasesYG.
Остальное API
После получения данных о покупках от SDK платформы — выполняется метод onGetPayments
. Он используется для обновления информации о покупках, вызывается при старте игры.
Метод YG2.BuyPayments(string id)
— открыть окно, в котором можно совершить покупку.
Если подключить пространство имён YG.Utils.Pay
, то появится доступен к классу Purchase
. Он имеет следующие поля:
id
— идентификатор продукта.
title
— название продукта.
description
— описание продукта.
imageURIimageURI
— URL изображения продукта.
price
— стоимость продукта в формате <цена> <код валюты>
.
priceValue
— стоимость продукта в формате <цена>
.
priceCurrencyCode
— код валюты.
currencyImageURL
— адрес иконки валюты.
consumed
— использована ли покупка. true
— использована, false
— не использована.
Поле YG2.purchases
— массив всех продуктов, тип Purchase[]
.
Метод YG2.PurchaseByID
— принимает ID продукта, по нему выдаёт информацию о покупки (возвращает экземпляр класса Purchase
).
Поле YG2.langPayments
— язык в формате «код страны».
В YG2.player
(требуется модуль Autorization) имеется интересное поле payingStatus
: