• Showing Page History #12047
  • Showing Page History #12183
  • Showing Page History #12048
  • Showing Page History #12213
  • Showing Page History #12196
  • Showing Page History #12195

Suica

参考情報 : page3.nifty.com/slokar/pasori/gsuica

Suica には入出場記録と履歴の2つのサービスコードがある。Felica2Moneyで必要になるのは履歴のほう。サービスコード 0x090f。

各エントリは16バイト。フォーマットは以下の通り。

    • 0: 端末種
    • 1: 処理
    • 2-3: ??
    • 4-5: 日付 (先頭から7ビットが年、4ビットが月、残り5ビットが日)
    • 6-7: 時刻 (先頭から5ビットが時,6ビットが分,下5ビットは不明)
    • 6 : 入線区
    • 7 : 入駅順
    • 8 : 出線区
    • 9 : 出駅順
    • 10-11: 残高 (little endian)
    • 12-14: 連番
    • 15: リージョン

残高だけ little endian なので注意。

時刻と入線区/駅順が同じフィールドであることに注意。物販のときは時刻がはいるけど、そうじゃないときは入情報になる。 さらに、車載端末(IruCa)の場合、入線区/入駅順が各16ビットになる(それぞれ 6-7, 8-9バイト目)

端末種の値は以下の通り (Gsuica より抜粋)

0x03 => '精算機', 0x05 => '車載端末', 0x07 => '券売機', 0x08 => '券売機', 0x12 => '券売機', 0x16 => '改札機', 0x17 => '簡易改札機', 0x18 => '窓口端末', 0x1A => '改札端末', 0x1B => '携帯電話', 0x1C => '乗継精算機', 0x1D => '連絡改札機', 0xC7 => '物販端末', 0xC8 => '自販機',
}

処理の値は以下の通り

0x01 => '運賃支払', 0x02 => 'チャージ', 0x03 => '券購', 0x04 => '精算', 0x07 => '新規', 0x0D => 'バス', 0x0F => 'バス', 0x14 => 'オートチャージ', 0x46 => '物販', 0xC6 => '物販(現金併用)',
}

なお、0x49 入金というのもある(サンクスチャージ)

駅コード/店舗コード

http://www.denno.net/SFCardFan/webservice.html で調べられる。

駅名については路線コード(線区,LineCode)、駅順コード(StationCode)の2バイトの値、およびエリアコードから調べる。 ここで、エリアコードは以下のようになる。

- リージョンが 0 で線区が 0x7f以下のとき : 0 (JR線) - リージョンが 0 で線区が 0x80以上のとき : 1 (関東公営・私鉄) - リージョンが 1 のとき : 2 (関西公営・私鉄)

店舗については、エリア(AreaCode)、端末(TerminalCode)、線区(LineCode)、駅順(StationCode)の4バイトで検索する。 しかし、上記フォーマットを見て分かるとおり、Suica に記録されているのは端末、線区、駅順の3バイトのみ。なので、 100% 確実に店舗名を知ることは不可能。