2013-04-11 32 views
0

我有我的应用程序内购买该代码如何验证应用程序内购买交易本身成功的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); 
      } 
     } 
    } 

回答

0

购买方法调用后,一定要检查许可证是否活动面前完全缩绒货。如果是消费类型,请调用ReportProductFulfillment()方法。

CurrentApp.LicenseInformation.ProductLicenses[key].IsActive 

顺便说一句,在您的代码中includeReceipt值设置为false - 将始终将'receipt'保留为空。

相关问题