ISO-8583

ISO-8583 คือ รูปแบบการรับ ส่ง message ระหว่างกัน ที่เป็นมาตรฐานสากล (International Standard) โดยเราต้องทำตาม  Message Specification ที่กำหนดไว้ใน ISO8583 document  ซึ่งเ่ท่าที่ได้ทำความรู้จักกับ message format แบบนี้ แล้ว เป็น format ที่ค่อนข้างยืดหยุ่นพอสมควรเลยทีเดียว

โครงสร้าง :

ในส่วนนี้ผมขอ อธิบายคร่าว ๆ นะครับ เพราะสามารถเข้าไปดู ความหมายของในแต่ละ ตำแหน่ง (position) ได้ใน ISO8583 document  หรือ ที่ wiki นี้ ซึ่งอธิบายไว้ได้ดีมากครับ.

ตำแหน่ง

4 positions : แรก คือ Message Type Identifier (MTI)  ผมขอเรียกว่า header ละกัน (เพราะมันฟังดูเข้าใจง่ายดี) โดย header จะระบุ ชนิดของ message อย่างเช่น  เป็น request message หรือ response message เราก็จะสามารถดูได้ใน 4 ตำแหน่งนี้ (นอกจากนี้ ถ้าอยากรู้รายละเอียดดูได้จาก wiki ข้างบน).

64 positions : ต่อมาคือ Bit map  อันนี้ชื่อมันก็บอกอยู่แล้วนะ ว่า เป็นแผนที่ ของ message ชุดนั้นๆ แต่ของงี้ต้องถูกซ่อนอยู่ข้างในแน่ๆ (และมันก็เหมือนแผนที่จริงๆ ซะด้วย) เอาล่ะมาดูกัน ว่ามันเป็นแผนที่ได้ยังไง ?

หลังจาก bitmap : จะเป็น data elements ไว้เก็บ data ต่่างๆ ตามที่ ถูกระบุไว้ใน bitmap (ดังนั้น ความยาวของ message จะขึ้นอยู่กับ bitmap )

ผมมีโจทย์ตัวอย่างเฉพาะของ bitmap ให้ดู (เพื่อการศึกษา)  3220058020C0022
คำถาม : อ้าว … มันต้องมีทั้งหมด 64 ตัวไง ไหนให้มาแค่ 16 ตัวเอง ..
ตอบ : ก็บอกแล้วไวว่ามันซ่อนอยู่ในนี้ ใจเย็นๆ ดูต่อไปละกัน

ก่อนอื่นเราต้องมารู้จัก โครงสร้าง และ วิธีการคำนวณหา bit map ก่อนโดยเริ่มจาก ความรู้พื้นฐานทางด้าน computer
เมื่อเรามาพิจารณาดู เราจะทำยังงัยให้ เลข 16 ตัว แตกออกมาเป็น 64 bit ได้ …

1 byte มี กี่ bit ?
แล้ว 8 bytes มีำี่ำกี่ bit ?
ตอบ 64 bits

ตัวเลข 8 กับ 64 ดูคุ้น ๆ … เออ เห็นมั๊ย มันเท่ากับ จำนวน ตำแหน่งของ bit map เลย

จากโจทย์ bitmap (3220058020C00022) มีทั้งหมด 16 ตัว
ทำงัยล่ะ?

ลองแปลงโจทย์ที่อยู่ในรูป เลขฐาน 16 (Hexadecimal Number) มา เป็น เลขฐาน 2 (ฺBinary Number) ที่มีขนาด 8 bytes  ดูจะได้

32        >      0011   0010
20        >      0010   0000
05        >      0000   0101
80        >      1000   0000
20        >      0010   0000
C0        >      1010   0000
00        >      0000   0000
22       >      0010   0010

รวมแล้วได้ 8 * 8 = 64 digits พอดี … ในที่สุดเราก็ได้แผนที่ ๆ ซ่อนอยู่ออกมาแล้ว (ไม่รู้ตัวเลย) คือ
00110010  00100000   00000101   10000000   00100000   10100000   00000000   00100010
นับตามตำแหน่งเลย จนถึงตัวสุดท้ายคือ ตำแหน่งที่ 64
1,2,3,4,5,6,7,8,   9, 10, 11, 12, 13, 14, …………………………………………………………………………………, 64

แล้ว bit ไหนมีค่าเป็น 1 คือ bit ที่่ถูกใช้เป็น data element (ดูในรูปข้างบน)  เช่น 00110010  …
ดังนั้น bit : 3,4,7, .. จะถูกใช้ใน data elements
จากนั้น นำ  data elements ที่ได้มาไปเทียบในตาราง ISO-Defined Data Elements (ปรกติอยู่ใน ISO-8583 document) หรือเทียบดูใน ตาราง ISO-Defined Data Elements ใน wiki ก็ได้  จากตัวอย่างนี้เราก็จะได้ว่า
ค่าดังนี้
bitmap number ที่ 3 คือ Processing code เป็น ตัวเลขจำนวน 6 ตัว
bitmap number ที่ 4 คือ Amount, transaction เป็นตัวเลขจำนวน 12 ตัว
bitmap number ที่ 7 คือ Transmission date & time เป็นตัวเลขจำนวน 10 ตัว
….
เทียบจากตารางต่อไปเรื่อยๆ จนจบ
เท่า่นีั้เราก็จะรู้ถึง ชนิดของข้อมูล และ ความยาวในแต่ละชนิด  เพื่อใช้ ส่ง และ รับ ข้อมูลที่ เป็น format ISO8583 ..

Tags:

One Response to “ISO-8583”

  1. roofimon Says:

    cool เอาให้เทพเลยนะ

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: