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