구독 결제 검증 강화와 등급 동기화 일관성 확보
목차
구독 결제 플랫폼에서 빌링키 관리와 웰컴 등급 정책을 동시에 정리한 작업을 기록으로 남긴다.
왜 이 작업이 필요했나
구독 모델을 운영하는 이커머스 플랫폼에서 가장 중요한 게 하나 있다면, 결제 데이터의 일관성일 거다. 빌링키는 고객의 정기 결제를 자동화하는 핵심 데이터인데, 한 번 등록되면 여러 흐름에서 참조되고 검증된다. 이번에는 두 가지 일을 동시에 손봤다.
첫째, 구독 빌링키 등록 시 가드 추가.
결제 게이트웨이(PG) 연동에서 빌링키는 고객과 결제수단을 잇는 토큰 같은 역할을 한다. 이게 중복으로 등록되거나 이미 유효한 상태에서 다시 등록되면, PG 쪽에서도 우리 시스템에서도 혼란이 생긴다. 빌링키가 이미 존재하고 유효한 상황에서는 재등록하지 않도록, 웹 컨트롤러 레이어에서 조건을 미리 검사하는 로직을 추가했다.
둘째, 웰컴 등급 마스터 동기화 정리.
웰컴 등급은 신규 고객 대상 프로모션 정책인데, 2026년 6월 시점에서 비활성화됐다. 이 정책이 여러 곳에서 참조되는데—등급 조회, 적용, 검증—각 위치마다 일관된 주석이 없으면 나중에 누군가 그 로직을 수정할 때 의도를 놓치기 쉽다. 그래서 웰컴 등급 마스터 동기화 로직이 있는 2곳에 "웰컴 비활성 [2026-06]" 같은 주석을 명확히 달았다.
작업 내용
| 항목 | 상세 |
|---|---|
| 빌링키 가드 | 구독 결제 등록 시 기존 빌링키 유효성 검사 추가 (grade/web 레이어) |
| 등급 마스터 동기화 | 웰컴 등급 참조 로직 2곳에 비활성 시점 및 이유 주석 추가 (utl 레이어) |
| 검증 도구 반영 | 코드 정적 분석/검증 도구(codex) 3차 피드백 통합 |
빌링키 검증 로직은 단순하지만 치명적인 결함을 막는다. 예를 들어:
if (existingBillingKey != null && isValidAt(existingBillingKey)) {
// 이미 유효한 빌링키가 있으면 재등록하지 않음
return skipRegistration("키 이미 존재");
}
// 신규 등록 또는 만료 키 갱신 진행
registerNewBillingKey(customer, paymentMethod);
웰컴 등급 주석은 한 번 더 중요하다. 나중에 이 코드를 본 누군가가 "왜 웰컴이 여기 안 나와?" 하고 헷갈리지 않도록, 현재 정책 상태와 변경 시점을 명기해 두는 게 유지보수의 첫걸음이다.
이 작업에서 배운 것
마스터 데이터의 일관성은 한 곳이 아니다
팀으로 일하다 보면, 한 비즈니스 개념(예: 웰컴 등급)이 여러 모듈에 흩어져 있는 경우가 많다. 등급 조회, 적용, 검증 등이 각기 다른 유틸과 웹 로직에 있는 거다. 이 경우 한 곳만 손질하면 안 되고, 관련된 모든 곳을 찾아서 일관되게 정리해야 한다. 그렇지 않으면 나중에 버그나 의도하지 않은 동작이 튀어나온다.
주석 하나가 팀 비용을 줄인다
코드 리뷰나 유지보수할 때 가장 자주 나오는 질문이 "이게 왜 이렇게 돼있어?" 다. 특히 비즈니스 정책이 변할 때마다 레거시 로직이 생기는데, 그때 주석이 없으면 후배 개발자(또는 6개월 뒤의 나)가 처음부터 git log를 파고 들어야 한다. 정책 변경 시점, 이유, 영향 범위를 주석으로 박아두는 것이 팀 전체의 의사소통 비용을 크게 줄인다.
검증 도구와의 협업
코드 검증 도구(codex)에서 3차로 피드백이 들어왔다는 건 "1차 때는 놓쳤는데 이번에 발견" 또는 "이전 수정 후 추가로 확인한 부분"이란 뜻이다. 이건 단순 버그 수정이 아니라 팀의 리뷰 사이클이 반복적으로 작동하고 있다는 신호다. CI에서 자동으로 실행되는 검증을 신뢰하고, 그 피드백을 차근차근 반영하는 문화가 결국 시스템 품질을 높인다.
다음
결제 데이터의 무결성은 한두 번의 fix로 끝나지 않는다. 새 정책이 추가되거나 PG 연동이 바뀔 때마다 관련 로직들을 다시 한 번 훑어봐야 한다. 이번 작업을 통해 "여러 곳을 동시에 정리한다", "현재 정책 상태를 주석으로 명기한다" 같은 패턴을 팀과 공유했고, 그게 앞으로 비슷한 작업을 할 때 기준점이 되길 바란다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.