2012-08-16 55 views
2

我目前實現應用內購買的應用程序,我的工作對Windows 8的我們如何在服務器端驗證Windows 8應用內帳單收據?

閱讀documentation後:

  1. 請求的應用程序的許可證信息: msdn.microsoft.com /en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.aspx

這就告訴你,如果應用程序是試驗與否,並使用應用程序內購買的產品清單。

  1. 要執行你需要使用的對象進行購買:

CurrentApp:在實際環境中。這隻適用於商店中應用程序已獲得批准的情況,因此您需要在打包提交到商店之前進行此更改。

CurrentAppSimulator:調試和測試。

2.a.如果你正在運行在試用模式下的應用程序,您購買的應用程序調用: CurrentApp.RequestAppPurchaseAsync(真)

參數請求獲取包含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,我怎麼能實現服務器端驗證?如何在商店中沒有應用程序的情況下測試所有這些?

感謝, 佩德羅

回答

3

沒有沙箱環境做這種終端到終端的測試爲Windows Store的。這應該有助於讓你遠一點,但:

CertificateId正在使用Store當前正在b809e47cd0110a4db043b3f73e83acd917fe1336(這可以隨時間改變,因此你的代碼應該從收條得到這個編程)

的證書下載網址成爲本: https://go.microsoft.com/fwlink/?LinkId=246509&cid=b809e47cd0110a4db043b3f73e83acd917fe1336

下面是一個示例收據,你可以測試你的代碼解析CertificateId值在URL使用上面並用於驗證簽名是有效的使用由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> 

+0

難道微軟改變了它的Windows應用商店的行爲在應用程序內購買?幾天後,即使使用未從商店加載的應用程序,我也可以購買產品,但是從Visual Studio開始(使用CurrentApp類)? – leuchtdiode 2013-08-14 07:14:13

+0

如何驗證PHP中的收據? – 2013-09-16 08:38:54