私はちょうどこれを理解しました。
基本的には、購入が成功すると、Android マーケットが注文の詳細と暗号化された署名を含むメッセージ (JSON 形式) を送り返します。Security.java クラスの検証機能は、公開鍵を使用して署名を検証することにより、メッセージが本当に Android マーケット アプリケーションからのものであることを確認しています。
独自のサーバーを組み合わせて使用する場合は、署名と json ペイロードをサーバーに渡し、サーバーで json ペイロードを確認するだけです。json データが市場アプリケーションからのものであることを確認できれば、それを使用してサーバー側の注文オブジェクトを作成できます。次に、注文が処理されたことをクライアント アプリケーションに応答し、UI を更新します。
私がアプリで行ったことは、既存の検証機能の代わりに、Security クラスの検証機能にサーバー通信を追加することです。
本当の秘訣は、ルビで署名検証コードを書くことです。機能するものは次のとおりです。
base64_encoded_public_key は、ユーザー プロファイルのキーです。 sig は、Dungeons セキュリティ サンプルに渡される署名プロパティです。 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 )