This repository has been archived on 2026-07-19. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
acquire-core-migration/legacy/app/include/msg_layout.h
forge-bot ff0b0b60a2
Some checks failed
ci / build (push) Failing after 2s
chore: acquire-core migration monorepo (legacy C + Spring Boot target skeleton)
TxCore/ECPG legacy 매입·정산 C 슬라이스(빌드검증) + Spring Boot 멀티모듈 골격(mvn test green) + MIGRATION.md 전환룰 + CI(boot 빌드).
2026-07-18 09:55:46 +00:00

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 */