我们如何验证服务器端的Windows 8应用内结算收据?

时间:2012-08-16 10:53:10

标签: windows-8 windows-runtime store in-app

我目前正在为Windows 8工作的应用中实施应用内购买。

阅读documentation

  1. 申请该应用的许可证信息: msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.aspx
  2. 这会告诉您该应用是否是试用版,以及使用应用内购买的产品列表。

    1. 要执行购买,您需要使用对象:
    2. CurrentApp:在实时环境中。这仅适用于商店中批准应用程序的情况,因此您需要在打包之前进行此更改以提交到商店。

      CurrentAppSimulator:调试和测试。

      2.A。如果您在试用模式下运行应用,则购买应用调用: CurrentApp.RequestAppPurchaseAsync(true)

      该参数请求获取包含XML的字符串,该字符串表示应用程序的所有收据以及任何应用内购买。如果includeReceipt设置为false,则此字符串为空。

      2.b中。验证服务器的购买。 Reference

      我们要验证从服务器2.a获得的收据是否为正品。要验证收据的真实性,您可以使用公共证书检查收据的签名。要获取此证书,请使用以下URL:  go.microsoft.com/fwlink/?LinkId=246509&cid=收据的CertificateId在哪里。

      这是来自CurrentAppSimulator的实际收据:

      <?xml version="1.0" encoding="utf-8"?>
          <Receipt Version="1.0" ReceiptDate="2012-08-23T14:21:40Z" CertificateId="" ReceiptDeviceId="9d6b1f28-cab8-421f-8f8d-23df2dc3abbe">
          <ProductReceipt Id="d9437a12-4f91-4ef0-b0bf-527ab9da2ec9" AppId="Zolmo.JamiesRecipes_40cj6885yhw56" ProductId="JMPK_0004" PurchaseDate="2012-08-23T14:21:40Z" ProductType="Durable" />
      </Receipt>
      

      没有CertificateId,我怎样才能实现服务器端验证?如何在商店中没有应用程序的情况下测试所有这些?

      谢谢, 佩德罗

1 个答案:

答案 0 :(得分:3)

没有沙箱环境可以对Windows Store进行此类端到端测试。这应该会让你更进一步:

CertificateId目前使用的Storeb809e47cd0110a4db043b3f73e83acd917fe1336(这可能会随着时间的推移而发生变化,因此您的代码应该通过签名收据以编程方式获取)

证书下载网址变为: https://go.microsoft.com/fwlink/?LinkId=246509&cid=b809e47cd0110a4db043b3f73e83acd917fe1336

这是一个示例收据,您可以测试您的代码,解析要在上面的CertificateId中使用的URL值,以及使用{{1}返回的证书验证签名是否有效的代码上面:

URL