유틸리티

QR코드 결제 시스템 개발과 매출 정산 로직 구현기

핀테크 스타트업에서 QR코드 결제 시스템을 개발한 경험이 있다. 매장에서 QR을 찍으면 결제가 되고, 정산일에 수수료를 제외한 금액이 가맹점에 입금되는 구조다. QR코드 생성기로 만드는 단순 QR과 달리, 결제용 QR는 보안과 정산 로직이 복잡하다.

결제용 QR의 구조

결제용 QR코드에는 가맹점 ID, 결제 금액, 유효 시간, 서명값 등이 인코딩되어 있다. 이걸 JSON으로 만들고 암호화해서 QR로 변환한다. 사용자가 QR을 스캔하면 앱에서 복호화해서 결제를 진행한다.

{ "merchantId": "M12345", "amount": 15000, "timestamp": 1709251200, "signature": "abc123..." }

kacao.kr/qr-generator에서 URL QR을 만들어본 적 있다면, 데이터를 담은 QR를 만드는 원리는 비슷하다. 다만 결제용은 보안 레이어가 추가된다.

수수료 구조와 정산

QR 결제에는 여러 단계의 수수료가 있다. PG사 수수료, 카드사 수수료, 플랫폼 수수료 등이다. 보통 전체 2~3% 정도인데, 이걸 각 주체에게 분배하는 정산 로직이 필요하다.

const merchantAmount = paymentAmount * 0.97; // 가맹점 정산액 const pgFee = paymentAmount * 0.015; // PG사 수수료 const platformFee = paymentAmount * 0.015; // 플랫폼 수수료

정산은 보통 D+1 ~ D+3에 이뤄진다. 이 기간 동안 취소/환불이 발생하면 정산 금액에서 차감해야 한다.

정산 자동화

매일 수천 건의 거래가 발생하면 수동 정산은 불가능하다. 배치 작업으로 새벽에 전일 거래를 집계하고, 가맹점별 정산액을 계산해서 은행 API로 이체 요청을 보낸다. 이체 결과를 확인하고 정산 완료 처리까지 자동화해야 운영이 가능하다.

세금 신고 연동

가맹점 입장에서는 QR코드 결제 매출도 세금 신고 대상이다. 결제 플랫폼에서 월별 매출 리포트를 제공하고, 세금계산서 발행 연동까지 지원하면 가맹점 만족도가 높아진다. 개인사업자가 많은 가맹점들은 특히 이 기능을 중요하게 생각한다.

QR 보안 고려사항

QR코드는 누구나 스캔할 수 있어서 위변조 방지가 중요하다. 결제용 QR에는 반드시 타임스탬프와 서명을 포함해서, 오래된 QR이나 조작된 QR을 거부할 수 있어야 한다. 유효 시간은 보통 5분 이내로 설정한다.

핵심 포인트

QR 결제 시스템은 생성-결제-정산-신고까지 전 과정이 연결되어 있다. 단순히 QR코드 생성만으로 끝나는 게 아니라, 금융 시스템 전체를 이해해야 제대로 구현할 수 있다.