Some checks failed
ci / build (push) Failing after 2s
TxCore/ECPG legacy 매입·정산 C 슬라이스(빌드검증) + Spring Boot 멀티모듈 골격(mvn test green) + MIGRATION.md 전환룰 + CI(boot 빌드).
54 lines
2.1 KiB
C
54 lines
2.1 KiB
C
/*
|
|
* msg_layout.h - 카드 매입 전문(電文) 고정길이 레이아웃
|
|
*
|
|
* 대외/대내 전문은 고정길이 위치기반(positional) 구조다. 각 필드는
|
|
* 널 종료가 없는 고정폭 char 배열이며, 숫자 필드는 좌측 zero-padding
|
|
* (예: 거래금액 000000012500). util_msg.c 가 pack/unpack 을 담당한다.
|
|
*/
|
|
#ifndef MSG_LAYOUT_H
|
|
#define MSG_LAYOUT_H
|
|
|
|
/* 전문구분 코드 */
|
|
#define MSG_TYPE_RECV "0200" /* 매입요청(수신) */
|
|
#define MSG_TYPE_RESP "0210" /* 매입응답 */
|
|
#define MSG_TYPE_RECON "0500" /* 정산/대사 */
|
|
|
|
/* 응답코드 */
|
|
#define RESP_OK "0000" /* 정상 */
|
|
#define RESP_INVALID "9001" /* 항목오류 */
|
|
#define RESP_NOMERCH "9002" /* 가맹점 없음 */
|
|
#define RESP_SYSERR "9999" /* 시스템 오류 */
|
|
|
|
/*
|
|
* 매입 요청 전문 헤더 + 바디 (총 MSG_ACQ_LEN 바이트)
|
|
* 필드 순서/폭이 곧 와이어 포맷이므로 재배치 금지.
|
|
*/
|
|
typedef struct {
|
|
char msg_type[4]; /* 전문구분 4 */
|
|
char trans_code[6]; /* 거래코드 6 */
|
|
char merch_id[15]; /* 가맹점번호 15 */
|
|
char card_no[16]; /* 카드번호(마스킹) 16 */
|
|
char approval_no[9]; /* 승인번호 9 */
|
|
char amount[12]; /* 거래금액 12 (zero-pad, 원) */
|
|
char txn_date[8]; /* 거래일자 8 (YYYYMMDD) */
|
|
char txn_time[6]; /* 거래시각 6 (HHMMSS) */
|
|
char inst_month[2]; /* 할부개월 2 (00=일시불) */
|
|
char resp_code[4]; /* 응답코드 4 */
|
|
char filler[18]; /* 예비 18 */
|
|
} acq_msg_t; /* 합계 100 바이트 */
|
|
|
|
#define MSG_ACQ_LEN ((int)sizeof(acq_msg_t)) /* = 100 */
|
|
|
|
/* 필드 폭 상수 (unpack 검증용) */
|
|
#define FLD_MSG_TYPE_LEN 4
|
|
#define FLD_TRANS_CODE_LEN 6
|
|
#define FLD_MERCH_ID_LEN 15
|
|
#define FLD_CARD_NO_LEN 16
|
|
#define FLD_APPROVAL_LEN 9
|
|
#define FLD_AMOUNT_LEN 12
|
|
#define FLD_TXN_DATE_LEN 8
|
|
#define FLD_TXN_TIME_LEN 6
|
|
#define FLD_INST_LEN 2
|
|
#define FLD_RESP_LEN 4
|
|
|
|
#endif /* MSG_LAYOUT_H */
|