Reputation: 21
I'm working on a university project, where we need to customize a POS terminal when a transaction is successfully completed and approved via NFC.
When processing a transaction using a smart phone, the POS device will be customized to perform an extra task. Therefore, the terminal should differentiate between a contactless card and a smart phone when performing the payment.
Any idea how to identify whether it is a smart phone or a contactless card?
Thank you in advance.
Upvotes: 2
Views: 1010
Reputation: 40821
Typically, you won't be able to distinguish between a contactless card in plastic card formafactor and mobile phone formfactor. Both speak the same protocol (EMV contactless).
However, you might be able to distinguish (not quite reliably though) between a mobile phone and a plastic card by looking at certain protocol parameters.
For instance, many Android mobile phones will have the NFCIP-1 flag set in the select acknowledge (SAK) byte indicating that they also support peer-to-peer mode. So if you have access to the SAK byte, you could get a rough estimate. Unfortunately, there are many situations where NFCIP-1 support is not reported in the SAK byte even by a mobile phone (e.g. on Android when the screen is off or locked).
Moreover, some EMV Contactless Kernes define a flag in the application interchange profile (AIP) that indicates if the device is a mobile device or not (Kernel 2: AIP Byte 1, Bit 2; Kernel 3-5: AIP Byte 2, Bit 7). However, even if some kernels refer to this bit as an indication of whether the device is a mobile phone or not, its exact meaning is usually if the device supports on-device cardholder verification or not. Hence, if a mobile phone does not support on-device CVM it also won't have that flag set. Similarly, if some other device besides a mobile phone does support on-device CVM (an EMV token with display and PIN pad?), it will have that flag set.
Upvotes: 2