중복 결제 방지·실패 재시도 멱등성·웹훅 검증으로 정기결제 신뢰성 확보 결
정기결제 시스템에서 가장 신경 쓴 것은 중복 결제 방지였습니다. 네트워크 오류 후 재시도가 발생할 경우 같은 건이 두 번 결제될 수 있어, 고유한 `idempotency_key`를 발급하고 결제 처리 전에 기존 처리 여부를 확인하는 로직을 넣었습니다.
결제 실패 처리도 중요한 과제였습니다. 카드 한도 초과나 일시적인 오류는 재시도 전략을 달리 적용하는 것이 중요합니다. 영구 실패는 즉시 사용자에게 안내하고, 일시 오류는 지수 백오프 방식으로 재시도 후 일정 횟수 초과 시 이탈로 처리했습니다.
PG사에서 보내는 웹훅 알림 검증도 빠뜨리면 안 되는 부분입니다. 서명 검증 없이 웹훅을 처리하면 외부에서 위조 요청을 보낼 수 있기 때문에, HMAC 서명과 IP 화이트리스트를 함께 적용했습니다. 결제 시스템은 버그 하나가 금전 피해로 이어지기 때문에 방어적으로 설계하는 것이 기본이라고 생각합니다.