ISO 8583

Перейти к навигацииПерейти к поиску

ISO 8583 — стандарт ISO, описывающий процесс передачи и формат финансовых сообщений системами, обрабатывающими данные банковских платёжных карт.

Введение

Транзакция с использованием платёжных карт (например, для запроса авторизации держателя карты) начинается с устройства, её инициирующего, например c POS-терминала, проходит через ряд систем/сетей и заканчивается на системе, которая выпустила карту (эмитент).

Транзакционные данные включают в себя:

  • информацию о карте (например, номер счета, англ. Account number)
  • информацию о терминале (например, номер торговца, англ. Merchant)
  • собственно финансовая информация (например, цена, количество)

Система, которая выпустила карту, авторизует транзакцию либо отклоняет её и генерирует ответное сообщение, которое возвращается на терминал.

ISO 8583 описывает формат транзакций и механизм их передачи («communication flow») таким образом, чтобы различные системы могли обмениваться этими транзакциями. Большинство транзакций, которые выполняются с банкоматов, используют ISO 8583 в некоторых аспектах коммуникационной цепочки, как то, например, транзакции, выполняющиеся при оплате покупателем товара в магазине. Такие международные платёжные системы как MasterCard и Visa используют стандарт ISO 8583 при авторизационных взаимодействиях.

ISO 8583 описывает транзакции, инициированные держателем карты, такие как покупка, снятие наличных, пополнение счёта, оплату, аннулирование операции, запрос баланса, платежи и переводы со счёта на счёт. ISO 8583 также описывает сообщения между системами для обмена ключами безопасности, согласования итогов и сообщения для других административных целей.

Несмотря на то, что ISO 8583 определяет общий стандарт, как правило, он не используется напрямую в системах или сетях. Вместо этого каждая сеть адаптирует стандарт для собственных нужд, пользуясь отдельными полями и вариантами использования.

Положение полей различается в разных версиях стандарта. К примеру, отдельные элементы, определяющие валюту в версиях 1987 и 1993 более не используются в версии 2003, где валюта является составной частью элемента, определяющего сумму. ISO 8583:2003 нужно время для достижения широкого признания.

Сообщение ISO 8583 состоит из следующих частей:

  • Message Type Indicator (MTI) — Индикатор типа сообщения;
  • Одна или несколько битовых карт, указывающих, какие элементы данных присутствуют в сообщении;
  • Элементы данных, поля сообщения.

Индикатор типа сообщения

Индикатор типа сообщения (англ. Message Type Indicator (MTI)) — 4-значное числовое поле, которое определяет высокоуровневую функцию сообщения. Индикатор типа сообщения включает в себя версию стандарта ISO 8583, класс сообщения, функцию сообщения и источник сообщения, описанные ниже.

Пример: 0110

  0xxx -> версия стандарта ISO 8583 (версия 1987 года)
  x1xx -> класс сообщения (сообщение авторизации)
  xx1x -> функция сообщения (ответ на запрос)
  xxx0 -> кто начал взаимодействие (эквайер)

Версии ISO 8583

Первая позиция MTI определяет версию стандарта ISO 8583, используемую для передачи сообщения.

ПозицияЗначение
0xxxВерсия ISO 8583-1:1987
1xxxВерсия ISO 8583-2:1993
2xxxВерсия ISO 8583-1:2003
3xxx Зарезервировано ISO
4xxx Зарезервировано ISO
5xxx Зарезервировано ISO
6xxx Зарезервировано ISO
7xxx Зарезервировано ISO
8xxx Зарезервировано для национального использования
9xxxЗарезервировано для частного использования

Класс сообщения

Вторая позиция MTI определяет общую цель сообщения.

ПозицияЗначениеИспользование
x1xxAuthorization MessageПроверяет доступность средств, получает одобрение, но проведение по счёту не производится. Работает по принципу Dual Message System (DMS), ожидает обмена файлами для проведения по счёту.
x2xxFinancial MessageПроверяет доступность средств, получает одобрение, производится проводка по счёту. Работает по принципу Single Message System (SMS), обмен файлами по данной транзакции не производится.
x3xxFile Actions MessageUsed for hot-card, TMS and other exchanges
x4xxReversal/Chargeback MessageReversal (x4x0 or x4x1): Отменяет действие предыдущей авторизации.

