我希望能够使用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。
答案 0 :(得分:0)
CurrentApp.GetAppReceiptAsync()。Id 是实际购买的唯一ID。虽然它在技术上代表了由单个Windows ID进行的独特购买,但它并不代表用户本身,我认为对该ID的持久性没有任何保证。
您是否更适合使用Windows Live SDK跟踪跨设备的实际用户身份?
无论如何,要回答你原来的问题,不,我不相信有任何方法可以让它一直返回相同的ID。该功能的唯一合理位置是 WindowsStoreProxy.xml 文件,我在模式中看不到任何允许您指定此信息的内容。