Как мы можем проверить квитанцию ​​об оплате в приложении Windows 8 на стороне сервера?

В настоящее время я реализую покупки в приложении в приложении, над которым я работаю для Windows 8.

После прочтения документации:

  1. Запросить информацию о лицензии для приложения: msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.store.licenseinformation.aspx

Это говорит вам, является ли приложение пробным или нет, а также список продуктов, купленных с помощью приложения.

  1. Для совершения покупки необходимо использовать объекты:

CurrentApp: в живой среде. Это будет работать только в том случае, если приложение УТВЕРЖДЕНО в магазине, поэтому вам необходимо внести это изменение перед упаковкой для отправки в магазин.

CurrentAppSimulator: Отладка и тестирование.

2.а. Если вы используете приложение в пробном режиме, вы покупаете приложение, вызывая: CurrentApp.RequestAppPurchaseAsync (true)

Параметр запрашивает получение строки, содержащей XML, который представляет все квитанции для приложения и любые покупки в приложении. Если для includeReceipt установлено значение false, эта строка пуста.

2.б. Подтвердите покупку на ваших серверах. Ссылка

Мы хотим убедиться, что квитанция, которую мы получили от сервера 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, как я могу реализовать проверку на стороне сервера? как я могу протестировать все это, не имея приложения в магазине?

Спасибо, Педро


person Pedro Alonso    schedule 16.08.2012    source источник


Ответы (1)


Не существует среды песочницы для такого сквозного тестирования Windows Store. Это должно помочь вам продвинуться немного дальше:

В настоящее время CertificateId используется Store b809e47cd0110a4db043b3f73e83acd917fe1336 (это может измениться со временем, поэтому ваш код должен получить это программно из подписанных квитанций)

URL-адрес загрузки сертификата становится следующим: 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>

person Alwin Vyhmeister    schedule 28.08.2012
comment
Возможно ли, что Microsoft изменила свое поведение в магазине Windows при покупке в приложении? В течение нескольких дней я могу покупать продукты даже с приложением, которое не загружается из магазина, а запускается из визуальной студии (с классом CurrentApp)? - person leuchtdiode; 14.08.2013
comment
Как проверить квитанцию ​​в PHP? - person Ashwani K; 16.09.2013