Согласованный безопасный сценарий покупки в Google Play с собственным веб-сервером

Я прочитал несколько раз все документы вРуководство разработчика Android и познакомился с хорошей презентацией GoogleУклонение от пиратов и остановка вампиров

Наконец, я попытался реализовать сценарий биллинга в приложении с использованием моего собственного веб-сервера в соответствии с представленной выше презентацией. Вот основные моменты взаимодействия с моим сервером:

Before making REQUEST_PURCHASE request to Google I make a request to my web server to register a new purchase. If the request succeeds I get a nonce from the server. When transaction finishes I receive an array of notification Ids to pass them to GET_PURCHASE_INFORMATION request. At this point I need to use nonce received in step 1 from my server. <- I got stuck here! When GET_PURCHASE_INFORMATION succeeds I get a signedJson and a signature which I pass to my server. It verifies the purchase and commits the transaction on the server.

Что я не могу понять, так это две вещи:

How to identify a previously generated nonce by incoming IN_APP_NOTIFY intent in my case? As far as I understand it can correspond to either current purchase completion or another purchase refund. From what I see we have only notification id which has no relation to a REQUEST_PURCHASE request. How to securely handle refunds in that way that my server is 100% acknowledged about this event? The most natural way IMHO is to periodically request Google server from my server to retreive the actual status for the order. Unfortunately, in my country developers can not use Google Checkout API. Another way is to periodically check the order state via device using GET_PURCHASE_INFORMATION request passing known notification ids and new nonces. If the check fails during some period the purchase will be automatically expired until the first successful order state verification. Is this scenario possible? Can I use known notification id to make GET_PURCHASE_INFORMATION requests after CONFIRM_NOTIFICATIONS request for the order?

EDIT: Относительно возмещений (пункт 2) есть связанная темаПроблемы с биллингом в Android-приложении?. Is it correct that there is no built-in end user functionality in Google Play to ask developer to refund in-app purchase? Если это так, тогда мы могли бы реализовать кнопку в нашем приложении, чтобы отправить такой запрос на возврат на наш сервер, включая всю необходимую информацию, такую как подтвержденные учетные данные пользователя, а затем вручную обработать возврат в учетной записи Google Merchant и в базе данных сервера.

Ответы на вопрос(1)

Ваш ответ на вопрос