如何使用RubyvalidationAndroid应用内结算?

我无法确定如何使用我的Ruby on Rails服务器validationAndroind应用内结算购买。

http://developer.android.com/guide/market/billing/billing_integrate.html

我认为Android提供了一个Security.java,它具有某种方法来在物理设备上进行validation。 从我的研究,似乎(1)我需要弄清楚如何使用这个Security.java类与我的Ruby on Rails服务器或(2)我需要将Security.java移植到Ruby。

它是否正确? 有谁知道另一种方式来validation收据?

Solutions Collecting From Web of "如何使用RubyvalidationAndroid应用内结算?"

我只是明白了这一点。

基本上,它的工作方式是,当购买成功时,android市场发回一条消息(用JSON格式)与订单详细信息和encryption签名。 在Security.java类中,validationfunction是通过使用公钥validation签名,确保消息确实来自Android市场应用程序。

如果你想在你的服务器中使用你自己的服务器,你只需要将签名和json有效载荷传递给你的服务器,并validation服务器上的json有效载荷。 如果您可以validationjson数据来自市场应用程序,则可以使用它来创build服务器端订单对象。 然后,您可以响应您的客户端应用程序,处理订单并更新您的用户界面。

我在我的应用程序中做的只是在服务器通信中添加安全类的validationfunction,而不是现有的validationfunction。

真正的窍门是用ruby写签名validation码。 这是什么工作:

base64_encoded_public_key是你的用户configuration文件中的关键字sig是被传入到Dungeons安全示例数据的签名属性,是由市场发回的jsonstring。

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 ) 

这只对双签名的Base64解码后才有效。

  public_key = Base64.decode64(public_key_b64) signature = Base64.decode64(Base64.decode64(signature_b64)) signed_data = Base64.decode64(signed_data_b64) key = OpenSSL::PKey::RSA.new(public_key) verified = key.verify(OpenSSL::Digest::SHA1.new, signature, signed_data)