ISO 8583
From Wikipedia, the free encyclopedia
カードを使用した場合、そのカードが使用できるかを確認するため、POS端末やATMなどのカードを読み取る機械から、ネットワークを経由して、カードを発行している会社(イシュア)のシステムまでメッセージは渡される。そのメッセージデータには、カードの情報(カード番号など)や端末の情報(店舗番号など)、業務情報(金額など)、システムによって加えられる情報などが含まれる。カードを発行しているシステムは、そのトランザクションを承認または拒否して端末へ送る応答メッセージを発生させる。
異なるシステムが上記のトランザクションを交わすことができるよう、ISO 8583はメッセージ形式とコミュニケーション・フローを定義している。客が店で支払をする際にカードを使用する場合や、ATMが使用される大多数の場合は、ISO 8583が使用されている。マスターカードやビザネットワークなど多くのネットワークは、信用照会業務はISO 8583をベースに手順を定められているが、ISO 8583にはルーティング情報がないため、TPDUヘッダが追加されている場合が多い。
ISO 8583には、カード所有者から発生するトランザクション(購入・取消・融資・返済・残高照会・口座変更)などや、セキュリティ・キー交換や、取引件数・金額の管理など、その他管理目的のための、システムメッセージ様式が定められている。
ISO 8583での標準のメッセージ形式は、各ネットワークやシステムではそのまま使用されていない。各ネットワークは、ISO 8583の形式をそれぞれカスタマイズして使用している。
ISO 8583の異なる版によって、各フィールドの使用方法が異なっている。例えば、1987年版と1993年版で使用されている通貨エレメントは、2003年版では使用されておらずそれぞれの金額項目のサブフィールドとして通貨を持つようになっている。ただし現在、ISO 8583の2003年版は、広く使用はされていない。
ISO 8583は、以下の内容で構成されている。
- メッセージタイプID (MTI)
- どのデータエレメントが存在するかを示すためのビットマップ
- メッセージフィールドのデータエレメント
メッセージタイプID (MTI)
MTIは、メッセージの種類を分類する4桁の数値フィールドである。MTIには、メッセージクラス・メッセージ機能、メッセージの発生源の情報が、1桁毎に設定されている。以下の例 (MTI 0110) に、各桁があらわす内容を記載する。
0xxx → ISO 8583の版(1987年版) x1xx → メッセージクラス(オーソリメッセージ) xx1x → メッセージ機能(要求に対する応答) xxx0 → 手順の発生源(アイワイアラ)
ISO 8583の版
MTIの1桁目には、このメッセージがどのISO 8583標準バージョンを使用しているかを指定する。
| 値 | 意味 |
|---|---|
| 0xxx | ISO 8583-1:1987年版 |
| 1xxx | ISO 8583-2:1993年版 |
| 2xxx | ISO 8583-1:2003年版 |
| 9xxx | 個社使用 |
メッセージクラス
MTIの2桁目には、メッセージの全体的な目的を指定する。
| 値 | 意味 | 例 |
|---|---|---|
| x1xx | オーソリ | 取引を承認するか、否認するかを決定する。デュアルメッセージシステム (DMS) のため、決済処理は行わない。 |
| x2xx | ファイナンシャル | 取引を承認する場合は、シングルメッセージシステム (SMS) のため、同時に決済・精算処理を行う。 |
| x3xx | ファイル更新 | カード情報などの更新を行う。 |
| x4xx | 取消 | オーソリの取消を行う。 |
| x5xx | 交換 | 処理件数等の更新情報を送信する。 |
| x6xx | 管理 | システム管理情報を送信する。例えば障害発生による取消メッセージなどで使用される。 |
| x7xx | 課金 | |
| x8xx | ネットワーク管理 | セキュリティキー交換や、開局、エコー・テストなどのネットワーク処理で使用する。 |
| x9xx | ISO予約値 |
メッセージ機能
MTIの3桁目には、メッセージをシステム内のどこまで保証しなければならないかを指定する。要求の両端(例えばアクワイアラからイシュア(カード発行会社)で、タイムアウトが発生した場合は自動取消をその範囲で行う)や、アドバイス(端末からアクワイアラ、アクワイアラからネットワーク、ネットワークからイシュア間を保証する)を指定する。
| 値 | 意味 |
|---|---|
| xx0x | 要求 |
| xx1x | 要求に対する応答 |
| xx2x | アドバイス |
| xx3x | アドバイスに対する応答 |
| xx4x | 通知 |
| xx8x | 応答の認証 |
| xx9x | ネガティブな認証 |
メッセージ発生源
MTIの4桁目には、メッセージの一連のトランザクションの発生源を指定する。
| 値 | 意味 |
|---|---|
| xxx0 | アクワイアラ |
| xxx1 | アクワイアラ(リピート) |
| xxx2 | イシュア |
| xxx3 | イシュア(リピート) |
| xxx4 | その他 |
| xxx5 | その他(リピート) |
MTI一覧
MTIの4桁の値で、そのメッセージが何のためのメッセージであるか、ネットワークのどの範囲までのものかを指定される。なお、ISO 8583を使用しているすべてのシステムで、MTIの意味を全く同じに解釈しているとは限らないが、以下にMTI値の例を示す。
| MTI | 意味 | 例 |
|---|---|---|
| 0100 | オーソリ要求 | カード会員が購入するためのPOS端末からの承認要求 |
| 0110 | オーソリ応答 | カード会員へ承認するためのイシュアからPOS端末への応答 |
| 0120 | オーソリアドバイス | POS端末が故障した場合など、承認しなければならない処理結果 |
| 0121 | オーソリアドバイスリピート | アドバイスでタイムアウト発生時 |
| 0130 | オーソリアドバイス応答 | オーソリアドバイスに対する受信結果 |
| 0200 | ファイナンシャル要求 | ATMやシングルメッセージシステムのPOS端末などから発生する決済要求 |
| 0210 | ファイナンシャル要求応答 | 決済要求に対するイシュアからの応答 |
| 0220 | ファイナンシャルアドバイス | たとえばホテルのチェックアウトなど、オーソリ要求から始まった一連のトランザクションの完了時に使用される |
| 0221 | ファイナンシャルアドバイスリピート | アドバイスでタイムアウト発生時 |
| 0230 | ファイナンシャルアドバイス応答 | ファイナンシャルアドバイスに対する受信結果 |
| 0400 | 取消要求 | トランザクションの取消 |
| 0420 | 取消アドバイス | 取消が発生した結果の通知 |
| 0421 | 取消アドバイスリピート | アドバイスでタイムアウト発生時 |
| 0430 | 取消応答 | 取消アドバイスに対する受信結果 |
| 0800 | ネットワーク管理要求 | エコーテスト、開局、閉局など |
| 0810 | ネットワーク管理応答 | エコーテスト、開局、閉局など |
| 0820 | ネットワーク管理アドバイス | キー交換 |
ビットマップ
ISO 8583内のビットマップは、メッセージ内にどのデータエレメントが存在するかを示すためのフィールド/サブフィールドである。
メッセージには「プライマリ・ビットマップ」と呼ばれるビットマップが必ず含まれる。それはデータエレメントのうち、フィールド1から64までの存在有無を示すビットマップである。セカンダリ・ビットマップが存在する場合は、一般的にフィールド1のデータエレメントの値に設定され、フィールド65から128までの存在有無を示す。同様に、サード・ビットマップは、フィールド129から192までの存在有無を示すものだが、あまり使用されない。
ビットマップは、8バイトのバイナリデータや、16進数の文字(0-9, A-F のASCIIまたはEBCDICコード)で示される。
特定のビットが立っている場合のみ、該当のフィールドが存在する。たとえば、'82x は2進数で '1000 0010' であるため、フィールド1と7のみ存在し、2, 3, 4, 5, 6, 8は存在しないことを示す。
ビットマップの設定例
| ビットマップ | 存在フィールド |
|---|---|
| 4210001102C04804 | フィールド 2, 7, 12, 28, 32, 39, 41, 42, 50, 53, 62 |
| 7234054128C28805 | フィールド 2, 3, 4, 7, 11, 12, 14, 22, 24, 26, 32, 35, 37, 41, 42, 47, 49, 53, 62, 64 |
| 8000000000000001 | フィールド 1, 64 |
| 0000000000000003 (セカンダリ・ビットマップ) | フィールド 127, 128 |
ビットマップの例(8バイトのプライマリ・ビットマップ = 64ビット)フィールド 4210001102C04804
BYTE1 : 01000010 = 42x(左から2番目と7番目のビットが1のため、フィールド2と7が存在することを示す)
BYTE2 : 00010000 = 10x(フィールド12が存在)
BYTE3 : 00000000 = 00x(フィールドは存在しない)
BYTE4 : 00010001 = 11x(フィールド28と32が存在)
BYTE5 : 00000010 = 02x(フィールド39が存在)
BYTE6 : 11000000 = C0x(フィールド41と42が存在)
BYTE7 : 01001000 = 48x(フィールド50と53が存在)
BYTE8 : 00000100 = 04x(フィールド62が存在)
0________10________20________30________40________50________60__64 1234567890123456789012345678901234567890123456789012345678901234 ビットの位置 0100001000010000000000000001000100000010110000000100100000000100 ビットマップ
上記内容で存在するフィールド
2-7-12-28-32-39-41-42-50-53-62