Non è possibile proteggere un codice a barre statico contro la copia. Non è possibile.
Ciò di cui hai bisogno per proteggersi da questo tipo di attacco è che il cliente inserisca / scanditi qualcosa di dinamico. Deve essere cambiato ogni volta che viene utilizzato; deve cambiare in modo imprevedibile, in modo che i clienti disonesti non possano inventare un valore e ingannarlo; e il sistema di back-end deve rifiutarsi di accettare più scansioni dello stesso codice.
Un modo per farlo è visualizzare il codice QR su un tablet montato sul bancone. Ogni volta che un cliente lo scansiona e la sua app invia un messaggio al server, convalida il codice corrente e quindi modifica il codice QR per mostrare un nuovo numero casuale al cliente successivo.
Questo richiede più sicurezza, ovviamente. Devi in qualche modo limitare i record dei tuoi clienti in modo che non possa solo scansionare 10 codici a barre di fila in un minuto. È possibile risolvere questo problema visualizzando solo un codice QR dopo che il registratore di cassa ha ricevuto il pagamento. Oppure puoi limitare il record del cliente per ignorare più scansioni in una finestra di 30 minuti.
Potresti fare in modo che il registratore di cassa stampi codici a barre unici sulle ricevute, ma i ladri raccoglieranno le ricevute scartate dal cestino e le scannerizzeranno. È necessaria una logica back-end sofisticata per rilevare questo tipo di frode.