ISO 8583은 주요 카드 네트워크 간에 실시간 메시지를 주고받기 위한 표준임. 이 표준은 판매 시점 장치에서 카드를 터치하거나 온라인에서 "구매"를 클릭할 때 발생하는 메시지를 정의함. 초기에는 판매 시점 장치나 ATM이 직접 ISO 8583 메시지를 생성하여 수취인에게 보냈으나, 현재는 상인에서 결제 처리기로 메시지가 전달된 후 카드 네트워크의 ISO 8583 기반 형식으로 변환됨. ISO 8583 메시지는 메시지 유형 지시자, 비트맵, 데이터 요소로 구성됨. 메시지 유형 지시자는 4자리 코드로, 메시지의 유형을 나타냄. 비트맵은 각 필드의 존재 여부를 나타내며, 데이터 요소는 비트맵에 따라 순차적으로 직렬화됨. 데이터 요소는 원시 값이나 복합 값으로 구성될 수 있으며, 각 필드의 인코딩 방식은 다양함. EBCDIC, ASCII, Packed BCD, Binary 등의 인코딩 방식이 사용됨. 필드는 고정 길이 또는 가변 길이로 직렬화될 수 있음. ISO 8583 표준은 네트워크가 필요에 따라 사용자 정의 데이터를 직렬화할 수 있는 "개인용" 필드를 예약함. 중첩 메시지는 테이블, 중첩 비트맵 메시지, 태그 길이 값(TLV) 메시지로 직렬화될 수 있음. ISO 8583 메시지를 파싱하는 것은 비트맵 파서와 각 필드의 길이 정의를 구현하는 것으로 시작됨. 복잡한 중첩 하위 메시지를 처리하는 것이 주요 과제임. Increase에서는 Ruby와 Sorbet 타입 시스템을 사용하여 ISO 8583 파서를 정의함. 파서에서 오류를 우아하게 처리하는 것이 중요함. 특히 발급 처리기는 전 세계의 많은 수취인으로부터 승인 요청을 받기 때문에 메시지를 파싱하지 못하면 카드 소지자에게 불편을 초래할 수 있음. 하위 메시지에서 오류가 발생할 경우 다음 필드를 계속 처리할 수 있도록 바이트 스트림을 분할하여 처리함. ISO 8583 메시지를 파싱하는 과정에서 발생하는 복잡성을 탐구하고, 1987년에 정의된 초기 ISO 8583 표준에서 어떻게 발전해왔는지를 살펴봄. Increase는 카드 네트워크 메시지를 파싱하여 제품 개발에 집중할 수 있도록 지원함.
ISO 8583: 신용카드의 언어
기본 형식
데이터 요소
중첩 메시지
파서 구축
오류 처리
결론