如何验证应用内购买交易本身成功的Windows Phone 8

本文关键字:交易 成功 Phone Windows 何验证 验证 应用 | 更新日期: 2023-09-27 18:08:31

我有这个代码为我的应用内购买

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);
            }
        }
    }

如何验证应用内购买交易本身成功的Windows Phone 8

在调用购买方法后,请务必检查许可证是否有效,然后再进行完整的装货。如果是可消费类型,则调用ReportProductFulfillment()方法。

CurrentApp.LicenseInformation.ProductLicenses[key].IsActive

顺便说一句,在你的代码中,inclereceipt值被设置为false -将保持'收据'始终为空