• Showing Page History #12307

Show page source of suica #12047

= Suica

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

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

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

    * 0: 端末種
    * 1: 処理
    * 2-3: ??
    * 4-5: 日付 (先頭から7ビットが年、4ビットが月、残り5ビットが日)
    * 6-7: 時刻
    * 6 : 入線区
    * 7 : 入駅順
    * 8 : 出線区
    * 9 : 出駅順
    * 10-11: 残高 (little endian)
    * 12-14: 連番
    * 15(1): 使ってない?

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

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

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

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

処理の値は以下の通り

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

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