icube 쇼핑몰
소프트웨어와 특허, 용역을 판매하는 B2B 커머스. 기획서와 DDL 설계부터 결제 연동, QA까지 전 과정을 혼자 만들었습니다. 화면 11개, E2E 48건 전량 통과.
- 결제 결과를 클라이언트가 아니라 포트원 재조회로만 확정합니다. 조회가 실패하면 성공으로 치지 않습니다.
- 주문 상태 전이는 전부 상태 가드 update 한 문장으로, 결제 확정은 멱등으로 처리했습니다.
- 주문 시점의 상품 정보를 스냅샷으로 보존해, 상품이 바뀌어도 주문 이력이 당시 조건을 증언합니다.
- 채번과 insert를 재시도 루프로 감싸 동시 주문에도 사용자 에러가 없습니다.
문제 해결 1건
- 문제
- 클라이언트가 보낸 "성공"을 믿으면 금액을 위조한 요청으로 결제 없이 결제완료를 만들 수 있었습니다.
- 해결
- 결제 식별자를 서버에서 발급해 주문에 저장하고, 복귀 후 포트원 단건조회로 상태와 금액, 통화를 재검증한 뒤에만 확정했습니다.
- 결과
- 위조 경로가 사라졌고, 새로고침과 중복 클릭에도 주문 상태가 깨지지 않습니다. E2E 5개 시나리오로 검증했습니다.
Java 25 / Spring Boot 4 / Oracle 23 / MyBatis / 포트원 V2 / Playwright