왕방빵
왕방빵2mo ago

결제 및 취소 로직 구현 - DB 저장 오류 발생 시 처리 문의

안녕하세요, 결제 로직을 처음 구현하다 보니, 일반적인 처리 흐름이나 예외 처리 방식에 대해 문의드립니다. 예를 들어 카드 결제를 기준으로 로직을 구성한 상황에서 아래와 같은 흐름을 가정하고 있습니다: 결제 API 호출 성공 (confirm 성공) → DB 반영 성공 → 문제 없이 결제 완료 및 서비스 제공 가능 결제 API 호출 성공 (confirm 성공) → DB 반영 실패 → 실제 결제는 완료되었지만, 시스템에 반영되지 않아 상품 이용이 불가능해지는 문제 발생 이 경우, 저는 두 번째 시나리오에 대비하여 cancel API를 즉시 호출하여 자동 환불되도록 처리했는데요, 실제 현업에서는 이런 방식이 일반적으로 사용되는지 궁금합니다. 혹은 다음과 같은 구조를 더 선호하는지 알고 싶습니다: 트랜잭션 기반 처리 방식 DB에 최소한의 결제 요청 정보만 우선 insert 이후 API 통신 성공 시, 응답값을 포함해 update 통신 실패 시 트랜잭션 rollback 처리 이 경우, DB에 결제 요청 흔적이 남지 않으므로 추가 취소 처리를 하지 않아도 됨 즉, "결제가 실제로 완료되었지만 시스템 DB에는 실패한 상태" 를 방지하기 위해 업계에서는 어떤 방식이 더 보편적이며, 안정적으로 운영되고 있는지 궁금합니다. 동일한 방식으로 환불에 관해서도 실제 환불이 됐지만 db저장에 실패한 경우엔 어떻게 처리하는지 궁금합니다.
4 Replies
토스페이먼츠 BOT
⏳ 잠시만 기다려주세요! 곧 답변드리겠습니다
오류 문의일 경우 아래 정보를 미리 전달해주시면, 빠른 답변에 도움이 됩니다.
- 주문번호(orderId) : - 문의 내용 :
(img를 함께 첨부해주시면 도움이됩니다)
* 계약관련 내용은 1544-7772로 문의주세요. * 주말/공휴일에는 답변이 늦을 수 있어요.
Kimoon Lee
Kimoon Lee2mo ago
저는 두 번째 시나리오에 대비하여 cancel API를 즉시 호출하여 자동 환불되도록 처리했는데요, 실제 현업에서는 이런 방식이 일반적으로 사용되는지 궁금합니다.
네 일반적으로 이렇게사용하십니다. DB 에 어떻게 남기실지에 대한 부분은 가맹점마다 생각하시는게 달라서 저희가 뭐라고 말씀드리기는 어렵습니다.
이 경우, DB에 결제 요청 흔적이 남지 않으므로 추가 취소 처리를 하지 않아도 됨
이렇게 말씀하셨는데 이래도 저희쪽에는 실제 결제가 된상태이므로 취소처리를 해주셔야 합니다. 환불의 경우는 환불을 취소할 방법이 없기때문에 DB 처리 실패여부와 무관하게 환불된 상태로 저장해 주셔야 하고 DB 를 어떻게든 보정해서 취소 완료로 해주셔야 합니다.
왕방빵
왕방빵OP2mo ago
오.. 방향성이 많이 고민이 됐는데 답변 감사합니다!
토스페이먼츠 BOT
❤️ 기술문의 경험이 어떠셨나요?!
간단히 코멘트 남겨주세요! 제품 발전에 큰 힘이 됩니다.

Did you find this page helpful?