¿Cómo puedo verificar la facturación de Android en la aplicación con un servidor con Ruby?

Tengo problemas para averiguar cómo verificar las compras de Androind en facturación en la aplicación con mi servidor Ruby on Rails.

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

Creo que Android da un Security.java que tiene algún tipo de método para verificar en el dispositivo físico. De mi investigación parece que o bien (1) tengo que averiguar cómo usar esta clase Security.java con mi servidor Ruby on Rails o (2) necesito portar Security.java a Ruby.

¿Es esto correcto? ¿Alguien sabe otra forma de verificar el recibo?

Acabo de averiguar esto.

Básicamente, la forma en que funciona es que cuando una compra tiene éxito el mercado androide envía un mensaje (con formato en JSON) con los detalles del pedido y una firma criptográfica. En la clase Security.java, la función de verificación se está asegurando de que el mensaje provenga realmente de la aplicación del mercado de Android, verificando la firma utilizando su clave pública.

Si desea utilizar su propio servidor en la mezcla, sólo tiene que pasar la firma y la carga json a su servidor y verificar la carga json en su servidor. Si puede comprobar que los datos de json provienen de la aplicación de mercado, puede utilizarlos para crear los objetos de pedido de lado del servidor. A continuación, puede responder a su solicitud de cliente que la orden fue procesada y actualizar su interfaz de usuario.

Lo que hice en mi aplicación es sólo añadir en el servidor de comunicación de cosas en la clase de seguridad "verificar la función en lugar de la función de verificación existente.

El verdadero truco es escribir código de verificación de firma en ruby. Esto es lo que funciona:

Base64_encoded_public_key es la clave en su perfil de usuario sig es la propiedad de la firma que se está pasando a los datos de ejemplo de seguridad de Dungeons es la cadena json enviada de vuelta por el mercado.

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 ) 

Esto funcionó para mí sólo después de la decodificación Base64 doble de la firma.

  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) 
  • Notificaciones Push utilizando el servidor Rails
  • Dispositivo de Android de acceso de host local en la computadora portátil
  • Solicitud POST con Retrofit dando 500
  • Solución de empuje de servidor en Rails
  • Cómo obtener el código de autorización de Google una sola vez
  • ActionController InvalidAuthenticityToken en Api :: V1 :: UsersController # create
  • Creación de aplicaciones para iphone y Android para aplicaciones de rails existentes
  • ¿Qué puedo usar para permitir que una aplicación de Android se comunique con una aplicación de rails
  • Convierta la aplicación Ruby on Rails en la aplicación Android PhoneGap nativa
  • Authenticity_token en Rails + Android
  • Grape Rails API con Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.