개발 slecs

결제 PG 목(MOCK) 제거와 실응답 파싱 구조 정비

목차

결제 PG 플랫폼(Zlgoon) 통합 코드에서 개발 단계의 MOCK 모드를 완전히 제거하고, 실제 응답 형식에 맞춰 파싱 로직을 정비한 작업이다. 백엔드와 프론트엔드 양쪽을 함께 손봤는데, 여기엔 단순 정리가 아닌 여러 의사결정과 팀 조율이 담겨 있다.

MOCK에서 벗어나는 그 순간

프로젝트 초기에는 항상 MOCK 모드가 필요하다. PG 시스템 연동 전에 개발을 병렬로 진행하려면, 결제 응답을 시뮬레이션해야 한다. 하지만 여기서 중요한 판단이 필요하다. MOCK 코드를 언제까지 유지할 것인가?

내 기준은 이렇다:
- 실서비스 배포 시점에는 MOCK 로직을 완전히 제거한다 (코드 복잡도 ↓, 유지보수 부담 ↓)
- 테스트 환경이 필요하면 별도 테스트 전용 클라이언트나 WireMock 같은 도구로 관리한다 (실제 코드와 분리)
- MOCK 조건문을 코드에 남겨두면 나중에 누군가 "혹시 이 조건이 버그 아닐까?" 하면서 헷갈린다

이번 작업은 그 원칙을 적용한 것이다. 개발 초기 편의를 위해 필요했던 MOCK 모드를 이제 정리하고, 실제 응답만 처리하도록 집중한다는 신호다.

실응답 파싱: result_data 언랩의 의미

더 흥미로운 부분은 result_data 언랩 파싱이다. PG 플랫폼의 응답 형식이 변경되거나 래핑되는 구조로 들어오게 된 것으로 보인다.

// 개선 전: 직접 응답 처리
Payment response = parseResponse(pgResponse);

// 개선 후: result_data를 먼저 추출 후 파싱
Object unwrapped = pgResponse.getResultData();  // 래핑된 껍질 벗기
Payment response = parseResponse(unwrapped);

이런 변경이 생기는 이유는 보통 이것들이다:
1. PG 플랫폼이 API 스펙을 업데이트했다
2. 기존 응답을 호환성 유지차원에서 새로운 구조로 래핑하기 시작했다
3. 통합 테스트 과정에서 예상과 다른 응답 형식을 발견했다

결제 시스템에서 이런 변경이 감지되면 즉시 대응해야 한다. 매출 직결 기능이므로 한 줄의 파싱 오류도 주문 실패나 정산 오류로 번진다. 그래서 이번 작업은 우선순위가 높았고, 단순 코드 정리가 아니라 실제 운영 환경과의 계약을 맞추는 중요한 작업이었다.

UI 라벨링: 사용자 경험의 세부

변경 파일 목록에 paymentSheet.jsp가 포함된 것이 인상적이다. 같은 커밋에서 백엔드 결제 처리 로직과 프론트엔드 UI를 함께 손봤다는 뜻이다.

쿠폰 사용 부분의 UI 라벨 개선은 아마 이런 맥락일 것 같다:
- 사용자가 쿠폰을 적용했을 때의 상태를 더 명확하게 표시
- 결제 화면에서 쿠폰 할인이 실제로 적용됐는지 확인 가능하게 개선
- 혹은 쿠폰 적용 실패/만료 시 에러 메시지를 더 친절하게 표시

개선 전 개선 후
쿠폰 버튼만 있음 "쿠폰 적용됨 (₩5,000 할인)" 명시
모호한 상태 표시 실시간 할인액 표시

이렇게 백엔드 정산 로직과 프론트엔드 사용자 경험을 동시에 개선하는 방식은 팀 협력의 신호다. 결제 기능은 혼자가 아니라 백엔드-프론트엔드가 함께 정의하고 검증해야 한다는 원칙이 보인다.

회고: 외부 시스템 연동의 현실

이런 유형의 작업을 여러 번 경험하면서 배운 것들:

  1. PG 시스템 변경은 예고 없이 온다 — 공식 문서와 실제 응답이 다를 수 있으니 항상 실환경 로그를 모니터링해야 한다
  2. 결제는 팀 전체의 책임 — 개발팀, QA, 운영팀이 함께 검증하지 않으면 작은 버그가 매출 손실로 번진다
  3. MOCK 코드는 정리 시점이 중요 — 너무 일찍 제거하면 테스트가 힘들고, 너무 늦게 두면 실제 로직이 섞여 버그를 숨긴다

이번 커밋은 그런 원칙들을 실제로 적용한 사례다. 작은 정리 작업으로 보이지만, 뒤에는 "언제 MOCK을 걷어낼까?", "응답 형식이 바뀌면 어디서 먼저 감지할까?", "사용자 경험을 해치지 않으려면?" 같은 여러 질문에 답한 흔적이 있다. 이런 세심함이 결제 시스템을 안정적으로 유지하는 핵심이다.


🛒 이 글과 어울리는 추천 상품

*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.

댓글 0

첫 댓글 달아줘.