我希望能够使用 CurrentApp.GetAppReceiptAsync() 结果中的 AppReceiptId 并将其绑定到我的后端服务中的用户名,以验证用户是否实际购买了该应用程序。
我知道我应该使用 CurrentAppSimulator 代替 CurrentApp,但 CurrentAppSimulator.GetAppReceiptAsync() 总是为 AppReceiptId 返回一个不同的随机值。这使得使用我的服务进行测试变得困难。
除了使用硬编码之外,有没有办法让它总是返回相同的值?我担心当我用 CurrentApp 替换 CurrentAppSimulator 并将其提交到商店时,它不会像我期望的那样运行。在现实世界中,AppReceiptId 永远不会改变,对吧?
我用来获取 AppReceiptId 的代码:
var receiptString = await CurrentAppSimulator.GetAppReceiptAsync();
XmlDocument doc = new XmlDocument();
doc.LoadXml(receiptString);
var ReceiptNode = (from s in doc.ChildNodes
where s.NodeName == "Receipt"
select s).Single();
var AppReceiptNode = (from s in ReceiptNode.ChildNodes
where s.NodeName == "AppReceipt"
select s).Single();
var idNode = (from s in AppReceiptNode.Attributes
where s.NodeName == "Id"
select s).Single();
string id = idNode.NodeValue.ToString();
id 总是一些随机的 Guid。