Unity IAP 5: Что изменилось по сравнению с IAP 4 и как осуществить миграцию?

Aug 5, 2026|3 мин.
Daniel Godley
Daniel Godley - Unity
Senior Content Marketing Manager
Миграция IAP 4 на 5

В пятой версии Unity In-App Purchasing (IAP) архитектура IAP 4, основанная на интерфейсах, заменена единым классом StoreController, управляемым событиями. Для миграции требуются изменения в коде: удаляются интерфейсы IStoreListener и IDetailedStoreListener, а также ConfigurationBuilder, инициализация становится асинхронной, а обработка покупок осуществляется через события жизненного цикла. IAP 5 также позволяет монетизировать контент с веб-сайтов на мобильные устройства, использовать собственные платежные системы (такие как Stripe и Coda) и создавать автономные интернет-магазины.

Что нужно знать о Unity IAP 5

  • В Unity IAP 5 удалены интерфейсы IStoreListener и IDetailedStoreListener, необходимые в IAP 4.
  • Вся логика покупок в Unity IAP 5 осуществляется через один класс: Метод UnityIAPServices.StoreController() генерирует события на протяжении всего жизненного цикла покупки.
  • Компонент ConfigurationBuilder из IAP 4 удален. Определения продуктов передаются непосредственно в функцию FetchProducts() в виде объектов ProductDefinition, содержащих идентификатор и тип продукта.
  • В IAP 5 устаревший класс IDs переименован в StoreSpecificIds.
  • Инициализация Unity IAP 5 является асинхронной и требует предварительной инициализации Unity Gaming Services с помощью await UnityServices.InitializeAsync().
  • В IAP 5 чеки Apple автоматически проверяются через StoreKit 2, прежде чем попасть к разработчику. Для проверки в Google Play требуется лицензионный ключ Google разработчика, зашифрованный с помощью инструмента, входящего в пакет IAP .
  • Поддержка StoreKit 1 возвращается в IAP 5 для устройств, которые не могут обновиться до iOS 15.0 (устройства старше iPhone 6s).
  • В комплект поставки входит рабочая эталонная реализация: минимальный пример кода для IAP (скрипт PaywallManager), доступный в менеджере пакетов Unity .
Видео

В Unity IAP 5 внесены существенные архитектурные улучшения, структурные изменения в инициализации и упрощены рабочие процессы получения данных о продукте. Кроме того, это открывает путь для появления передовых функций экосистемы в будущем, включая поставщиков прямых платежей (таких как Stripe и Coda) и интернет-магазины, которые позволят вам лучше ориентировать продажи и оставлять себе большую долю выручки от покупок. Независимо от того, переходите ли вы с Unity IAP 4 на IAP 5 или впервые настраиваете мобильные внутриигровые покупки в игровом движке Unity , это пошаговое руководство охватывает весь процесс внедрения.

Сравнение Unity IAP 4 и IAP 5
Беспокойство

Архитектура

Unity IAP 4

Интерфейсы IStoreListener / IDetailedStoreListener с фиксированными функциями обратного вызова

Unity IAP 5

Единственный класс StoreController с событиями жизненного цикла

Идентификаторы магазинов

Unity IAP 4

новые идентификаторы()

Unity IAP 5

new StoreSpecificIds()

Настройка продукта

Unity IAP 4

Продукты упаковываются в ConfigurationBuilder перед инициализацией.

Unity IAP 5

Объекты ProductDefinition могут передаваться непосредственно в функцию FetchProducts() в любое время.

Инициирование покупки

Unity IAP 4

Вызов осуществляется с использованием строки идентификатора продукта.

Unity IAP 5

Функция PurchaseProduct(product) вызывается с полным объектом продукта.

Обработка закупок

Unity IAP 4

Обратный вызов ProcessPurchas через IStoreController

Unity IAP 5

Событие OnPurchasePending(Order), подтверждение с помощью ConfirmPurchase(pendingOrder)

Проверка чека (Apple)

Unity IAP 4

Ручная кроссплатформенная проверка

Unity IAP 5

Проверено с помощью StoreKit 2

Обработчики покупок в пользовательском интерфейсе

Unity IAP 4

на основе идентификатора продукта

Unity IAP 5

Без изменений — существующие обработчики пользовательского интерфейса продолжают работать.

Как перейти с Unity IAP 4 на IAP 5

Миграция проходит в четыре этапа:

Инициализировать и подключиться. Инициализируйте Unity Gaming Services, получите объект StoreController, подпишитесь на его события и вызовите Connect() для доступа к Google Play или Apple App Store. Используйте OnStoreConnected и OnStoreDisconnected для переключения интерфейса покупки.

Получить товары. Создайте объект List из каталога товаров, IAP приложения, в редакторе или в коде (например, new ProductDefinition("gem_chest_01", ProductType.Consumable)) и передайте его в функцию FetchProducts(). Магазин отображает локализованные цены и описания.

Получить информацию о незавершенных покупках. Вызовите функцию FetchPurchases() для восстановления прерванных или отложенных транзакций. Ожидающие заказы поступают через событие OnPurchasePending, но разработчикам также следует обрабатывать orders.PendingOrders, поскольку в некоторых версиях iOS ожидающие события могут быть пропущены. На этом этапе можно повторно активировать подтвержденные товары, не являющиеся расходными материалами, и подписки.

Покупка, предоставление, подтверждение. Вызовите PurchaseProduct(product). В методе OnPurchasePending предоставьте товар, подтвердите получение и вызовите метод ConfirmPurchase(pendingOrder). Обрабатывайте ошибки в методе OnPurchaseFailed — отмена покупки пользователем не требует сообщения, другие ошибки должны отображаться плееру.

Процесс покупки IAP в Unity 5

Используйте представленную ниже инфографику, чтобы ознакомиться со всем процессом покупки Unity IAP5, включая новые функции, интернет-магазины, каталоги и платежные системы.

Процесс покупки IAP в Unity

Скачать PDF-файл высокого разрешения можно здесь.

Распространенные ошибки при обновлении до IAP 5

  • Дублирование заказов: один и тот же заказ может появиться как через OnPurchasePending, так и через ручную обработку ожидающего заказа. Отслеживайте обработанные транзакции в HashSet (заполненном из OnPurchasesConfirmed) и проверяйте его перед предоставлением подтверждения.
  • Одновременные покупки: отключите кнопки покупки во время обработки заказа, чтобы предотвратить повторные запросы.
  • Утечки информации о событии: IAP 5 работает на основе событий — отписка от всех событий StoreController происходит при уничтожении менеджера закупок.
  • В StoreKit 1 покупки приостановлены: на устройствах с версиями iOS ниже 15 неподтвержденные покупки могут заблокировать возможность повторной покупки того же товара. Рекомендуется использовать бэкэнд, который отслеживает и обрабатывает эти покупки.

Проверка на стороне сервера

Идентификаторы транзакций из заказов IAP 5 могут быть отправлены в Unity Cloud Code для проверки на стороне сервера, а предметы предоставляются игрокам через Unity Economy.

Узнайте больше об интеграции Unity IAP5 →