大学生協のFeliCa,及び諸大学の学生証一体型FeliCaの仕様
レスポンスについては,特に表記のない限り東北大学のもの (学生証一体型ではない)
断りのない限りコードはビッグエンディアンで通信する (下記のドキュメントに合わせた)
記号と区別するため,アルファベットの大文字表記は記号,小文字表記は16進表記とする
FeliCa自体の仕様については,Sony公式のドキュメントを参考に
| 番号 | コード | 内容 |
|---|---|---|
| 0 | 0x8365 | 不明 |
| 1 | 0xfe00 | 生協,学生証関連 |
※コードはリトルエンディアンで送信することに注意
| コード | 最大ブロックサイズ | 説明 |
|---|---|---|
| 0x014b | 4 | 不明 |
| 0x024b | 8 | 不明 |
| 0x054b | 8 | 不明 |
| コード | 最大ブロックサイズ | 説明 |
|---|---|---|
| 0x1a8b | 3 | 不明(学生証関連?) |
| 0x434b | 4 | 学生証関連(名前など) |
| 0x50cb | 6 | 組合員No,ミールカード,ポイント |
| 0x50cf | 10 | 利用履歴 |
| 0x50d7 | 1 | 残高,利用回数 |
以下の略語を用いる
| 略語 | 意味 |
|---|---|
| LE | リトルエンディアン |
| BE | ビッグエンディアン |
| HX | 16進数表記の文字列で扱える.つまり Integer.parseInt(Integer.toHexString(onebyte)) |
| HXについて,例を挙げると,16進表記で |
20 16 11 22 20 00 00
となっている (データは2016/11/22 20:00.00を表す)
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----------------------------------------------
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
東北大学のでは特に情報はなかった
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----------------------------------------------
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX
XX XX XX XX XX XX XX XX 67 30 30 30 30 30 30 31
| 記号 | サイズ(Byte) | 説明 |
|---|---|---|
| XX | 不明 | 名前 (Shift-JIS) |
東北大学のでは末尾の謎の8バイトのみ,この8バイトは共通だった.
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----------------------------------------------
WW WW WW WW WW WW XX 00 00 00 00 00 00 00 00 00
II 00 YY MM DD JJ JJ JJ 00 00 00 00 00 00 00 00
PP PP PP PP 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
| 記号 | サイズ(Byte) | 説明 |
|---|---|---|
| WW | 6 | [HX] 組合員No/電子マネー管理番号 |
| XX | 1 | NNの区分 04: 組合員 その他: 後述 |
| II | 1 | ミールカード利用者(だった)かどうか 0: 現在過去ともに利用者ではない 1: 現在利用中/過去に利用したことがある |
| YY | 1 | [HX] ミールカード最終利用年(末尾2桁) もしかすると前の1バイトと併せて2000年からの経過年になっているのかも |
| MM | 1 | [HX] ミールカード最終利用月 |
| DD | 1 | [HX] ミールカード最終利用日 |
| JJ | 3 | [HX] YYMMDDの日の利用額 |
| PP | 4 | [BE] ポイント(10倍した値) |
XXのその他については,恐らく広島大学の組合員証に関するページにある,システムに登録されるまでの約2週間の間は「電子マネー管理番号」という扱いなんだと思う
YYMMDDについては,非ミールカード利用者の場合はFeliCaの登録日が入っている気がする
IIについては,もしかするとミールカード利用者でなくなったときにミールカードの支払い処理をすると00に戻るのかもしれない
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----------------------------------------------
YY YY MM DD HH NN SS TT VV VV VV BB BB BB 00 00
︙ (最大10ブロック,新しい順)
| 記号 | サイズ(Byte) | 説明 |
|---|---|---|
| YY | 2 | [HX] 利用年 (こちらは20XX表記になっている) |
| MM | 1 | [HX] 利用月 |
| DD | 1 | [HX] 利用日 |
| HH | 1 | [HX] 利用時 |
| NN | 1 | [HX] 利用分 |
| SS | 1 | [HX] 利用秒 |
| TT | 1 | [HX] 利用タイプ 01: 支払い 05: チャージ |
| VV | 3 | [HX] 差額(常に正) |
| BB | 3 | [HX] 残額 |
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
-----------------------------------------------
BB BB BB BB 00 00 00 00 00 00 00 00 00 CC CC CC
︙ (最大10ブロック)
| 記号 | サイズ(Byte) | 説明 |
|---|---|---|
| BB | 4? | [LE] 残額 |
| CC | 3? | [HX] 利用回数(チャージを含むのかは確かめていない) |
ICカード読み取りアプリを開発していて、大学生協カードに対応したいと思っておりこちらのドキュメントを参考にさせていただいています。
大阪府立大にいる知人のカードの内容を見たところ、本ドキュメント内で
0x1A8Bとして紹介されている内容がこちらの読み取りデータ(知人のカードのデータ)では0x434Bで、逆に本ドキュメントで0x434Bとして紹介されている内容が0x1A8Bだったのですが、これはドキュメントが間違っているのでしょうか?