I use a PayTef company terminal, connected to Wi-Fi, from the application I generate a JSON file with the amount, the invoice number, etc., I send it to them through a PayTef API, once the client has paid or cancelled, I receive an acceptance or rejection code, so I can control payments from my application and for remote payments also through PayTef, a link is generated that is sent to the client by email and I can know if they have paid or not or if the payment has expired the shipment.
Paytef | Solución de pago para empresas
The protocol is very simple, but I don't know if they work outside of Spain