¿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) 
  • Convierta la aplicación Ruby on Rails en la aplicación Android PhoneGap nativa
  • Publicar en Ruby on Rails la aplicación de android
  • ¿Cómo usar doorkeeper con un cliente android?
  • Cordova App en Android usando SSL enviando multipart / form-data causes Error de la aplicación de rack: # <EOFError: cuerpo de contenido incorrecto>
  • Grape Rails API con Android
  • ActionController InvalidAuthenticityToken en Api :: V1 :: UsersController # create
  • Mover la aplicación web existente en una aplicación de teléfono nativa mediante un contenedor de navegador
  • La mejor práctica al permitir que sólo la aplicación de Android acceda a Rails API
  • Sincronizar cliente Android y servidor REST
  • Retrofit @Body apareciendo como parámetro en la petición HTTP
  • Cómo obtener el código de autorización de Google una sola vez
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.