重新安装后使用许可证恢复购买

时间:2015-05-12 13:31:34

标签: c# xml windows-runtime windows-phone-8.1 windows-store

我的应用需要一个按钮来“恢复以前的购买” 这是我按下按钮时触发的代码

   #if DEBUG
                   var receipt = await CurrentAppSimulator.GetAppReceiptAsync();
    #else
                   var receipt = await CurrentApp.GetAppReceiptAsync();
    #endif
                    var xmlRcpt = new XmlDocument();
                    xmlRcpt.LoadXml(receipt);
                    XmlNodeList xmlProductIdNodes = xmlRcpt.SelectNodes("/Receipt/ProductReceipt/@ProductId");


                    if (xmlProductIdNodes.Count == 0)
                    {
                        try
                        {
                            var md = new MessageDialog("Unable to verify purchase");
                            await md.ShowAsync();
                        }
                        catch { }
                        return;
                    }

                    foreach (var node in xmlProductIdNodes)
                    {
                        if (node.InnerText == "Product1")
                        {
                           //Enable feature 1
                        } 
                        else if (node.InnerText == "Product2")
                        {
                           //Enable feature 2
                        }

                    }

问题出在发布应用程序后,“无法验证购买”正在被击中。那么xml解析有什么问题(这是我第一次使用xml)还是别的什么? 应用程序针对Windows Phone 8.1 xaml

更新1:不知怎的,我觉得,问题在于了解商店更新许可证的方式。我尝试了不同的方法,因为我唯一的目的是检查产品是否购买。我使用按钮提交了一个包含此代码的测试版应用程序:

                var receipt = CurrentApp.LicenseInformation.ProductLicenses;

                if (receipt["Product1"].IsActive)
                {
                    try
                    {
                        var md = new MessageDialog("Product 1 enabled", "Success!");
                        await md.ShowAsync();
                    }
                    catch { }
                    return;
                }
               else
                {
                  try
                  {
                    var md = new MessageDialog("Could not verify purchase");
                    await md.ShowAsync();
                   }
                catch { }
               }

现在的问题是,第一次“无法验证”被击中。然后,我免费购买Product1。 Product1验证成功。这是预期的。现在,如果我卸载应用程序并重新安装,则再次出现相同的行为,即无法验证购买。

即使重新安装后,如何确保许可信息获取最新信息?或者无论如何要触发刷新?

LoadListingInformationAsync()会刷新许可证吗?

0 个答案:

没有答案