我的应用需要一个按钮来“恢复以前的购买” 这是我按下按钮时触发的代码
#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()会刷新许可证吗?