Chargeback (x4x2 or x4x3): Отменяет списание по финансовому сообщению.

x5xxReconciliation MessageПередаёт информацию о проведении расчёта (например, сообщение о закрытии смены на POS-терминале)
x6xxAdministrative MessageПередает административные сообщения. Часто используется для передачи сообщений об ошибках (например сообщение отклонено)
x7xxFee Collection Message
x8xxNetwork Management MessageИспользуется для обмена ключами безопасности, входа в систему, посылки эхо-тестов и для других функций сети
x9xxЗарезервировано ISO

Функция сообщения

Третья позиция Индикатора сообщения (MTI) определяет функцию сообщения и способ его обработки в системе. Запросы (Request) являются сообщениями полного цикла (т.е. от эквайера к эмитенту и обратно включая время ожидания и автоматической переадресации), в то время как авизо (Advice) - прямые сообщения (например, от терминала к эквайеру, от эквайера в сеть, из сети к эмитенту, с гарантированной передачей к следующему звену, но, возможно, с задержкой).

ПозицияЗначение
xx0xRequest
xx1xRequest Response
xx2xAdvice
xx3xAdvice Response
xx4xNotification
xx8xResponse acknowledgment
xx9xNegative acknowledgment

Источник сообщения

Четвертое значение индикатора сообщения (MTI) определяет его инициатора в платежной системе.

ПозицияЗначение
xxx0Acquirer
xxx1Acquirer Repeat
xxx2Issuer
xxx3Issuer Repeat
xxx4Other
xxx5Other Repeat

Примеры

С помощью всех вышеуказанных позиций индекса сообщения (MTI), полностью определяется как будет обрабатываться сообщение в сети. К сожалению, не все реализации стандарта ISO 8583 интерпретируют значение индекса (MTI) одинаково, но несмотря на это, некоторые MTI - стандартны:

MTIЗначениеПрименение
0100Authorization requestАвторизационный запрос с POS-терминала
0120Authorization AdviceПри падении эмитента (например, по timeout) и необходимости успешного проведения транзакции
0121Authorisation Advice RepeatПри истечении срока ожидания авизо
0200Acquirer Financial RequestФинансовый запрос, часто от банкомата
0220Acquirer Financial AdviceНапример, при проверке в отеле
0221Acquirer Financial Advice repeatПри ожидании авизо
0400Acquirer Reversal RequestОтмена авторизации
0420Acquirer Reversal AdviceAdvises that a reversal has taken place
0421Acquirer Reversal Advice Repeat Messageif the reversal times out
0800Network Management RequestEcho test, logon, log off etc
0820Network Management AdviceKeychange

Битовые карты

В соответствии с ISO 8583, побитовая карта — это поле или подполе внутри сообщения, показывающие какие элементы данных представлены в другом месте сообщения.

Сообщение содержит как минимум одну битовую карту, которая называется Primary Bitmap (англ. Первичная битовая карта), определяющую, какие из элементов данных с номерами от 1 до 64 присутствуют в сообщении. Как правило, если вторая битовая карта присутствует, то размещается в качестве первого элемента данных и определяет, какие из элементов данных с номерами от 65 до 128 присутствуют в сообщении. Аналогично, третья битовая карта может использоваться для определения наличия или присутствия элементов со 129 до 192, впрочем, они используются редко.

Битовые карты могут быть переданы как 8 байт двоичной информации или как 16 шестнадцатеричных символов (0-9, A-F) из наборов ASCII или EBCDIC.

Поле присутствует, когда соответствующий бит битовой карты имеет значение «истина», например, байт '10000010' означает, что поля 1 и 7 присутствуют в сообщении.

Примеры

BitmapОпределяет наличие...
4210001102C04804...полей 2, 7, 12, 28, 32, 39, 41, 42, 50, 53, 62
7234054128C28805...полей 2, 1, 4, 7, 11, 12, 14, 22, 24, 26, 32, 35, 37, 41, 42, 47, 49, 53, 62, 64, 100 (требуется второй Bitmap, чтобы показать наличие поля номер 100)
8000000000000001...полей 1, 64
0000000000000003
(второй Bitmap)
Поля 127, 128

