使用In App购买在商店中购买商品

时间:2015-02-26 12:00:14

标签: c# xaml windows-phone-8.1

我只是想在我的演示程序中实现应用程序购买。我正在做以下代码。

  Guid product1TempTransactionId;
   async void BuyFirstProduct()
   {
       if (!LicenceInfo.ProductLicenses["test_coins10"].IsActive)
       {
           try
           {
               await CurrentAppSimulator.RequestProductPurchaseAsync("test_coins10",false);

               PurchaseResults purchaseResults = await CurrentAppSimulator.RequestProductPurchaseAsync("test_coins10");


               switch (purchaseResults.Status)
               {
                   case ProductPurchaseStatus.Succeeded:
                       product1TempTransactionId = purchaseResults.TransactionId;
                       Debug.WriteLine("Sucess" + product1TempTransactionId.ToString());
                       // Grant the user their purchase here, and then pass the product ID and transaction ID to currentAppSimulator.reportConsumableFulfillment
                       // To indicate local fulfillment to the Windows Store.
                       break;

                   case ProductPurchaseStatus.NotFulfilled:
                       //product1TempTransactionId = purchaseResults.TransactionId;
                       Debug.WriteLine("Fail");
                       break;
                   case ProductPurchaseStatus.NotPurchased:
                       Debug.WriteLine("Not Purchase");
                       break;
               }


           }
           catch (Exception e)
           {
               msg.Content = "" + e.ToString();
               msg.Title = "Error";
                 msg.ShowAsync();

           }

       }
       else
       {
           msg.Content = "You Already Have a This Pack";
           msg.Title = "Error";
           await msg.ShowAsync();
       }
   }

这里test_coins10是我的产品ID,它在App Store中注册。在此代码中我收到以下错误

操作尝试访问有效范围之外的数据(来自HRESULT的异常:0x8000000B)

虽然我只是写下面的代码

        await CurrentAppSimulator.RequestProductPurchaseAsync("test_coins10");

它的工作完美,但编译器始终不是购买块。

请注意,产品test_coins10是消耗品

如果有任何人有任何不同的想法,请回复。

1 个答案:

答案 0 :(得分:0)

参考: - Enable consumable in-app product purchases

为何选择例外?

您将获得该操作尝试访问有效范围(Exception from HRESULT: 0x8000000B)此异常之外的数据,因为: -

 await CurrentAppSimulator.RequestProductPurchaseAsync("test_coins10",false);

在新版本中不推荐使用此方法。因此你的例外。所以使用: -

CurrentAppSimulator.RequestProductPurchaseAsync("test_coins10");

为何选择NotPurchaseBlock?

你总是会去NotPurchaseBLock因为你不是reporting back to Store关于消费品的履行。 这可以通过以下方式实现: -

FulfillmentResult result = await CurrentAppSimulator.ReportConsumableFulfillmentAsync("product2", product2TempTransactionId);

编辑: - '在以后再次完成requist.try时出现问题。询问大家可能会发现此错误代码有用:805a0194'

这可能是由于多种原因造成的: - 所以谷歌它已经有很多结果..

但是对于此错误代码: - 805a0194: -

  1. 问题: - 存在临时服务时会发生此错误 中断。
  2. 解决方案: - 稍等片刻,然后再试一次。
  3. Cross check your region
  4. 希望它会有所帮助:)