ISO 8583

**ISO 8583** là một chuẩn ISO sử dụng làm chuẩn mã hóa trong các hệ thống trao đổi giao dịch điện tử.

## Sử dụng
- ISO 8583 đưa ra định dạng message và luồng giao tiếp để các hệ thống khác nhau có thể trao đổi các giao dịch.

- Mặc dù ISO 8583 đưa ra một chuẩn chung nhưng nó không được sử dụng trực tiếp cho một hệ thống hay một network nào. Thay vào đó mỗi network sẽ tùy biến những chuẩn này cho phù hợp với mục đích sử dụng của nó.

- Các phiên bản khác nhau của ISO 8583 có cách đặt các trường ở vị trí khác nhau. Trong đó ISO 8583:2003 được công nhận rộng rãi.

ISO 8583 bao gồm các phần sau:
* Message Type Indicator (MTI)
* One or more bitmaps, indicating which data elements are present
* Data elements, the fields of the message

## Message Type Indicator (MTI)
MTI là một trường gồm 4 ký tự số bao gồm:

• ISO 8583 Version

• Message Class

• Message Function

• Message origin

Ví dụ: 0110

• 0---: ISO 8583 version

• -1--: Message class

• --1-: Message function

• ---0: Message Origin

### 2.1. ISO 8583 Version
Position	Meaning

0xxx	ISO 8583-1:1987 version

1xxx	ISO 8583-2:1993 version

2xxx	ISO 8583-1:2003 version

9xxx	Private usage

### 2.2. Message Class
Position	Meaning	Usage

x1xx	 Authorization Message (Message xác nhận)

x2xx	Message tài chính

(Financial Message)

x3xx	Message xử lý file

(File Actions Message)

x4xx	Reversal Message

x5xx	Reconciliation Message

x6xx	Administrative Message

x7xx	Fee Collection Message

x8xx	Network Management Message

x9xx	Resered by ISO

### 2.3. Message Function
Vị trí thứ 3 trong MTI là Message Function chỉ ra luồng Message trong hệ thống.

Position	Meaning

xx0x	Request

xx1x	Request Response

xx2x	Advice

xx3x	Advice Response

xx4x	Notification

xx8x	Response acknowledgment

xx9x	Negative acknowledgment

### 2.4 Message Origin
Vị trí thứ 4 trong MTI chỉ ra vị trí của Message Source trong chuỗi payment

Position	Meaning

xxx0	Acquirer

xxx1	Acquirer Repeat

xxx2	Issuer

xxx3	Issuer Repeat

xxx4	Other

xxx5	Other Repeat

## Bitmaps
Trong ISO 8583, bitmaps là một field hay subfield bên trong Message chỉ ra những data element khác hay những data element subfields có thể có mặt bên trong hay một nơi nào khác trong 1 message

Một message phải chứa ít nhất một bitmap gọi là Primary Bitmap chỉ ra data element từ 1 đến 64 nào có mặt. Một message cũng có thể cũng có secondary bitmap chỉ ra sự có mặt của các data element từ 65 đến 128. Giống như thế message có thể có Third bitmap chỉ ra sự có mặt hoặc vắng mặt của các data element từ 129 đến 192, mặc dù những data element này rất ít khi được sử dụng.

Bitmap được truyền 8 byte nhị phân hoặc 16 byte ký tự hexa(bao gồm 0-9,A-F trong mã ASCII hay tập ký tự EBCDIC).
Một field có mặt khi bit đặc trưng của nó trong bitmap có giá trị True. Ví dụ byte 01000010 thì field 2 và 7 có mặt.

## Data Elements
Data Element là các trường riêng lẻ mang thông tin giao dịch. Có 128 data element được định nghĩa trong version ISO 8583:1987, và mở rộng ra 192 data element trong các phiên bản sau. Mỗi một data element có một nghĩa và một định dạng nhất định, bao gồm một vài data element chung, và một vài element đặc trưng cho từng hệ thống hay từng quốc gia.

Mỗi data element được mô tả theo một định dạng chuẩn trong đó định nghĩa nội dung, độ dài của field được truyền theo bảng sau:
 
Mỗi trường có thể được cố định độ dài hoặc độ dài thay đổi theo biến. Nếu có biến độ dài thì nó được đặt trước bởi một tiền tố chỉ ra giới hạn độ dài của field.

## Tham khảo

 
## Liên kết ngoài
* DL-ISO-8583 Open-source implementation, written in C
* Introduction to ISO 8583
* Free Java/Android library to pack/unpack ISO8583 Message, support Tertiary Bitmap & Subfields
* A free ISO8583 editor and message parser
* An OpenSource implementation of the international ISO-8583 standard
* A free.NET library that allows developers to parse and create ISO8583 messages easily - Free Source Code
* Trx Framework .NET open source project for financial messages interchange including ISO 8583
* DFDL schemas for ISO 8583 Data Format Description Language schemas for parsing and writing ISO 8583 messages
* A free Java library that allows developers to parse and create ISO8583 messages easily - Free Source Code