icon

Payments

Для платформы Яндекс Игры прочитайте раздел их документации Внутриигровые покупки. Там необходимо отправить запрос о подключении и активировать тестовые покупки.
При использовании внутриигровых покупок на платформе Яндекс Игры необходимо сохранять прогресс в облако. По этому требуется использование модуля Storage или PlayerStats.
После добавления товаров в каталог покупок можно приступать к настройке покупок в Unity.

Симуляция отображения покупок в Unity Editor

Чтобы плагин симулировал получение каталога покупок в Unity Editor, настройте эту симуляцию в настройках модуля.
Purchases — это массив покупок для симуляции. Создайте или измените элементы массива и их параметры.
icon

Готовое решение

Самый простой способ — использовать готовый префаб Payments Catalog из папки модуля Prefabs. Он автоматически отображает каталог всех покупок. Он создаёт экземпляры префаба из поля Purchase Prefab.
По умолчанию в данном поле ссылка на готовый префаб Purchase. Такой префаб должен иметь скрипт PurchaseYG

Скрипт PurchaseYG — отображает товар, все его данные. Можно использовать готовый префаб Purchase для отображения одного продука. Для этого необходимо заполнить поле ID. Настройте остальное по предпочтениям.
icon

Префаб необходимо поместить в Canvas объект.
При использовании префабов PluginYG рекомендуется создавть свой префаб вариант для избежания проблем при обновлении плагина.
Что такое префаб вариант?

Активация покупки

Чтобы выдать продукт после его преобретиения, подпишитесь на событие YG2.onPurchaseSuccess. Оно передаёт ID покупки.
Сохранять покупки рекомендуется в PlayerStats.

Есть событие неуспешной покупки YG2.onFailedPurchased, также передаёт ID покупки.

Обратите внимание на скрипт Receiving Purchase Example, он содержит следующий пример:

Обратите внимание на скрипт Receiving Purchase Example, он содержит пример:
private void OnEnable()
{
    YG2.onPurchaseSuccess += SuccessPurchased;
    YG2.onPurchaseFailed += FailedPurchased;
}

private void OnDisable()
{
    YG2.onPurchaseSuccess -= SuccessPurchased;
    YG2.onPurchaseFailed -= FailedPurchased;
}

private void SuccessPurchased(string id)
{
    // Ваш код для обработки покупки, например:
	string coinsKey = "coins";
	int coins = YG2.GetState(coinsKey);

	if (id == "50")
		YG2.SetState(coinsKey, coins + 50);
	else if (id == "250")
		YG2.SetState(coinsKey, coins + 250);
	else if (id == "1500")
		YG2.SetState(coinsKey, coins + 1500);
}

private void FailedPurchased(string id)
{
	// Покупка не была совершена
}

Консумирование (обязательно)

Может произойти ситуация, ошибка, при которой деньги будут заплачены, но в игре товар не будет добавлен. Это называется необработанная покупка и её нужно консумировать.
При запуске игры необходимо проверять: есть ли необработанные покупки. Если есть, то консумировать их.

Консуимровать — это значит выдать необработанное вознаграждение и сказать об этом платформе. Методы консумирования:
YG2.ConsumePurchases — консумировать все покупки
YG2.ConsumePurchaseByID — консумировать одну покупку, необходимо передать ID

Оба метода имеют перегрузку onPurchaseSuccess.
По умолчанию данный параметр равен true — значит для необработанных покупок будет вызвано событие успешной покупки (onPurchaseSuccess).
При значении false — событие успешной покупки не будет вызвано, в таком случае необходимо самостоятельно выдать продукт. Подробнее будет ниже.
Если ваши скрипты в момент консумирования будут подписаны на метод получения вознаграждения, то оно будет получено.

Вы можете просто воспользоваться компонентом ConsumePurchasesYG. Повешайте его на какой-либо объект и когда он будет активен, скрипт проверит и консумирует необработанные покупки если они есть, и вызовет для них событие вознаграждения. По умолчанию на префабе Payments Catalog уже весит скрипт ConsumePurchasesYG.

Проверье действительно ли при запуске игры необработанные покупки выдаются
В Яндекс Играх, в черновике игры — после совершения покупки не нажимайте на кнопку хорошо:drawingПерезагрузите страницу. После перезагрузки необработанные покупки должны быть обработаны и выданы.
Если вас не устраивает обработка покупки таким способом, сделайте свою реализацию. PluginYG2 предоставляет список необработанных покупок, об этом ниже в главе Остальное API.

Остальное API

После получения данных о покупках от SDK платформы — выполняется метод onGetPayments. Он используется для обновления информации о покупках, вызывается при старте игры.

Метод YG2.BuyPayments(string id) — открыть окно, в котором можно совершить покупку.

Если подключить пространство имён YG.Utils.Pay, то появится доступен к классу Purchase. Он имеет следующие поля:
id — идентификатор продукта.
title — название продукта.
description — описание продукта.
imageURIimageURIURL изображения продукта.
price — стоимость продукта в формате <цена> <код валюты>.
priceValue — стоимость продукта в формате <цена>.
priceCurrencyCode — код валюты.
currencyImageURL — адрес иконки валюты.
consumed — использована ли покупка. true — использована, false — не использована.

Поле YG2.purchases — массив всех продуктов, тип Purchase[].

Метод YG2.PurchaseByID — принимает ID продукта, по нему выдаёт информацию о покупки (возвращает экземпляр класса Purchase).

Поле YG2.langPayments — язык в формате «код страны».

В YG2.player (требуется модуль Autorization) имеется интересное поле payingStatus:icon