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

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

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

Прежде чем отправлять запрос REQUEST_PURCHASE в Google, я отправляю запрос на мой веб-сервер для регистрации новой покупки. Если запрос выполняется успешно, я получаю одноразовый номер с сервера.Когда транзакция заканчивается, я получаю массив идентификаторов уведомлений для передачи их в запрос GET_PURCHASE_INFORMATION. На данный момент мне нужно использовать одноразовые номера, полученные в шаге 1 от моего сервера. <- Я застрял здесь!Когда GET_PURCHASE_INFORMATION завершается успешно, я получаю подписанный JSON и подпись, которую я передаю своему серверу. Он проверяет покупку и фиксирует транзакцию на сервере.

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

Как определить ранее сгенерированный одноразовый номер по входящему намерению IN_APP_NOTIFY в моем случае? Насколько я понимаю, это может соответствовать либо текущему завершению покупки, либо другому возврату покупки. Из того, что я вижу, у нас есть только идентификатор уведомления, который не имеет отношения к запросу REQUEST_PURCHASE.Как безопасно обрабатывать возвраты таким образом, чтобы мой сервер был на 100% признан об этом событии? ИМХО самый естественный способ - периодически запрашивать у сервера Google мой сервер, чтобы получить актуальный статус заказа. К сожалению, в моей стране разработчики не могут использовать Google Checkout API. Другой способ - периодически проверять состояние заказа через устройство, используя запрос GET_PURCHASE_INFORMATION, передавая известные идентификаторы уведомлений и новые одноразовые номера. Если проверка не удалась в течение какого-то периода, срок действия покупки автоматически истечет до первой успешной проверки состояния заказа. Возможен ли этот сценарий? Могу ли я использовать известный идентификатор уведомления для отправки запросов GET_PURCHASE_INFORMATION после запроса CONFIRM_NOTIFICATIONS для заказа?

РЕДАКТИРОВАТЬ: Относительно возмещений (пункт 2)это связанная темаПроблемы безопасности биллинга в Android ?.Правильно ли, что в Google Play нет встроенной функциональности для конечного пользователя, чтобы попросить разработчика возместить покупку в приложении? Если это так, то мы могли бы реализовать кнопку в нашем приложении, чтобы отправить такой запрос на возврат на наш сервер, включая всю необходимую информацию, такую как проверенные учетные данные пользователя, а затем вручную обработать возврат как в учетной записи Google Merchant, так и на сервере. 'база данных.

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

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