У нас есть продукт UWP в Магазине Microsoft.Продукт имеет ряд дополнений для подписки.Пользователи совершают внутриигровые покупки подписных дополнений. РЕДАКТИРОВАТЬ Наш код выложен в Microsoft Docs Включить надстройки подписки для вашего приложения
StorePurchaseResult result = await product.RequestPurchaseAsync();
if (result.Status == StorePurchaseStatus.Succeeded)
Результат возвращает StorePurchaseStatus.Succeeded
.Microsoft взяла деньги пользователя за дополнение подписки.Пока все хорошо.
Мы получаем список продуктов, подобный этому
string[] productKinds = { "Durable" };
List<String> filterList = new List<string>(productKinds);
StoreProductQueryResult queryResult = await storeContext.GetAssociatedStoreProductsAsync(filterList);
productList = queryResult.Products.Values.ToList();
Затем перебираем
foreach (StoreProduct storeProduct in products)
{
if (storeProduct.IsInUserCollection)
...
}
, но storeProduct.IsInUserCollection
всегда возвращает false.Microsoft приняла оплату за надстройку, но не добавила ее в набор продуктов пользователя, поэтому мы не можем подтвердить, что они заплатили за надстройку.
Где мы ошиблись?
РЕДАКТИРОВАТЬ 2 Следуя совету @lukeja, я запустил этот метод
async Task CheckSubsAsync()
{
StoreContext context = context = StoreContext.GetDefault();
StoreAppLicense appLicense = await context.GetAppLicenseAsync();
foreach (var addOnLicense in appLicense.AddOnLicenses)
{
StoreLicense license = addOnLicense.Value;
Debug.WriteLine($"license.SkuStoreId {license.SkuStoreId}");
}
}
Это выводит только одну надстройку.Бесплатное дополнение.У нас есть 16 надстроек, только одна из которых бесплатна.
Почему не возвращается ни одна из наших платных подписок на надстройки?
РЕДАКТИРОВАТЬ 3 appLicense.AddOnLicenses
включает в себя только лицензии на дополнения для текущего пользователя, но не все дополнения для приложения.Пример кода, предоставленный @lukeja, работает, как и ожидалось, при запуске в контексте пользователя, оплатившего подписку.