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 определяет общую цель сообщения.

Позиция Значение Использование
x1xx Authorization Message Проверяет доступность средств, получает одобрение, но проведение по счёту не производится. Работает по принципу Dual Message System (DMS), ожидает обмена файлами для проведения по счёту.
x2xx Financial Message Проверяет доступность средств, получает одобрение, производится проводка по счёту. Работает по принципу Single Message System (SMS), обмен файлами по данной транзакции не производится.
x3xx File Actions Message Used for hot-card, TMS and other exchanges
x4xx Reversal/Chargeback Message Reversal (x4x0 or x4x1): Отменяет действие предыдущей авторизации.

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

x5xx Reconciliation Message Передаёт информацию о проведении расчёта (например, сообщение о закрытии смены на POS-терминале)
x6xx Administrative Message Передает административные сообщения. Часто используется для передачи сообщений об ошибках (например сообщение отклонено)
x7xx Fee Collection Message
x8xx Network Management Message Используется для обмена ключами безопасности, входа в систему, посылки эхо-тестов и для других функций сети
x9xx Зарезервировано ISO

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

[править | править код]

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

Позиция Значение
xx0x Request
xx1x Request Response
xx2x Advice
xx3x Advice Response
xx4x Notification
xx8x Response acknowledgment
xx9x Negative acknowledgment

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

[править | править код]

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

Позиция Значение
xxx0 Acquirer
xxx1 Acquirer Repeat
xxx2 Issuer
xxx3 Issuer Repeat
xxx4 Other
xxx5 Other Repeat

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

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

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

[править | править код]

В соответствии с 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)

Номер

бита

0 10 20 30 40 50 60
1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234
Bitmap 0010001000 0100000000 0000000100 0100000010 1100000001 0010000000 0100

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