ISO-8583 Standartında BitMap Nasıl Hesaplanır?

Merhabalar.

Bu yazıda ISO-8583 standartında önemli bir yer tutan BitMap’in nasıl hesaplandığına bakacağız.

BitMap Nedir?

BitMap dediğimiz kavram bir ISO-8583 mesajı içerisinde hangi alanların olup hangilerinin olmadığını simgeleyen bir kavramdır. BitMap kavramı da kendi içinde Primary BitMap ve Secondary BitMap olmak üzere 2’ye ayrılır. Bir ISO-8583 mesajı içerisinde en fazla 128 eleman tutabilir ve bu elemanların numaraları 1’den 128’e kadar gider. Eğer bir ISO-8583 mesajı 1’den 64’e kadar alan içeriyorsa yani numarası 65 ve sonrasındakilerden birisi olan bir alan içermiyorsa bu durumda sadece Primary BitMap kullanmak yeterli olacaktır. Eğer bir ISO-8583 mesajı 65 ve sonraki elemanlardan 1 ya da daha fazlasını içeriyorsa bu kez Primary Bitmap ile birlikte Secondary BitMap de ilgili mesajın içerisinde yer alıyor olacaktır.

BitMap Nasıl Hesaplanır?

Bir ISO-8583 mesajı oluşturulurken mesajın en başında 2 byte MTI (Message Type Indicator) ile başlar. Akabinde eğer mesaj sadece Primary BitMap içerecekse 8 byte, Secondary BitMap içerecekse 16 byte BitMap ile devam eder. Bildiğimiz üzere 1 byte 8 bitten meydana gelmektedir. Bu durumda bir ISO-8583 mesajı eğer Primary Bitmap içerecekse 64 bit, Secondary BitMap içerecekse 128 bit BitMap tutuyor olacaktır. İşte bu BitMap’in içindeki her bir bit sırayla ISO-8583 mesajının bir alanı içerip içermediğini bize söylemektedir. Eğer mesaj o alanı içeriyorsa ilgili bit 1 olur, içermiyorsa 0 olur.

Örneğin finansal işlemdeki tutarı taşıyan 4 numaralı eleman BitMap’in ilk byte’ındaki 4. bit ile temsil edilmektedir. Eğer bir ISO-8583 mesajı F4 (DE4) alanını içeriyorsa Primary BitMap’in ilk byte’ındaki 4. bit 1 olacaktır.

Başka bir örnek ile devam edelim. Finansal işlemlerdeki STAN alanını taşıyan F11 (DE11) için 3. byte içerisindeki 3. bit kullanılacaktır. Eğer ISO-8583 mesajı F11 içeriyorsa 3. byte içerisindeki 3. bit 1 olacak, değilse 0 olacaktır.

Şimdi bir ISO-8583 mesajının sadece Primary BitMap içerdiğini düşünelim ve bu ISO mesajının içerisinde 2, 3, 4, 11, 12, 13, 22, 24, 25, 38, 41, 42, 43, 49 alanlarının olduğunu düşünelim. Bu durumda 64 bit ile temsil edilen Primary BitMap içerisinde 14 tane bitin değeri 1 olacak, geri kalan bitler 0 olacak. Oluşacak BitMap’in binary hali de şöyle olacak:

0111 0000 0011 1000 0000 0101 1000 0000 0000 0100 1110 0000 1000 0000 0000 0000

Gördüğümüz üzere her bir ISO alanının varlığı 64 bit içerisinde kendisine karşılık gelen bit numarası ile temsil ediliyor. İlk byte’ın 2., 3. ve 4. bitleri 1 çünkü ISO mesaj 2,3 ve 4 numaralı alanları içerisinde taşıyır. İşte BitMap hesaplanışının ilk aşaması da bu şekilde bir bit diziliminin elde edilmesidir.

ISO Mesaj İçerisinde BitMap Nasıl Taşınıyor?

BitMap’in nasıl oluşturulduğunu öğrendik, peki bu BitMap nasıl taşınacak? Esasında bir ISO mesaj oluşturulurken yukarıda bahsettiğimiz bit dizilimi BitMap oluşturulmasının ilk adımıdır. İkinci adım ise bu bit diziliminden HEX formatında bir değer elde edilmesidir. Yukarıda belirttiğimiz, içerisinde 2, 3, 4, 11, 12, 13, 22, 24, 25, 38, 41, 42, 43, 49 alanlarını taşıyan, bir ISO mesajın içerisinde BitMap de 7038058004E08000 değeri ile taşınacaktır. Bu değeri elde etmek için yukarıdaki bit dizilimin hex bir value’ya dönüştürmek gerek. Bu kullandığınız programlama diline, ortama göre değişeceği için bu konuda pek detaya girmiyorum ama Java’da bir örneği de sizinle paylaşayım:

public static void main(String[] args) {   

    String bitMap = "0111000000111000000001011000000000000100111000001000000000000000";

    String hexFormOfBitmap = new BigInteger(bitMap, 2).toString(16);

    System.out.println(hexFormOfBitmap);

}

Bu örneği çalıştırdığınızda o da size yukarıdaki HEX değeri verecektir. Artık geri kalan bu oluşan BitMap’ı MTI’ın arkasına eklemek olacaktır.

Sonuç

Bu yazıda bir ISO mesaj için BitMap’in nasıl oluşturabileceği hakkında bilgi edindik.

Başka bir yazıda görüşene kadar hoşçakalın.

NOT: Bir ISO mesaj eğer bir ilave header bilgisi ile başlatılacaksa bu durumda MTI ile başlayamabilir. Yani her zaman bir ISO mesaj MTI ile başlamaz, farklılaşan durumlar gereği önüne ilave bir bilgi eklenmesi de gerekebilir. Yazıda bu durum esgeçilmiştir fakat bunun BitMap oluşum aşamasına bir etkisi yoktur.

Latest posts by İlkay Günel (see all)

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir