PR 링크

https://github.com/standard-Chan/aws-shop/pull/6

1. 문제

1.1 상황

어려웠던 점

이로 인해 발생하는 문제

관련 이슈

https://github.com/standard-Chan/aws-shop/issues/2

1.2 이로 인해 발생하는 문제

현재 Toss 결제 관련 흐름은 다음과 같다.

1. 우리 서버 → Toss 결제 승인 요청
2. 사용자 결제 처리
3. Toss 결제 승인 성공 (실제로 돈 결제됨)
4. Toss → HTTP 200 + DONE 응답
5. DB에 결제 COMPLETED 상태로 업데이트

그런데 Toss 결제 승인 (실제 돈 결제)까지 진행되고나서 서버 장애가 발생하면 어떻게 될까?

1. 우리 서버 → Toss 결제 승인 요청
2. 사용자 결제 처리
3. Toss 결제 승인 성공 (실제로 돈 결제됨)
4. Toss → HTTP 200 + DONE 응답
5. 💥 서버 프로세스 죽음
6. DB에 결제 상태를 COMPLETED 로 업데이트안됨 + 배송 처리도 안됨

이렇게 되면 사용자는 결제를 했음에도 불구하고, 물품을 받지 못하는 문제가 생긴다.

이에 대한 대처가 필요했다.