키움페이 결제 취소 샘플 추가
목차
feat: 키움페이 결제 취소 샘플 추가 및 UI/본인확인 로직 개선
상품 목록부터 주문까지 이어지는 흐름을 정비했음. 특히 상품 옵션 처리와 페이징, 카테고리 필터가 한 번에 엮이는 부분이 까다로웠음.
상품 옵션 처리 구조
// 옵션 유무 분기
if (product.hasOption()) {
model.addAttribute("options", productMapper.selectOptions(productSn));
} else {
model.addAttribute("directOrder", true);
}
주문 트랜잭션
| 단계 | 처리 |
|---|---|
| 재고 차감 | FOR UPDATE 락으로 동시성 처리 |
| 포인트 차감 | 무상 → 유상 순서 |
| 수수료 생성 | PENDING 상태로 INSERT |
| 알림 발송 | 트랜잭션 외부에서 비동기 처리 |
결제 완료 시점에 재고 차감, 포인트 소비, 알림 발송이 한 트랜잭션 안에서 처리되도록 묶음. 중간에 실패하면 전체 롤백.
개발 원칙 정리
이 작업을 진행하면서 재확인한 원칙들:
작은 커밋: 변경 단위를 작게 유지해서 코드 리뷰와 롤백이 쉽게.
테스트 먼저: 변경 전 현재 동작을 파악하고, 변경 후 동일하게 동작하는지 확인.
문서 동기화: 코드가 바뀌면 관련 주석과 문서도 같이 업데이트.
| 원칙 | 이유 |
|---|---|
| 단일 책임 | 하나의 함수/클래스는 하나의 역할만 |
| 명시적 코드 | 영리한 코드보다 읽기 쉬운 코드 |
| 실패 우선 처리 | happy path보다 에러 케이스 먼저 설계 |
끝
댓글 0
첫 댓글 달아줘.