Wave L: 외부 연동·전문처리 (ISO8583 와이어·소켓 왕복·클리어링 파일, 패리티→~89%)
외부 카드망 연동(전문처리)을 실제 프로토콜로 구현 — 마이그레이션 최난이도 계층 (소켓·바이너리 전문·프레이밍·상태처리)이 실제로 동작. ■ ISO 8583 와이어 코덱 (common/acq_iso8583.c) - 1차 비트맵(64bit) + DE 인코딩/파싱(PAN LLVAR·금액·STAN·RRN·응답코드·MID/TID 등). - iso_build/iso_parse 왕복 무손실 검증(비트맵 7220000000C08000 정확). ■ 외부 카드망 시뮬레이터 (clients/acq_extsw.c, :9500) - TCP 서버: 길이접두 프레이밍 + ISO 전문. 0200 수신→승인판정→0210 응답 조립 (DE38 승인번호·DE39 응답코드). 금액임계/STAN으로 일부 거절(05). ■ 전문 왕복 드라이버 (clients/acq_netdrv.c) - 실매입건→0200 조립→소켓 전송→0210 수신·파싱→mg_netlog 적재(RTT·응답코드). - 실측: 200건 왕복 승인198/거절2/오류0, 0200→0210, 평균 RTT 0.3ms. ■ 클리어링 파일 교환 (clients/acq_clrfile.c) - cl_presentment→고정폭 정산파일(/app/out/CLR_BC_YYYYMMDD.dat) HD/DT/TR+체크섬 생성, cl_clearing_file 등록. 실제 SFTP 배치 파일교환 대역. 샘플 파일 커밋. ■ 스키마·부팅·화면 - 74-netio.sql: mg_netlog(왕복로그)·cl_clearing_file(파일 레지스트리). - entrypoint.sh: acq_extsw 부팅 자동기동(:9500). - build.sh: 클라이언트에 libacqcommon.a(ISO 코덱) 링크. - 시스템현황에 "외부망 전문 왕복"·"클리어링 파일 교환" 패널. 패리티 재채점 ≈89/100. 남은 ~11%는 상용회선·HSM·다중센터 DR 등 배포 인프라. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
bba433308a
commit
12812a6c33
12 changed files with 525 additions and 4 deletions
43
db/schema.d/74-netio.sql
Normal file
43
db/schema.d/74-netio.sql
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
-- ===========================================================================
|
||||
-- 74-netio.sql : 외부 연동·전문처리 (Wave L)
|
||||
-- 외부 카드망(밴사/VAN) ISO 8583 왕복 로그 + 클리어링 파일 교환 레지스트리 +
|
||||
-- store-and-forward 큐 확장. 소켓·바이너리 전문처리 계층.
|
||||
-- ===========================================================================
|
||||
|
||||
-- 외부 전문 왕복 로그 (요청 0200 → 응답 0210, 왕복시간·응답코드)
|
||||
CREATE SEQUENCE IF NOT EXISTS mg_netlog_seq START 600000;
|
||||
CREATE TABLE IF NOT EXISTS mg_netlog (
|
||||
net_id BIGINT PRIMARY KEY,
|
||||
purchase_id BIGINT,
|
||||
channel TEXT NOT NULL DEFAULT 'CH01',
|
||||
peer TEXT NOT NULL DEFAULT 'BC-NET', -- 상대망(BC-NET/VISANET/...)
|
||||
req_mti TEXT NOT NULL,
|
||||
rsp_mti TEXT,
|
||||
stan TEXT,
|
||||
rrn TEXT, -- 참조번호(DE37)
|
||||
resp_code TEXT, -- DE39: 00=승인 05=거절 91=타임아웃
|
||||
approval_no TEXT, -- DE38
|
||||
amount BIGINT NOT NULL DEFAULT 0,
|
||||
rtt_ms INTEGER NOT NULL DEFAULT 0, -- 왕복시간(ms)
|
||||
req_wire TEXT, -- 요청 전문(hex)
|
||||
rsp_wire TEXT, -- 응답 전문(hex)
|
||||
status TEXT NOT NULL DEFAULT 'OK', -- OK/TIMEOUT/ERROR
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS ix_netlog_pid ON mg_netlog(purchase_id);
|
||||
CREATE INDEX IF NOT EXISTS ix_netlog_rc ON mg_netlog(resp_code);
|
||||
|
||||
-- 클리어링 파일 교환 레지스트리 (아웃바운드 프레젠트먼트 / 인바운드 정산파일)
|
||||
CREATE SEQUENCE IF NOT EXISTS cl_file_seq START 640000;
|
||||
CREATE TABLE IF NOT EXISTS cl_clearing_file (
|
||||
file_id BIGINT PRIMARY KEY,
|
||||
direction TEXT NOT NULL, -- OUT(프레젠트먼트)/IN(정산)
|
||||
filename TEXT NOT NULL,
|
||||
scheme TEXT NOT NULL DEFAULT 'BC',
|
||||
biz_date DATE NOT NULL,
|
||||
rec_count BIGINT NOT NULL DEFAULT 0,
|
||||
total_amount BIGINT NOT NULL DEFAULT 0,
|
||||
checksum TEXT,
|
||||
status TEXT NOT NULL DEFAULT 'GENERATED',-- GENERATED/SENT/ACKED/INGESTED
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
Loading…
Add table
Add a link
Reference in a new issue