Los usuarios de mi aplicación de Android pueden pagar (usando Paypal o facturación en la aplicación) para encender un LED en una ubicación remota. Los LEDs son controlados, en cada una de las ubicaciones, por Arduinos conectados a Internet.
Cuando un usuario paga, la aplicación envía una solicitud al servidor, que contiene la cantidad de dinero pagado. El servidor, a su vez, es responsable de enviar una solicitud POST al Arduino correcto.
Dado que cualquiera puede descompilar la aplicación y descubrir cómo realizar una solicitud al servidor con una cantidad arbitraria de dinero pagado, ¿cómo puede asegurarse este intercambio?
- La autorización del usuario y de la contraseña (con valores hardcored) no funcionará, porque el usuario y la contraseña solo se pueden extraer de la aplicación
- La incrustación de un archivo de clave no funcionará por el mismo motivo
- La autorización basada en cuentas de Google no funcionará porque necesito autorizar la aplicación, no el usuario (es decir, el usuario puede usar esas credenciales para realizar una solicitud arbitraria fuera de la aplicación, lo cual no es deseable)
Pensé en aprovechar la "confirmación de pago" de los proveedores de pagos para garantizar que se realice un pago, pero este pago se realiza desde la aplicación, por lo que no sé si puede ser seguro. ¿Debo usar una "URL de retorno" para que Paypal (por ejemplo) realice la solicitud al servidor?
Gracias.