Не работает покупка для XBox и Microsoft Store
Unity3D. Xbox. Реализовал покупку лицензии для игры. В Microsoft Store для desctop Windows работает нормально(и при установке из магазина и из под Visual Studio, в том числе и в debug сборке), на XBox НЕ работает и в dev и retail режимах. Лицензия(покупка) в сторе уже с неделю. Для эксперимента выложил сборку в открытый доступ(сутки ещё не прошли). Повторюсь: на десктопе покупка работает без проблем, на XBox-е не работает. Не отрабатывает этот код(срабатывает проверка, в обоих вариантах):
// Получить информацию о продукте в магазине приложений
StoreProductResult productResult = await context.GetStoreProductForCurrentAppAsync();
if (productResult == null || productResult.Product == null)
//if (productResult.ExtendedError != null)
{
// Пользователь может быть отключен или может быть какой-то другой сбой сервера
purchaseCallback?.Invoke(XBoxIAPStatus.NotGetStoreProduct, productResult.ExtendedError);
return;
}
Весь код:
public static async void PurchaseFullLicense(Action<XBoxIAPStatus, Exception> purchaseCallback, Action<XBoxIAPStatus> licChanged)
{
#if ENABLE_IL2CPP && UNITY_WSA_10_0
licenseChanged = licChanged;
if (context == null)
{
context = StoreContext.GetDefault();
// Подписываемся на событие изменения лицензии
context.OfflineLicensesChanged += context_OfflineLicensesChanged;
}
if (context == null)
{
purchaseCallback?.Invoke(XBoxIAPStatus.NoInitContext, null);
return;
}
// Получить информацию о продукте в магазине приложений
StoreProductResult productResult = await context.GetStoreProductForCurrentAppAsync();
if (productResult == null || productResult.Product == null)
//if (productResult.ExtendedError != null)
{
// Пользователь может быть отключен или может быть какой-то другой сбой сервера
purchaseCallback?.Invoke(XBoxIAPStatus.NotGetStoreProduct, productResult.ExtendedError);
return;
}
// Покупка полной лицензии ...
StoreAppLicense license = await context.GetAppLicenseAsync();
if (license != null && appLicense.IsActive && license.IsTrial)
{
// Пока демо версия
StorePurchaseResult result = await productResult.Product.RequestPurchaseAsync();
if (result.ExtendedError != null)
{
// Ошибка: print result.ExtendedError.Message
purchaseCallback?.Invoke(XBoxIAPStatus.NotRequestPurchase, null);
return;
}
// Покупка прошла. Результат:
switch (result.Status)
{
case StorePurchaseStatus.AlreadyPurchased:
// Вы уже купили это приложение и имеете полностью лицензированную версию
purchaseCallback?.Invoke(XBoxIAPStatus.AlreadyPurchased, null);
return;
case StorePurchaseStatus.Succeeded:
// Лицензия будет обновлена автоматически с помощью события StoreContext.OfflineLicensesChanged
purchaseCallback?.Invoke(XBoxIAPStatus.Succeeded, null);
return;
case StorePurchaseStatus.NotPurchased:
// Товар не был куплен, возможно, он был отменен
purchaseCallback?.Invoke(XBoxIAPStatus.NotPurchased, null);
return;
case StorePurchaseStatus.NetworkError:
// Сетевая ошибка
purchaseCallback?.Invoke(XBoxIAPStatus.NetworkError, null);
return;
case StorePurchaseStatus.ServerError:
// Ошибка сервера
purchaseCallback?.Invoke(XBoxIAPStatus.ServerError, null);
return;
default:
// Не определённая ошибка
purchaseCallback?.Invoke(XBoxIAPStatus.UnDefined, null);
return;
}
}
else
// Вы уже купили это приложение и имеете полностью лицензированную версию
purchaseCallback?.Invoke(XBoxIAPStatus.LicenseFull, null);
#else
purchaseCallback?.Invoke(XBoxIAPStatus.NotXBoxPlatform, null);
#endif
#pragma warning restore 1998
}
Вопрос: почему не работает на XBoxe?