하위 파트너 수수료 정산 코드
목차
refactor: 하위 파트너 수수료 관리 코드 및 UI 제거
정산 및 수수료 로직은 버그 하나가 금전 오류로 직결되는 영역이라 신중하게 접근해야 함.
수수료 계산 구조
유통 단계별로 수수료가 누적되는 구조임. 최하위 파트너가 가장 높은 요율을 부담하고, 상위로 갈수록 낮아지며 그 차액이 각 단계의 수익임.
| 단계 | 요율 | 수익 |
|---|---|---|
| 최하위 | 1.0% | 없음 (내기만 함) |
| 상위 A | 0.8% | 0.2% |
| 상위 B | 0.5% | 0.3% |
멱등성 처리
정산 배치가 중복 실행되더라도 같은 결과가 나와야 함. settlement_key를 UNIQUE로 걸고 중복 INSERT 시 IGNORE 처리.
INSERT IGNORE INTO settlement_log
(settlement_key, partner_sn, amount, status)
VALUES
(#{key}, #{partnerSn}, #{amount}, 'CONFIRMED')
PENDING → CONFIRMED 전환
가상계좌: 입금 확인 + 2시간 후 CONFIRMED
카드: 결제 승인 + 3일 후 CONFIRMED
취소/환불 (홀딩 중): 전부 CANCELLED (잔액 변동 없음)
PENDING 없이 즉시 차감하는 구현은 취소 처리가 복잡해짐. 상태 머신으로 관리하는 게 맞음.
리팩토링 시 주의사항
리팩토링은 기능을 바꾸지 않는 게 원칙임. 같은 동작을 더 읽기 좋은 코드로 표현하는 것.
| 좋은 리팩토링 | 나쁜 리팩토링 |
|---|---|
| 중복 코드 메서드 추출 | 동시에 기능 변경 |
| 변수명 의미있게 변경 | 테스트 없이 진행 |
| 복잡한 조건식 단순화 | 한 번에 대규모 변경 |
코드 리뷰 부담을 줄이려면 리팩토링 커밋과 기능 변경 커밋을 분리하는 게 좋음.
끝
댓글 0
첫 댓글 달아줘.