如何验证应用程序内购买交易本身成功的Windows Phone 8
问题描述:
我有我的应用程序内购买该代码如何验证应用程序内购买交易本身成功的Windows Phone 8
string receipt = await Store.CurrentApp.RequestProductPurchaseAsync(pID, false);
的文档指出此方法成功返回值,即使:
there's no network connection available
the user cancels out of the dialog
the user's authentication fails
You should treat a success result as indicating the async process completed without
errors. To ensure that the transaction itself was successful, check the
LicenseInformation element in the returned receipt.
在解锁购买功能之前,是否有快速验证特定物品收据的实际成功?目前如果没有错误,该功能将永远解锁,因为收据未经验证。
我的代码:
private async void inAppPurchase(string key)
{
if (!Store.CurrentApp.LicenseInformation.ProductLicenses[key].IsActive)
{
try
{
// The customer doesn't own this feature, so
// show the purchase dialog.
MockIAPLib.ListingInformation li = await Store.CurrentApp.LoadListingInformationAsync();
string pID = li.ProductListings[key].ProductId;
//purchase successful
string receipt = await Store.CurrentApp.RequestProductPurchaseAsync(pID, false);
//Check the receipt for
switch (key)
{
case "IsAdsVisibleSetting":
settings.IsAdsVisibleSetting = false;
break;
case "style_2":
fontFolder[key] = true;
settings.AllowedFontSetting = fontFolder;
break;
case "backgrounds_2":
backgroundGroups[key] = true;
settings.AllowedBackgroundGroupsSetting = backgroundGroups;
break;
case "backgrounds_3":
backgroundGroups[key] = true;
settings.AllowedBackgroundGroupsSetting = backgroundGroups;
break;
}
RenderStoreItems();
}
catch (Exception)
{
MessageBox.Show("Sorry, the in-app purchase was not completed because an error occurred.", "Purchasing Error", MessageBoxButton.OK);
}
}
}
答
购买方法调用后,一定要检查许可证是否活动面前完全缩绒货。如果是消费类型,请调用ReportProductFulfillment()方法。
CurrentApp.LicenseInformation.ProductLicenses[key].IsActive
顺便说一句,在您的代码中includeReceipt值设置为false - 将始终将'receipt'保留为空。