我已经使用MockIAP库在Windows Phone 8应用程序中测试了应用内购买 - 一切正常。我还在我的服务器上测试了来自here的测试Microsoft清单的收据签名验证码(基于Robert Richards的xmlseclibs)并通过了验证。 我听说在测试版模式中,应用内免费且不会为您提供签名收据,但是当我创建了一个测试版应用并尝试从中进行购买时,我已经获得了已签名的收据,它有版本2.0(msft示例有1.0)!
我已经跟踪验证并且发现两个收据(msft样本和我已经获得的一个)具有相同的CanonicalizationMethod,SignatureMethod,Transforms和DigestMethod,并且msft样本的一切正常,但是摘要值我的收据中的(Signature / SignedInfo / Reference / DigestValue)是错误的。
另外,我发现如果我只评论摘要验证,则签名验证成功。因此邪恶的根源在于这个错误的摘要值。
也许是故意制作的?我的意思是,在使用beta应用程序时,我不应该注意摘要检查?或者MSFT使用的是无记录的摘要方法?
更新 尝试使用MSFT verification example检查已退回的收据,验证失败。有没有人有WP8 inapp购买收据验证的经验?看起来他们已经将格式更改为2.0版应用程序开发人员应该有验证问题,因为现在收据不通过验证。
我删除了所有不需要的字符,我的代码同样适用于样本WP8和Windows商店收据,但要检查这些新的WP8收据,必须跳过摘要检查。我会在生产中尝试这个。
答案 0 :(得分:0)
实际上它是一个测试版应用问题。实际发布版本使用正确的摘要发送正确签名的收据。
更新: 看来有些收据的消化值不对。