我只是想通了。
基本上,它的工作方式是,当购买成功时,android 市场会发回一条消息(格式为 JSON),其中包含订单详细信息和加密签名。在 Security.java 类中,验证函数通过使用您的公钥验证签名来确保消息确实来自 Android 市场应用程序。
如果您想在混合中使用自己的服务器,您只需将签名和 json 有效负载传递给您的服务器,并在您的服务器上验证 json 有效负载。如果您可以验证 json 数据是否来自市场应用程序,则可以使用它来创建服务器端订单对象。然后,您可以响应您的客户端应用程序该订单已处理并更新您的 UI。
我在我的应用程序中所做的只是在 Security 类的验证功能中添加服务器通信内容来代替现有的验证功能。
真正的诀窍是用 ruby 编写签名验证码。这是有效的:
base64_encoded_public_key 是您在用户配置文件中的密钥 sig 是传递到地下城安全示例的签名属性数据是市场发回的 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 )