Gli utenti della mia applicazione Android possono pagare (utilizzando Paypal o fatturazione in-app) per accendere un LED in una posizione remota. I LED sono controllati, in ciascuna posizione, da Arduinos collegati a Internet.
Quando un utente paga, l'app invia una richiesta al server, che contiene l'importo pagato. Il server a sua volta è responsabile dell'invio di una richiesta POST alla destra Arduino.
Poiché chiunque può decompilare l'applicazione e capire come fare una richiesta al server con una quantità arbitraria di denaro pagata, come può essere garantito questo scambio?
- L'autorizzazione dell'utente e della password (con valori memorizzati) non funzionerà, perché l'utente e la password possono essere estratti dall'app
- L'incorporamento di un file chiave non funzionerà a causa dello stesso motivo
- L'autorizzazione basata sugli account Google non funzionerà perché devo autorizzare l'applicazione, non l'utente (cioè, l'utente può semplicemente utilizzare tali credenziali per effettuare una richiesta arbitraria all'esterno dell'app, che non è auspicabile)
Ho pensato di sfruttare la "conferma di pagamento" dai fornitori di servizi di pagamento per garantire che un pagamento sia fatto, ma questo pagamento è effettuato in-app, quindi non so se può essere sicuro. Dovrei usare un "URL di ritorno" in modo che Paypal (per esempio) effettui la richiesta al server?
Grazie.