Объяснение Bitmap поля 4210001102C04804
01000010 = 42x (нумеруем слева направо, второй и седьмой бит равны 1, что означает присутствие полей 2 и 7)
00010000 = 10x (присутствует поле 12)
00000000 = 00x (никакие поля не присутствуют)
00010001 = 11x (присутствуют поля 28 и 32)
00000010 = 02x (присутствует поле 39)
11000000 = C0x (присутствуют поля 41 и 42)
01001000 = 48x (присутствуют поля 50 и 53)
00000100 = 04x (присутствует поле 62)

Номер

бита

0102030405060
1234567890123456789012345678901234567890123456789012345678901234
Bitmap 0010001000010000000000000001000100000010110000000100100000000100

Поля, присутствующие в сообщении с переменной длиной:
2, 7, 12, 28, 32, 39, 41, 42, 50, 53, 62

Элементы данных

Элементы данных — это отдельные поля, содержащие информацию о транзакции. Исходный стандарт ISO 8583:1987 был рассчитан на возможность включения 128 элементов данных, а в последующих версиях было определено до 192 элементов данных. В ревизии 1993 года были введены новые описания, удалены некоторые старые, при этом формат как таковой не претерпел изменений.

Несмотря на то, что каждый элемент данных имеет описанное значение и формат, стандарт включает некоторые элементы данных для общих целей, а также специфические для системы (или страны) элементы данных, которые могут иметь огромные различия в разных реализациях.

Каждый элемент данных описан в формате стандарта, который указывает разрешенные значения полей (напр. числовое, бинарное итд.) и длину поля (постоянное значение или меняющее), в соответствии с данной таблицей:

СокращениеЗначение
a(Латинские?) буквы, включая пробелы
nТолько числовые значения
sТолько специальные символы
anБуквы и цифры
asБуквы и специальные символы
nsЧисла и специальные символы
ansБуквы, числа и специальные символы
bДвоичные данные
zНабор кодов трека 2 и 3, как определено в ISO 4909 и ISO 7813
. или .. или …индикатор переменной длины поля, каждый символ . означает цифру
x или xx или xxxполе фиксированной длины или максимальная длина в случае полей переменной длины

Кроме того, каждое поле может быть или фиксированной, или переменной длины. Если поле переменной длины, длина поля предшествуется индикатором длины.

