¿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
- MultipartEntityBuilder para enviar imágenes al servidor de carril
- ¿Cómo crear un Api seguro de Rails REST para mi aplicación?
- Api de Rails y autenticación nativa de aplicaciones para móviles
- Autenticación mediante Facebook a través de Rails API
- La mejor práctica al permitir que sólo la aplicación de Android acceda a Rails API
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?
- ¿Cómo usar doorkeeper con un cliente android?
- ¿Qué método de autenticación debo usar con la gema Sorcery usando una aplicación móvil?
- Iniciar el entorno de desarrollo de rails en android
- Mover la aplicación web existente en una aplicación de teléfono nativa mediante un contenedor de navegador
- Cordova App en Android usando SSL enviando multipart / form-data causes Error de la aplicación de rack: # <EOFError: cuerpo de contenido incorrecto>
- No se pueden enviar datos de JSON desde Android al servidor ROR
- Tipo de entrada = número no es posible insertar números negativos en el teléfono móvil
- Cómo Firebase Auth con Rails?
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)
- ¿Cómo crear una interfaz de usuario como el nuevo mercado o Google más?
- WakeLock finalizó mientras seguía teniendo error aunque lo estoy lanzando