Skip to content

Instantly share code, notes, and snippets.

@Code-Hex
Forked from oboenikui/UnivFeliCa.md
Created December 5, 2016 07:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Code-Hex/26486f438aec7157dda4a0ca402fd077 to your computer and use it in GitHub Desktop.
Save Code-Hex/26486f438aec7157dda4a0ca402fd077 to your computer and use it in GitHub Desktop.
大学生協FeliCaの仕様

WHAT IS THIS

大学生協のFeliCa,及び諸大学の学生証一体型FeliCaの仕様
レスポンスについては,特に表記のない限り東北大学のもの (学生証一体型ではない)
断りのない限りコードはビッグエンディアンで通信する (下記のドキュメントに合わせた)
記号と区別するため,アルファベットの大文字表記は記号,小文字表記は16進表記とする

FeliCa自体の仕様については,Sony公式のドキュメントを参考に

System Code

番号 コード 内容
0 0x8365 不明
1 0xfe00 生協,学生証関連

Service Code

※コードはリトルエンディアンで送信することに注意

System 0 (0x8365)

コード 最大ブロックサイズ 説明
0x014b 4 不明
0x024b 8 不明
0x054b 8 不明

System 1 (0xfe00)

コード 最大ブロックサイズ 説明
0x1a8b 3 不明(学生証関連?)
0x434b 4 学生証関連(名前など)
0x50cb 6 組合員No,ミールカード,ポイント
0x50cf 10 利用履歴
0x50d7 1 残高,利用回数

Response

以下の略語を用いる

略語 意味
LE リトルエンディアン
BE ビッグエンディアン
HX 16進数表記の文字列で扱える.つまり
Integer.parseInt(Integer.toHexString(onebyte))
HXについて,例を挙げると,16進表記で
20 16 11 22 20 00 00

となっている (データは2016/11/22 20:00.00を表す)

0x1a8b

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

東北大学のでは特に情報はなかった

0x434b

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バイトは共通だった.

0x50cb

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に戻るのかもしれない

0x50cf

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] 残額

0x50d7

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] 利用回数(チャージを含むのかは確かめていない)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment