Windows 8 我们如何在服务器端验证Windows 8应用内账单收据?

Windows 8 我们如何在服务器端验证Windows 8应用内账单收据?,windows-8,windows-runtime,store,in-app,Windows 8,Windows Runtime,Store,In App,我目前正在为Windows 8工作的应用中实施应用内购买 在阅读以下文件后: 请求应用程序的许可证信息: msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.aspx 这会告诉你该应用程序是否试用,以及使用该应用程序购买的产品列表 要执行购买,您需要使用以下对象: CurrentApp:在实时环境中。这仅在应用程序在应用商店中获得批准时有效,因此您需要在打包

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

在阅读以下文件后:

  • 请求应用程序的许可证信息: msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.aspx
  • 这会告诉你该应用程序是否试用,以及使用该应用程序购买的产品列表

  • 要执行购买,您需要使用以下对象:
  • CurrentApp:在实时环境中。这仅在应用程序在应用商店中获得批准时有效,因此您需要在打包提交到应用商店之前进行此更改

    CurrentAppSimulator:调试和测试

    2.a。如果您正在试用模式下运行应用程序,您可以通过以下方式购买该应用程序: CurrentApp.RequestAppPurchaseAsync(真)

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

    2.b。验证从服务器购买的产品

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

    这是来自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>
    
    
    
    没有证书ID,如何实现服务器端验证?如果商店中没有应用程序,我如何测试所有这些

    谢谢,
    Pedro

    没有沙箱环境来为
    Windows应用商店
    执行这种端到端测试。不过,这将有助于您进一步了解:

    商店当前使用的
    CertificateId
    b809e47cd0110a4db04b043b3f73e83acd917fe1336
    (这可能会随着时间的推移而改变,因此您的代码应该通过编程方式从签名收据中获取此信息)

    证书下载URL如下所示:
    https://go.microsoft.com/fwlink/?LinkId=246509&cid=b809e47cd0110a4db043b3f73e83acd917fe1336

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

    <Receipt Version="1.0" ReceiptDate="2012-08-28T22:11:33Z" CertificateId="b809e47cd0110a4db043b3f73e83acd917fe1336" ReceiptDeviceId="4e362949-acc3-fe3a-e71b-89893eb4f528">
    <AppReceipt Id="8ffa256d-eca8-712a-7cf8-cbf5522df24b" AppId="55428GreenlakeApps.CurrentAppSimulatorEventTest_z7q3q7z11crfr" PurchaseDate="2012-06-04T23:07:24Z" LicenseType="Full" />
    <ProductReceipt Id="2559fa9a-9f86-0525-e655-536a6c96fac6" ProductId="Product1" PurchaseDate="2012-06-04T23:07:50Z" ExpirationDate="2012-06-07T23:07:49Z" ProductType="Durable" AppId="55428GreenlakeApps.CurrentAppSimulatorEventTest_z7q3q7z11crfr" />
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" />
            <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" />
            <Reference URI="">
                <Transforms>
                    <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
                </Transforms>
                <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" />
                <DigestValue>npmBq7pdtq9FkfILSsHuVyD+QWiZg6J/klBKsyWhrw8=</DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>LKZSHmk6XjLaEHoJPFBB1GxVsFf2eilOXeyf2RvYtVvqjU4EIdOUfNM46sVifq3MyeE4N2s77iJmvdzgxmOM9tCimebiL7jsdpWakO0A9daImHESMPIrwZNham6jPCWaBUEOFT6PNy1v5MS+cdX25Wenk702L0wVQ6R8oGPlk5Im6Q62K69cvAFA3q/kiLHOyTZWHoIGw5lvFvAYI/aZhVoFQLv1FjK0Syg5nbMA19UrzwZ39jnJjcfuw/VX51uSv5Ze2x36HDXTpiw8wHoTzauGYzt9MXd4+qbiJ4AQys22AgO+cfAbDrTuH5duZ6DMeuFeEv8nu2p9PiVyBEOlZw==</SignatureValue>
    </Signature>
    
    
    npmBq7pdtq9FkfILSsHuVyD+QWiZg6J/klBKsyWhrw8=
    6月6日,LKZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ2P9PIVYBEOLZW==
    

    微软是否可能改变了其应用程序内购买的windows应用商店行为?有几天,我甚至可以用一个不是从商店加载的应用程序购买产品,而是从visual studio(使用CurrentApp类)开始的?如何用PHP验证收据?