Android devs of the community - question about NFC payments/Google/Apple Pay tech

Hello.

Important disclaimer: I’m not a software engineer, but I’m curious how things work in general.

AFAIK, one cannot just make their own Credit Card wallet app that can communicate with POS terminals.

My question is, is it technically possible to make an NFC proxy?

Let’s say we have two Android phones:

  1. Phone A: stays at home with a credit card sitting on top of it (or wherever the phone’s NFC antenna is).
  2. Phone B: will be in my pocket.

We buy some stuff from a store and we pay using Phone B. Both Phone A and Phone B have our theoretical “NFC proxy” app.

  • Phone B accepts the connection from the POS terminal and receives whatever data from it.
  • Phone B forwards the data to Phone A sitting at home which then forwards it to the credit card (POS terminal → Phone B → Phone A → Credit Card)
  • Phone A receives the response from the credit card and forwards it back to Phone B which then forwards it to the POS terminal (Credit Card → Phone A → Phone B → POS terminal)
  • Transaction complete?

Is that technically possible? As in, does Android expose adequate NFC APIs that can accomplish this?

A possible question you might have:
What’s the point?
Credit Card’s NFC is passive, it can be powered on and communicated with whenever. On the other hand, I can activate my phone’s NFC and the apps that use it whenever I want to.

Fun fact: there’s already an app that implements this. Check out NFCGate. Last I check tho, it was a poc and isn’t encrypted by default, so use with caution, but it does exist

1 Like