¿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
- Autenticación mediante Facebook a través de Rails API
- ¿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
- Iniciar el entorno de desarrollo de rails en android
- ¿Qué puedo usar para permitir que una aplicación de Android se comunique con una aplicación de rails
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?
- Tipo de entrada = número no es posible insertar números negativos en el teléfono móvil
- Diseña aplicaciones Omniauth y Iphone / Android
- Cómo Firebase Auth con Rails?
- Solicitud POST con Retrofit dando 500
- Configurar la autenticación de http
- Notificaciones Push utilizando el servidor Rails
- MultipartEntityBuilder para enviar imágenes al servidor de carril
- Solución de empuje de servidor en 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