ТипЗначение
Fixedдлина поля не используется
LLVAR или (..xx)Где LL < 100, означает две лидирующих цифры LL, определяющие длину поля VAR
LLLVAR или (…xxx)Где LLL < 1000, означает три лидирующие цифры LLL, определяющие длину поля VAR
LL и LLL - шестнадцатеричные цифры или ASCII-символы. Поле VAR может быть упаковано (compressed) или быть записано в ASCII, в зависимости от типа данных элементаLL может быть длиной 1 или 2 байта. Например, если оно упаковано как один шестнадцатеричный байт, 0x27 означает, что далее следует 27 байт поля VAR. Если формат ASCII, два байта 0x32, 0x37 означают, что далее следует 27 байт (так как 0x32 - это код символа '2' в кодировке ASCII и т.п.). 3-цифирная длина поля LLL использует 2 байта с лидирующим 0 в упакованном режиме, или 3 байта в формате ASCII. Формат элемента данных VAR зависит от типа элемента данных. Если число было упаковано, то 874 будет представлено 2 байтами 0x0874. В формате ASCII будет использоваться один байт для каждой цифры или символа, оно будет выглядеть, как 0x38 ('8'), 0x37 ('7'), 0x34 ('4').
ISO-Defined Data Elements
Элемент данных (номер поля)ТипИспользование
1b 8Дополнительная битовая карта
2n ..19Primary account number (PAN)
3n 6Processing code
4n 12Amount, transaction
5n 12Amount, Settlement
6n 12Amount, cardholder billing
7n 10Transmission date & time
8n 8Amount, Cardholder billing fee
9n 8Conversion rate, Settlement
10n 8Conversion rate, cardholder billing
11n 6Systems trace audit number
12n 6Time, Local transaction
13n 4Date, Local transaction
14n 4Date, Expiration
15n 4Date, Settlement
16n 4Date, conversion
17n 4Date, capture
18n 4Merchant type
19n 3Acquiring institution country code
20n 3PAN Extended, country code
21n 3Forwarding institution. country code
22n 3Point of service entry mode
23n 3Application PAN number
24n 3Function code(ISO 8583:1993)/Network International identifier (NII)
25n 2Point of service condition code
26n 2Point of service capture code
27n 1Authorizing identification response length
28n 8Amount, transaction fee
29n 8Amount. settlement fee
30n 8Amount, transaction processing fee
31n 8Amount, settlement processing fee
32n ..11Acquiring institution identification code
33n ..11Forwarding institution identification code
34n ..28Primary account number, extended
35z ..37Данные трека 2 (Track 2 Data)
36n …104Данные трека 3 (Track 3 Data)
37an 12Retrieval reference number
38an 6Authorization identification response
39an 2Код ответа (Response code)
40an 3Service restriction code
41ans 8Card acceptor terminal identification
42ans 15Card acceptor identification code
43ans 40Card acceptor name/location
44an ..25Additional response data
45an ..76Данные трека 1 (Track 1 Data)
46an …999Дополнительные данные — ISO
47an …999Дополнительные данные — National
48an …999Дополнительные данные — Private
49a 3Currency code, transaction
50an 3Currency code, settlement
51a 3Currency code, cardholder billing
52b 16Personal Identification number data
53n 18Security related control information
54an 120Additional amounts
55ans …999Reserved ISO
56ans …999Reserved ISO
57ans …999Reserved National
58ans …999Reserved National
59ans …999Зарезервировано для использования на национальном уровне
60an .7Advice/reason code (private reserved)
61ans …999Reserved Private
62ans …999Reserved Private
63ans …999Reserved Private
64b 16Message authentication code (MAC)
65b 16Bit map, tertiary
66n 1Settlement code
67n 2Extended payment code
68n 3Receiving institution country code
69n 3Settlement institution country code
70n 3Network management Information code
71n 4Message number
72ans …999Data record (ISO 8583:1993)/n 4 Message number, last(?)
73n 6Date, Action
74n 10Credits, number
75n 10Credits, reversal number
76n 10Debits, number
77n 10Debits, reversal number
78n 10Transfer number
79n 10Transfer, reversal number
80n 10Inquiries number
81n 10Authorizations, number
82n 12Credits, processing fee amount
83n 12Credits, transaction fee amount
84n 12Debits, processing fee amount
85n 12Debits, transaction fee amount
86n 15Credits, amount
87n 15Credits, reversal amount
88n 15Debits, amount
89n 15Debits, reversal amount
90n 42Original data elements
91an 1File update code
92n 2File security code
93n 5Response indicator
94an 7Service indicator
95an 42Replacement amounts
96an 8Message security code
97n 16Amount, net settlement
98ans 25Payee
99n ..11Settlement institution identification code
100n ..11Receiving institution identification code
101ans 17File name
102ans ..28Account identification 1
103ans ..28Account identification 2
104ans …100Transaction description
105ans …999Зарезервировано для использования в ISO
106ans …999Зарезервировано для использования в ISO
107ans …999Зарезервировано для использования в ISO
108ans …999Зарезервировано для использования в ISO
109ans …999Зарезервировано для использования в ISO
110ans …999Зарезервировано для использования в ISO
111ans …999Зарезервировано для использования в ISO
112ans …999Зарезервировано для использования на национальном уровне
113n ..11Authorizing agent institution id code
114ans …999Зарезервировано для использования на национальном уровне
115ans …999Зарезервировано для использования на национальном уровне
116ans …999Зарезервировано для использования на национальном уровне
117ans …999Зарезервировано для использования на национальном уровне
118ans …999Зарезервировано для использования на национальном уровне
119ans …999Зарезервировано для использования на национальном уровне
120ans …999Зарезервировано для использования конкретными реализаторами стандарта
121ans …999Зарезервировано для использования конкретными реализаторами стандарта
122ans …999Зарезервировано для использования конкретными реализаторами стандарта
123ans …999Зарезервировано для использования конкретными реализаторами стандарта
124ans …255Info Text
125ans ..50Network management information
126ans .6Issuer trace id
127ans …999Зарезервировано для использования конкретными реализаторами стандарта
128b 64Message Authentication code

Примеры

Определение поляЗначение
n6Поле фиксированной длины в 6 цифр
n..6Числовое поле LLVAR с длиной до 6 цифр
a..11Буквенно-числовое поле LLVAR с длиной до 11 символов
b…999Поле двоичных данных LLLVAR с длиной до 999 байт

См. также

Ссылки