-
[이슈] 토스 페이먼츠 중복 결제NestJs 2024. 10. 30. 21:31
'고객소통' 채널에 앱 사용자가 청약몰 서비스를 이용하면서 결제가 두 번 되었다는 이슈가 공유되었습니다.
데이터를 확인해 본 결과 정말로 2번 결제가 되었네요..
첫 번째 결제 요청이 승인처리 되기까지 4분 걸렸고,
두 번째는 20초 미만 걸렸습니다.
Grafana로 해당 시점의 DB 부하, API 상태 등을 점검하였을 땐 이상이 없었습니다.
결제 승인 소요시간이 4분 걸린점을 감안하고 코드를 보니 충분히 발생할 수 있는 코드였습니다.
현재 결제 승인 프로세스는 다음 순서로 이뤄집니다.
1. 결제 승인 처리 전 상태 유효성 검사
2. 토스로 결제 승인 요청(지연 발생)
3. 주문 결제 완료(data 상태 변경)앱 사용자가 첫 번째 시 '결제 완료' 화면이 안보여서, 뒤로가기 누른 후 다시 결제하였고
두 번째 결제는 정상적으로 처리되었습니다.
하지만 첫 결제의 토스 결제 승인 요청도 4분 소요 후 정상 처리되며 데이터가 '결제 완료' 상태가 되었습니다.
다음과 같이 유효성 검사 로직을 추가하여 토스 결제 승인이 지연되더라도 정상적으로 실패할 수 있도록 하였습니다.
1. 결제 승인 처리 전 상태 유효성 검사
2. 토스로 결제 승인 요청3. 승인 후 상태 유효성 검사(실패 시 토스로 환불 요청 및 throw 처리)
4. 주문 결제 완료(data 상태 변경)'NestJs' 카테고리의 다른 글
NestJs(Node) 환경에서 TossPayments Seller 코드 예제 (0) 2024.12.17 [오답] Jest로 Axios 테스트 시 Cannot use import statement outside a module (0) 2023.03.13 TypeOrm 0.2 - Relations 성능 이슈 (0) 2023.02.24 Serverless + NestJS + MikroORM 조합 시 문제 (0) 2022.03.06 [공부] NestJS (0) 2021.12.20