돈이 오가는 기능에서 중요한 것은 빨리 만드는 것이 아니라 틀리지 않는 것입니다
결제·정산은 기능이 동작하는 것보다, 문제가 생겼을 때 어디서 틀어졌는지 보이는 것이 중요합니다
요청부터 승인·취소까지 한 줄로 추적합니다. 웹훅 미수신 건을 따로 표시해 이중 결제로 번지기 전에 잡습니다
집계와 지급 사이에 확인 단계를 둡니다. 차이가 있으면 지급 전에 멈춥니다. 송금은 되돌리기 어렵기 때문입니다
정산에서 가장 큰 사고는 이중 송금이며, 이를 막는 장치가 없으면 재시도 자체가 위험해집니다
기간이 짧아 순서가 결과를 좌우합니다. 인수 후 바로 개발에 들어가지 않는 것을 제안드립니다
기능 목록에는 한 줄이지만 운영에서 문제가 되는 지점은 대체로 정해져 있습니다
| 웹훅 중복 수신 | PG는 응답을 못 받으면 같은 알림을 여러 번 보냅니다. 처리 기록을 남겨 이미 처리한 건은 무시해야 하며, 그렇지 않으면 주문이 두 번 잡히거나 정산이 중복됩니다 |
| 웹훅 누락 | PG에서는 승인됐는데 서버 기록이 없으면 고객은 결제했는데 주문이 없는 상태가 됩니다. 웹훅만 믿지 않고 주기적으로 조회 API로 대사하는 구조가 필요합니다 |
| 결제와 주문의 시점 차이 | 결제 승인과 주문 확정 사이에 오류가 나면 돈은 빠졌는데 주문이 없습니다. 어느 쪽을 먼저 확정하고 실패 시 어떻게 되돌릴지 규칙이 필요합니다 |
| 부분 취소 | 전체 취소보다 부분 취소에서 정산이 어긋나기 쉽습니다. 취소 금액이 어느 정산 주기에 반영되는지 정해두지 않으면 지난 정산과 맞지 않게 됩니다 |
| 지급 실패 복구 | 실패 건을 어떻게 재처리할지 규칙이 없으면 담당자가 수동으로 처리하게 되고, 그 과정에서 이중 송금이 발생합니다 |
3주 뒤 무엇이 되어 있으면 끝인지를 먼저 맞추고 싶습니다
금융권에서 금액이 맞아야 하는 시스템을 다뤄온 관점으로 접근하겠습니다.
데모는 직접 눌러보실 수 있습니다.