ISO 8583は、金融取引カード発のインターチェンジメッセージングに関する国際規格です、カード所有者が決済カードを使用して開始した電子取引を交換するシステムに関する国際標準化機構(ISO)の規格です。
ISO 8583は、異なるシステム間でトランザクション要求と応答を交換できるように、メッセージ形式と通信フローを定義しています。顧客が店舗でカードを使って支払いを行う際のトランザクション(EFTPOS)の大部分は、通信チェーンのどこかでISO 8583を使用しており、ATMでのトランザクションも同様です。特に、Mastercard、Visa、Verveのネットワークは、他の多くの機関やネットワークと同様に、ISO 8583規格に基づいて認証通信を行っています。
ISO 8583は共通規格を定義していますが、システムやネットワークで直接使用されることは通常ありません。多くの標準フィールド(データ要素)はすべてのシステムやネットワークで共通ですが、ネットワーク固有の詳細情報を渡すための追加フィールドがいくつか残されています。これらのフィールドは、各ネットワークが独自の用途に合わせて規格をカスタマイズするために使用され、近接カードなどのカスタムフィールドや独自の利用方法に対応します。
ISO 8583規格は3つの部分から構成されています。
カード決済は通常、POS端末やATMなどの決済端末から一連のネットワークを経由してカード発行システムに送信され、カード所有者の口座に対する承認が行われます。取引データには、カード情報(カード番号やカード所有者情報など)、端末情報(端末番号、加盟店番号など)、取引情報(金額など)に加え、動的に生成されたり、途中のシステムによって追加されたりするその他のデータが含まれます。カード発行システムは、これらの情報に基づいて取引を承認または拒否し、所定の時間内に端末に返送する必要のある応答メッセージを生成します。
ISO 8583メッセージは、以下の部分から構成されます。
規格の異なるバージョンでは、フィールドの配置が異なります。たとえば、1987年版と1993年版の通貨要素は、2003年版では使用されなくなり、通貨は任意の金額要素のサブ要素として扱われます。ただし、2017年6月現在、ISO 8583:2003はまだ広く受け入れられていません。ISO 8583メッセージングにはルーティング情報がないため、TPDUヘッダーとともに使用されることがあります。
カード所有者による取引には、購入、引き出し、入金、払い戻し、取消、残高照会、支払い、口座間送金が含まれます。ISO 8583では、安全な鍵交換、合計金額の照合、その他の管理目的のためのシステム間メッセージも定義されています。
メッセージタイプインジケータ(MTI)は、メッセージの全体的な機能を表す4桁の数値フィールドです。メッセージタイプインジケータには、以下に説明するように、ISO 8583バージョン、メッセージクラス、メッセージ機能、およびメッセージ発信元が含まれます。
MTIの最初の桁は、 メッセージがエンコードされているISO 8583のバージョンを示します。
MTIの2番目の位置は、メッセージの全体的な目的を指定します。
MTIの3番目の位置は、システム内でメッセージがどのように流れるかを定義するメッセージ機能を指定します。リクエストはエンドツーエンドのメッセージ(例えば、取得者から発行者へ、そしてタイムアウトと自動反転機能を備えた状態で取得者から発行者へ戻る)であり、アドバイスはポイントツーポイントのメッセージ(例えば、端末から取得者へ、取得者からネットワークへ、ネットワークから発行者へ、各リンクでの送信は保証されるが、必ずしも即時ではない)です。
MTIの4番目の位置は、支払いチェーン内におけるメッセージ送信元の位置を定義します。
MTI値が0110の場合、次の例は各位置が示す内容を示しています。
したがって、MTI 0110は、実際の取引がアクワイアラーによって開始された場合の承認応答メッセージです。
上記の4つの立場をそれぞれ考慮すると、MTIはメッセージが何を行うべきか、そしてネットワーク上でどのように送信されるべきかを完全に規定します。残念ながら、すべてのISO 8583実装がMTIの意味を同じように解釈するわけではありません。しかし、いくつかのMTIは比較的標準化されています。
ISO 8583では、ビットマップとはメッセージ内のフィールドまたはサブフィールドであり、メッセージ内の他の場所に他のデータ要素またはデータ要素のサブフィールドが存在するかどうかを示すものです。
フィールドは、ビットマップ内の対応するビットがセットされている場合にのみ存在するとみなされます。たとえば、値が0x82(10進数130)の16進数は、2進数では1000 0010となります。これは、フィールド1と7がメッセージに存在し、フィールド2、3、4、5、6、8は存在しないことを意味します。
ビットマップは、8バイトのバイナリデータ、またはASCIIまたはEBCDIC文字セットの16個の16進数文字(0~9、A~F)で表現できます。メッセージには、少なくとも1つのビットマップ(プライマリビットマップと呼ばれる)が含まれており、これは要素1~64が存在するかどうかを示します。オプションのセカンダリビットマップの存在は、プライマリビットマップの最初のビットによっても示されます。セカンダリビットマップが存在する場合、データ要素65~128が存在するかどうかを示します。同様に、フィールド129~192の存在を示すために三次ビットマップを使用することもできますが、これらのデータ要素はめったに使用されません。
ビットマップ値が70 10 00 11 02 C0 48 04の場合、
したがって、与えられたビットマップは、メッセージに存在する次のフィールドを定義します:: 2、3、4、12、28、32、39、41、42、50、53、62。
データ要素とは、トランザクション情報を格納する個々のフィールドのことです。オリジナルのISO 8583:1987規格では最大128個のデータ要素が規定されていました が、後の改訂版では最大192個に増えています。1993年の改訂では、新しい定義が追加され、一部が削除されましたが、メッセージ形式自体は変更されていません。
各データ要素には特定の意味と形式が定められているが、この規格には汎用データ要素や、システム固有または国固有のデータ要素も含まれており、これらは実装によって使用方法や形式が大きく異なる。
各データ要素は、以下の表に従って、フィールドの許容される内容(数値、バイナリなど)とフィールドの長さ(可変または固定)を定義する標準フォーマットで記述されます。
さらに、各フィールドは固定長または可変長のいずれかになります。可変長の場合は、フィールドの長さの前に長さを示すインジケータが表示されます。
以下は、トランザクションの種類ごとに、メッセージの種類と処理コードを示す表です。
以下の表は、ISO 8583-1987における応答コードとその意味を示しています。後のバージョンでは、3桁または4桁の応答コードが使用されます。
POS(販売時点情報管理)モードフィールドには、カードがどのような条件下で読み取られたか、どのような認証が行われたか、そして仕様のバージョンに応じて、端末の機能が何であるかが示されます。
2003年の仕様では、POSコードは16個のバイナリ文字で構成され、4つの部分に分割されています。
1993年版[ 6 ]では、5つの部分からなる12文字のフィールドです。
サービスポイントのエントリーモード値は、以下の2つの部分から構成されます。
以下の表は、PANの入力モードとその意味を示しています。
以下の表は、PIN入力機能とその意味を示しています。
オーストラリア規格AS 2805はISO 8583を組み込んでおり、その他多くの支払いに関するトピックも網羅している。[ 7 ]
シンプルで無料のISO8583エディタ