Ответ 1
Я просто понял это.
В основном, как это работает, когда при успешной покупке рынок Android отправляет обратно сообщение (отформатированное в JSON) с информацией о заказе и криптографической подписью. В классе Security.java функция проверки гарантирует, что сообщение действительно поступило из приложения на рынке Android, проверив подпись, используя ваш открытый ключ.
Если вы хотите использовать свой собственный сервер в миксе, вам просто нужно передать подпись и полезную нагрузку json на свой сервер и проверить полезную нагрузку json на своем сервере. Если вы можете проверить, что данные json пришли из рыночного приложения, вы можете использовать его для создания объектов заказа на стороне сервера. Затем вы можете ответить на свое клиентское приложение, чтобы заказ был обработан, и обновите свой интерфейс.
То, что я сделал в своем приложении, просто добавляет в коммуникационную информацию сервера в функции проверки безопасности класса вместо существующей функции проверки.
Настоящий трюк - это код проверки подписи подписи в рубине. Вот что работает:
base64_encoded_public_key - ваш ключ в вашем профиле пользователя sig - свойство сигнатуры, передаваемое в пример безопасности подземелий data - строка json, отправленная обратно на рынок.
require 'rubygems'
require 'openssl'
require 'base64'
base64_encoded_public_key = "YOUR KEY HERE"
data = "JSON_DATA_HERE"
sig = "SIGNATURE HERE"
key = OpenSSL::PKey::RSA.new(Base64.decode64(base64_encoded_public_key))
verified = key.verify( OpenSSL::Digest::SHA1.new, Base64.decode64(sig), data )