treastrain / TRETJapanNFCReader

NFC (FeliCa) Reader for iOS 13 later Core NFC / Japanese e-Money prepaid or identification cards
https://japannfcreader.tret.jp
MIT License
455 stars 34 forks source link

differ Suica and PASMO #56

Closed scorpioares closed 3 years ago

scorpioares commented 3 years ago

Hello. I used your App a lot, and thank you for your work.

Recently, I start to study the Felica data. I have one question about it. Is there a way to tell the kind of IC card by NFC reader? For example, after scanning a Suica card, the program could tell it is a Suica card (not other cards like PASMO). I searched a lot about the IDm, system code, and service code. However, I cannot find a way to differentiate them.

treastrain commented 3 years ago

@scorpioares こんにちは。私の App をお使いいただきありがとうございます。 何かしらの方法で「Suica」と「PASMO」を区別したいということですね。 シンプルに回答すると、その答えはほとんど NO です。

あなたが調査して分かっているように、0x0003 の FeliCa システムコードを持っている場合、これは「交通系ICカード」と判別できますが、これだけでは Suica か PASMO かを判別することはできません。 また、IDm で判別することもできません。

FeliCa サービスコードによって判定できる可能性はありますが、Suica と PASMO は互換性があるため、この方法はほとんど無理と考えてよいでしょう。

1つ考えられる方法としては、交通系ICカードの利用履歴に新規発行を行った駅の情報が含まれている場合、Suica を発売している駅と PASMO を発売している駅は明確に分かれているため、どの駅でどちらのカードが販売されているかのデータベースを自身で作成し、それをもとに Suica か PASMO かを区別することはできると思います。しかし、交通系ICカードの利用履歴は最大20件のみ記録され、古いデータは消えていくことから、この方法を使用できる状況はかなり限定的です。

また、Suica や PASMO には「Suica ID 番号」または「PASMO ID 番号」が記録されています。例えばカードタイプの場合、その裏面に印字されている「JE」または「PB」で始まる17桁の番号のことです。この接頭辞を見ることで Suica か PASMO かを判別できますが、この Suica/PASMO ID 番号を取得する公開された情報は現在のところ存在しないため、この方法も困難であると考えます。


Hello @scorpioares. Thank you for using my App. You want to distinguish between "Suica" and "PASMO" in some way. The simple answer is most likely NO.

As you know from your research, if you have a FeliCa system code of 0x0003, you can identify this as a "Transit IC card", but this alone is not enough to determine whether it is Suica or PASMO. And the same is true for IDm.

There is a possibility that the FeliCa service code can be used to determine whether the card is a Suica or PASMO card, but since Suica and PASMO are interchangeable, it is almost impossible to use this method.

One possible method is to create your own database of which cards are sold at which stations, and use it to distinguish between Suica and PASMO. There is a clear distinction between stations that sell Suica and PASMO. However, this method can only be used in a very limited number of situations, since only a maximum of 20 IC card transactions are recorded, and old data will be lost.

In addition, Suica and PASMO have a "Suica ID number" or "PASMO ID number" recorded on them. For example, in the case of the card type, it is a 17-digit number starting with "JE" or "PB" printed on the back of the card. By looking at this prefix, it is possible to determine whether the card is a Suica or PASMO card, but since there is currently no publicly available information to obtain this Suica/PASMO ID number, this method is also considered to be difficult.

Translated with www.DeepL.com/Translator (free version), and fixed it manually by myself.

scorpioares commented 3 years ago

@treastrain Thank you for your kind response. I understood the difficulty.

thinkbizd29 commented 1 year ago

Current library code how can we define or find card names with service codes any Idea?