Реализация в приложении покупки с Unity IAP APIs
Используйте Unity покупку в приложении (IAP) APIs для того чтобы инициализировать покупку, сопоставить магазин центра партнера Майкрософта IDs к продуктам которые вы хотите продать, и обработать покупки в вашей игре.
Перед реализацией рабочего процесса покупки выполните Настройка центра партнеров Microsoft и Unity Editor для установки необходимых пакетов и настройки продуктов.
Важно: Инициализируйте XGameRuntime перед тем, как вызывать IAP. Unity IAP требует этого для поддержки Xbox.
Для реализации покупок выполните следующие действия:
- Инициализация системы закупок.
- Определите ваши продукты.
- Получить подробную информацию по каждому продукту.
- Получить существующие покупки.
- Обработка запросов на покупку.
- Подтвердите доступ к приобретенному продукту.
1. Инициализация системы закупок
Дополнительные сведения см. в документации Unity IAP по Инициализация покупки в приложении.
2. Определите ваши продукты
Дополнительные сведения см. в документации Unity IAP по Определение продуктов программно.
Примечание: Каждый продукт в магазине Сбокс имеет свой собственный магазин ID созданный центром партнера Майкрософта когда вы создаете дополнения. Введите этот ID в ProductDefinition как storeSpecificId.
Магазин Сбокс только
Если ваша игра предназначена только для магазина Xbox, создайте ProductDefinition с магазином продукта ID как storeSpecificId:
ICatalogProvider catalogProvider = new CatalogProvider();
var products = new List<ProductDefinition>
{
new("com.mygame.coins100", "9PEXAMPLE001", ProductType.Consumable),
new("com.mygame.extralevel", "9NEXAMPLE002", ProductType.NonConsumable)
};
catalogProvider.AddProducts(products);
Несколько магазинов
Если ваша игра поддерживает несколько магазинов и вы хотите, чтобы один и тот же продукт был доступен в этих магазинах, используйте сопоставление StoreSpecificIds:
ICatalogProvider catalogProvider = new CatalogProvider();
var products = new List<ProductDefinition>
{
new("com.mygame.coins100", ProductType.Consumable),
new("com.mygame.extralevel", ProductType.NonConsumable)
};
var coinIds = new StoreSpecificIds
{
{ "9PEXAMPLE001", XboxStore.Name }
};
var extraLevelIds = new StoreSpecificIds
{
{ "9NEXAMPLE002", XboxStore.Name }
};
var storeSpecificIds = new Dictionary<string, StoreSpecificIds>
{
{ "com.mygame.coins100", coinIds },
{ "com.mygame.extralevel", extraLevelIds }
};
catalogProvider.AddProducts(products, storeSpecificIds);
3. Получить подробную информацию по каждому продукту
Дополнительные сведения см. в документации IAP по Получение продуктов.
Примечание: Рекомендуется получать продукты с помощью ICatalogProvider.FetchProducts, так как StoreSpecificIds уже сопоставлены при определении продуктов. Если вы хотите получать продукты с помощью StoreController.FetchProducts, создайте различные списки ProductDefinition для каждого магазина. Следующий пример кода демонстрирует, как создать списки продуктов на основе магазина:
var products = new List<ProductDefinition>();
var storeName = DefaultStoreHelper.GetDefaultStoreName();
if (storeName == XboxStore.Name)
{
products.Add(new ProductDefinition("com.mygame.coins100", "9PEXAMPLE001", ProductType.Consumable));
products.Add(new ProductDefinition("com.mygame.extralevel", "9NEXAMPLE002", ProductType.NonConsumable));
}
else
{
products.Add(new ProductDefinition("com.mygame.coins100", ProductType.Consumable));
products.Add(new ProductDefinition("com.mygame.extralevel", ProductType.NonConsumable));
}
var storeController = UnityIAPServices.StoreController();
storeController.FetchProducts(products);
4. Извлечение существующих закупок
Дополнительные сведения см. в документации Unity IAP по Получить покупки.
5. Обработка заявок на закупки
Дополнительные сведения см. в документации IAP о покупках.
6. Подтвердите доступ к приобретенному продукту
Используйте проверку прав, чтобы подтвердить, что пользователь имеет действительный доступ к приобретенному продукту. Дополнительные сведения см. в документации Unity IAP API по CheckEntitlement(Product).
После завершения внедрения проверьте рабочий процесс покупки в песочнице. Вы можете дополнительно проверить покупки в приложении с Cloud Code, чтобы защитить свою игру от поддельных или поддельных покупок.
Ограничения
Unity IAP для магазина Сбокс не поддерживает следующие особенности:
- Управление подписки: Пользователи должны управлять их подписками через их учетную запись Майкрософта.
- Приобретения пропуска Сбокс Game: связанные покупки пропуска Сбокс Game недоступны.
- Поддержка нескольких магазинов: магазины, кроме магазина Xbox на Windows, не поддерживаются.
- Изменение учетной записи пользователя во время игры: Unity IAP не обновляет права, если пользователь меняет учетные записи во время игры. Переинициализация системы покупок для получения продуктов и покупок для нового пользователя.
Дополнительные ресурсы
- Начните с Unity IAP
- Типы продукции
- Unity IAP сценарии API ссылка