ISO 8583 ile ilgili ön bilgileri alttaki linkte anlatmıştık.
ISO 8583 mesaj yapısı ve bu yapıların detaylarını bu yazımızda bulacaksınız.
ISO 8583 Mesaj Yapısı
ISO 8583 mesajı 3 ana bölümden oluşur:
- MTI (Mesaj Tipi Göstergesi )
- Bitmap ( mesajda hangi veri elemanlarının bulunduğunu gösteren alan)
- Data Element (Mesaj içerik alanları)
Uygulama Verileri
Al # | Açıklama |
0 | MTI Mesaj Türü Göstergesi |
1 – Bitmap | Diğer alanların varlığını/yokluğunu belirten 64 (veya 128) bit |
2 – 128 | Bitmap’te belirtilen diğer alanlar |
Kısaca veri akışını aşağıdaki şekilde görselleştirebiliriz:
Şimdi bu alanların detaylarını inceleyelim:
Mesaj Türü Göstergesi (MTI):
Mesajın üst düzey fonksiyonunu belirten 4 basamaklı nümerik alandır.
ISO versiyonu – Mesaj Sınıfı – Mesaj Fonksiyonu – Mesajın Yönü
Birinci Alan: ISO mesajın versiyonunu verir;
0xxx | ISO 8583: 1987 versiyonu |
1xxx | ISO 8583: 1993 versiyonu |
2xxx | ISO 8583: 2003 versiyonu |
3xxx | ISO kullanımı için ayrılmıştır |
4xxx | ISO kullanımı için ayrılmıştır |
5xxx | ISO kullanımı için ayrılmıştır |
6xxx | ISO kullanımı için ayrılmıştır |
7xxx | ISO kullanımı için ayrılmıştır |
8xxx | Ulusal kullanım için ayrılmıştır |
9xxx | Özel kullanım için rezerv |
İkinci Alan:Mesaj sınıfını belirtir.
Mesaj sınıfı | Açıklama |
x1xx | Yetkilendirme Mesajı |
x2xx | Finansal mesaj |
x3xx | Dosya Eylemleri Mesajı |
x4xx | İade ve ChargebackMesajı |
x5xx | Mutabakat Mesajı |
x6xx | İdari Mesaj |
x7xx | Ücret Toplama Mesajı |
x8xx | Network Mesajı |
x9xx | ISO kullanımı için ayrılmıştır |
Üçüncü Alan: Mesaj Fonksiyonunu belirtir.
İleti Alt Sınıfı | Açıklama |
XX00 | Request mesajı |
xx10 | Response Mesajı |
xx20 | Advice Mesajı |
xx30 | Advice Cevap Mesajı |
xx40 | Notifikasyon(Bildirim) Mesajı |
xx50 – xx90 | ISO kullanımı için ayrılmıştır |
Dördüncü Alan: Mesajın yönünü gösterir.
Dördüncü alanı birer birer arttırmak bir tekrar talebini gösterir (x300 mesajlar hariç). Örneğin: 1100 = Otorizasyon Talebi ; 1101 Otorizasyon Talebi Tekrar.
İşlem Yapıcı | Açıklama |
0 | Acquirer |
1 | Acquirer Tekrar |
2 | Issuer |
3 | Issuer Tekrar |
4 | Diğer |
5 | Diğer Tekrar |
6 – 9 | ISO kullanımı için ayrılmıştır |
Dolayısıyla MTI değerini bilerek mesajın türünü belirleyebiliriz. Örneğin: MTI değeri 1200 ise,
- İlk alan Versiyon Numarası içindir ve MTI’deki değer 1’dir, bu yüzden mesaj versiyonu ISO 8583: 1993’e dayanmaktadır.
- İkinci alan Mesaj Sınıfı içindir ve MTI’deki değer 2’dir, bu yüzden mesaj bir finansal mesajdır.
- Üçüncü alan mesaj alt sınıfı / işlevi içindir ve MTI değeri 0’dır, bu yüzden verilen mesaj bir istek mesajdır.
- Dördüncü alan İşlem Yürütücüsü içindir ve MTI değeri 0’dır, bu yüzden mesaj Alıcıdan gelir.
- Bütün bunları birleştirdiğimizde MTI değeri 1200 olan bu mesajı Acquirer tarafından gönderilen bir ISO 1993 Finansal İstek Mesajıdır.
Yukarıdaki verileri özetlersek; genel olarak kullanılan MTI değerleri ve açıklamaları aşağıdaki gibidir:
Description | |
x100 | Authorization Request |
x101 | Authorization Request Repeat |
x102 | Authorization completion confirmation |
x103 | Authorization completion confirmation repeat |
x110 | Authorization Response |
x112 | Authorization completion response |
x120 | Authorization Advice |
x121 | Authorization advice repeat |
x122 | Authorization advice completion confirmation |
x123 | Authorization advice completion confirmation Report |
x130 | Authorization Advice Response |
x132 | Authorization advice completion response |
x200 | Financial Request |
x210 | Financial Response |
x220 | Financial Advice |
x230 | Financial Advice Response |
x300 | Acquirer File Update Request |
x302 | Issuer File Update Request |
x310 | Acquirer File Update Response |
x312 | Issuer File Update Response |
x320 | Acquirer File Update Advice |
x322 | Issuer File Update Advice |
x330 | Acquirer File Update Advice Response |
x332 | Issuer File Update Advice Response |
x400 | Acquirer Reversal Request |
x402 | Issuer Reversal Request |
x410 | Acquirer Reversal Request Response |
x412 | Issuer Reversal Request Response |
x420 | Acquirer Reversal Advice |
x422 | Issuer Reversal Advice |
x430 | Acquirer Reversal Advice Response |
x432 | Issuer Reversal Advice Response |
x5xx | Reconciliation Request Messages |
x6xx | Administrative Request Messages |
x800 | Network Management Request |
x810 | Network Management Request Response |
Bitmap
Bir bitmap, mesaj içinde hangi Veri Öğelerinin(Data Element) mevcut olduğunu belirtmek için ISO 8583 iletisinde kullanılan bir dizinleme tekniğidir.
Belirli bir mesajdaki bir veri elemanının varlığı, atanan pozisyondaki bir (1) ile gösterilir; Sıfır (0) atanan pozisyonda bir veri elemanının olmadığını gösterir. Her bir uygulama işlemi bir (1) bit haritası içerir. Bir bit haritası, bit 1 ile başlayan soldan numaralandırılmış 64 bitten oluşur. Bit haritasının ilk biti, bir ikincil bit haritasıdır. Herhangi bir ISO mesajı ikincil bit haritası işlemeyi desteklemiyorsa, bit haritasının ilk biti ‘0’dır.
Bit 1 | Bit 2 | Bit 3 | Bit 4 | … | Bit 64 |
Alan 1 İkincil bit haritası varsa ‘1’, yoksa ‘0’ | Alan 2 Kart Numarası | Alan 3 İşleme Kodu | Alan 4 Miktar, Trans | Alan 64 İleti Kimlik Doğrulama Kodu |
Bir mesaj, Birincil Bitmap olarak adlandırılan en az bir bitmap içerir ve bu da Veri Öğeleri 1’in varlığını 64’e kadar gösterir.
İkincil Bitmap , Veri Öğesi 1’de bulunabilir ve bu nedenle Birincil Bitmap’deki ilk bit, içinde ikincil bitmap olup olmadığını belirtir
ISO 8583 standardının en son sürümüne göre; bir mesaj en fazla üç bitmap içerebilir. Bitmap 8 bayt (binary) olarak iletilebilir veya bazen 16 onaltı hexadecimal karakterlerle (1-9, AF (ASCII)) içinde açılmamış olarak 8 byte olabilir.
Data Elements (Veri Öğeleri)
Veri Öğeleri, işlemin bilgilerini taşıyan alanlardır. Orjinal ISO 8583 (1987) standardında 128 veri öğesine kadar desteklenirken; sonraki sürümlerde 192 veri öğesine kadar desteklenebilmektedir. Her Veri Öğesinin belirli bir anlamı ve formatı vardır.
Örneğin: Bit Değeri 2, Birincil Hesap Numarası; 3, Processing Code; 4, İşlem Tutarı için kullanılmaktadır.
Her bir data element için ISO, veri formatını ve boyutunu belirtir. ISO ayrıca belirli bir mesaj için tüm data elementinin zorunlu veya opsiyonel olup olmadığını belirtir.
Data Element Formatı
ISO-8583, temel olarak aşağıdaki kategorilere giren farklı tür alanları belirtir:
Fixed Length
• Numeric
• Alphanumeric
• Binary
Variable length
Max-length 99
• Numeric
• Alphanumeric
• Binary
Max-length 999
• Numeric
• Alphanumeric
• Binary
Nested message
Alan Türü Özellikleri
Kısaltma | Anlam |
a | Boşluklar dahil olmak üzere alfabetik |
n | Yalnızca Sayısal Değerler |
s | Sadece özel karakterler |
an | alfanümerik |
as | Sadece alfabetik ve özel karakterler |
ns | Sadece Sayısal ve Özel Karakterler |
ans | Alfabetik, sayısal ve Özel Karakterler |
b | Binary |
z | ISO 7811 ve ISO 7813’te tanımlandığı gibi 2 ve 3 kodlu parçalar izler |
h | Hexdata |
LL, LLL | Takip eden değişken alanın uzunluğu. ‘LL’ – İki haneli uzunluk göstergesi (1 bayt BCD) ‘LLL – 3 haneli uzunluk göstergesi (2 bayt BCD) |
..17..125 | 17’ye kadar değişken alan. ‘..’, takip edilecek değişken verilerinin uzunluğunu tanımlayan basamak sayısını belirten iki basamaklı bir uzunluk göstergesidir (1 bayt BCD).125 karaktere kadar değişken alan. ‘…’, Takip edilecek değişken verilerinin uzunluğunu tanımlayan basamak sayısını belirten üç haneli bir uzunluk göstergesidir (2 bayt BCD). |
Bir data element sabit veya değişken uzunlukta olabilir.
Bir mesajdaki uzunluk göstergeci, değişken uzunluklu alan mesajı öncesinde gösterilir.
Sabit Uzunluk Veri Elemanı
Sabit uzunluklu Veri Elemanları ISO 8583 standardında tanımlanmış bir uzunluğa sahiptir ve mesajda uzunluk göstergesine gerek yoktur. Bunlar, izin verilen içerikten sonra uzunluğu da içerecek şekilde belirtilir.
Örneğin; Veri Elemanı 3, 6 haneli nümerik sabit uzunlukta bir alan anlamına gelen ‘n6’ formatına sahiptir.
Değişken Uzunluklu Veri Elemanı
Sabit uzuluk haricindeki veri elemanları değişken uzunluğa sahip olabilir ve mesajdaki veri elemanından önce bir uzunluk göstergesi eklenir. Uzunluk göstergesinin kendisi tanımlanmış bir uzunluğa sahiptir.
Örneğin, 1 basamaklı bir uzunluk göstergesi sadece 1 ile 9 arasında bir uzunluğa sahip değişken uzunluklu bir alan için yeterlidir, 3 basamaklı bir uzunluk göstergesi ise 999’a kadar alan değerlerini destekleyebilir.
Değişken uzunluk alanları, iki nokta ‘..’ ile gösterilir ve bunu alanın maksimum uzunluğu takip eder. Uzunluk göstergesi, uzunluk göstergesinin uzunluğuna karşılık gelen bir dizi ‘L’ karakteriyle temsil edilir.
Örneğin, Veri Elemanı 2, nümerik sayı n..19’dur, LLVAR, 2 haneli uzunluk göstergesi ile birlikte en fazla 19 nümerik haneye sahip bir alan anlamına gelir.
Değişken uzunluk alanlarının uzunluğunu belirten bir prefix vardır, ancak ISO standartlarında bunun nasıl gösterileceği tanımlanmamıştır. Bu nedenle farklı vendorlar farklı gösterimleri kullanmaktadır. (Örneğin BCD, EBCDIC, ikili değer).
Örnek Mesaj Çözümlemeleri
Örnek 1: 0800 Mesajı
# | İsim | Değer | Hex Değeri |
0 | MTI | 0800 | 08 00 |
1 | BİRİNCİL(PRIMARY) BITMAP | 3, 11 ve 41 alanlarının varlığını gösterir. | 20 20 00 00 00 80 00 00 |
3 | İŞLEM KODU | 000000 | 00 00 00 |
11 | STAN (System Trace Audit Number) | 000001 | 00 00 01 |
41 | CARD ACCEPTOR TERMINAL IDENTIFICATION | 29110001 | 32 39 31 31 30 30 30 31 |
İşte 0800 mesajımızın ikili temsili:
080020200000008000000000000000013239313130303031
Yukarıdaki örnekte, 0800 mesaj tipi göstergedir ; ilk pozisyon versiyon numarasını gösterir:
• 0 versiyon 1987
İkinci pozisyon mesaj sınıfıdır :
• 8 network management(ağ yönetimi)
Üçüncü konum mesaj alt sınıfı / işlevidir :
• 0 istek(request) talebi
Ve son pozisyon işlem yönünü tanımlamak için kullanılır.
• 0 acquirer
Yani “0800” 1987 bir ağ yönetim talebi sürümüdür.
Ardından alan 1, birincil bitmap değeri var:
Birincil Bitmap
Byte | Hex Değeri | Bit Değeri | Alan # |
0 | 20 | 0010 0000 | 3 |
1 | 20 | 0010 0000 | 11 |
2 | 00 | 0000 0000 | |
3 | 00 | 0000 0000 | |
4 | 00 | 0000 0000 | |
5 | 80 | 1000 0000 | 41 |
6 | 00 | 0000 0000 | |
7 | 00 | 0000 0000 |
MTI, (0800) bitmap’i (2020000000800000) ayrıştırdık.
3, 11 ve 41 alanlarının dolu olduğunu biliyoruz, böylece bir sonraki alanımız 3.alanı inceleyelim:
Örneğimizde, # 3 alanı BCD formatında kullanılmış. Bu yüzden “000000” değeri, değerleri “00 00 00” olan üç bayt ile gösterilir.
Aynı hesaplama “000001” olan field # 11 için de geçerlidir, “00 00 01” olarak gösterilir.
Örneğimizde, # 41 alanı 8 ASCII karakter olarak temsil edilen 8 baytlık bir alfanümerik alandır.
Mesaj: 08002020 00000080 00000000 00000001
32393131 30303031
MTI: 0800
Bitmap: 20200000 00800000
Alan 03: 000000
Alan 11: 000001
Alan 41: 3239313130303031 (“29110001” için ASCII)
2. Örnek: Başka bir 0800 mesajı
# | İsim | Değer | Hex Değeri |
0 | MTI | 0800 | 08 00 |
1 A | PRIMARY(Birincil) BITMAP | İkincil bitmapin var olup olmadığı + 3, 11 ve 41 alanlarının varlığını belirtir. | A0 20 00 00 00 80 00 10 |
1.b | İKİNCİ BITMAP | Alan varlığını gösterir 70 | 04 00 00 00 00 00 00 00 00 |
3 | İŞLEM KODU | 000000 | 00 00 00 |
11 | STAN (System Trace Audit Number) | 000001 | 00 00 01 |
41 | CARD ACCEPTOR TERMINAL IDENTIFICATION | 29110001 | 32 39 31 31 30 30 30 31 |
60 | ÖZEL KULLANIM İÇİN RESERVE | TEST MESAJI | 00 10 54 45 53 54 20 4D 45 53 53 47 |
70 | NETWORK MANAGEMENT INFORMATION CODE | 301 | 03 01 |
Yukarıdaki örnekte, # 60 ve # 70 olmak üzere iki yeni alan bulunmaktadır. İşte mesaj temsilimiz:
Mesaj: 0800A020 00000080 00100400 00000000
00000000 00000001 32393131 30303031
00105445 5354204D 45535347 0301
MTI: 0800
Birincil bitmap: A0200000 00800010
İkincil bitmap: 04000000 00000000
Alan 03: 000000
Alan 11: 000001
Alan 41: 3239313130303031 (“29110001” için ASCII)
Alan 60: 0010 54455354204D45535347 (uzunluk = 10, değer = “TEST MESSG”)
Alan 70: 0301
Bu bitmapi parçalayalım:
Birincil Bitmap
Bayt | Hex Değeri | Bit Değeri | Alan # |
0 | A0 | 1010 0000 | İkincil bitmap artı # 3 mevcut |
1 | 20 | 0010 0000 | 11 |
2 | 00 | 0000 0000 | |
3 | 00 | 0000 0000 | |
4 | 00 | 0000 0000 | |
5 | 80 | 1000 0000 | 41 |
6 | 00 | 0000 0000 | |
7 | 10 | 0001 0000 | 60 |
İkincil Bitmap
Örnek Otorizasyon Cevabı
Alan # | Açıklama | değer | Yorumlar |
0 | MTI | 0110 | Otorizasyon Cevabı |
2 | Kart Numarası | 4321123443211234 | |
3 | Processing Code | 000000 | |
4 | İşlem Tutarı | 000000012300 | 123.00 |
7 | İşlem Tarihi | 0304054133 | MMYYHHMMSS |
11 | STAN | 001205 | |
14 | Son kullanma Tarihi | 0205 | YYMM |
18 | Merchant Type | 5399 | |
22 | POS Entry Mode | 022 | Manyetik |
25 | POS Condition Code | 00 | |
35 | 4321123443211234 = 02.051 | 2312312332 | Track2 |
37 | RRN | 206305000014 | |
38 | n Numarası | 010305 | |
38 | Response Code | 00 | onaylı |
41 | Teminal ID | 29110001 | |
42 | Acquirer ID | 1001001 | |
49 | Currency | 840 | Amerikan Doları |