작성
·
525
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (아마 조금은요)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)
[질문 내용]
안녕하세요. "PRG Post/Redirect/Get" 강의를 듣던 중 궁금한 것이 있어 질문을 드립니다.
온라인 쇼핑몰의 백엔드 시스템을 개발하는 과정에서 한 가지 중요한 문제에 대해 의견을 구하고 싶습니다. 상황은 다음과 같습니다:
고객이 장바구니에 있는 물품을 구매하는 과정에서, 서버로의 결제 요청은 성공적으로 처리되었으나, 네트워크 문제나 기타 이유로 인해 결제 성공 응답을 받지 못하는 경우가 있습니다. 이로 인해 고객은 결제가 실패한 것으로 오해하고 같은 결제를 다시 시도할 수 있습니다. 이는 원치 않는 중복 결제로 이어질 수 있는데, 이러한 상황을 효과적으로 방지하고 관리할 수 있는 방법이 있을까요?
답변 1
0
안녕하세요. ybjeon01님, 공식 서포터즈 David입니다.
어떤 방식으로 주문이 생성되고 결제 정보가 저장되는지에 따라 달라질 것 같습니다.
일반적으로 주문 정보를 통해 결제여부를 확인할 수 있도록 합니다. 특정 식별자를 갖는 주문을 클라이언트에서 다시 결제 시도시 이미 결제가 완료된 주문임을 알려줄 수 있습니다.
이와 별개로 하나의 주문은 하나의 결제를 갖도록 되어 있고 새로운 결제 시도시 또 하나의 주문이 추가로 결제될 수도 있는 코드라면, 주문목록과 결제취소 기능을 제공한다는 가정하에 사용자 입장에서 번거롭지만 결제를 되돌릴 방법이 있기 때문에 괜찮을 것 같습니다.
감사합니다.
특별 식별자를 사용하는 경우, 데이터베이스에 이를 저장할 특별한 테이블이 필요하겠군요. 예를 들어, 사용자가 새로운 장바구니를 생성할 때마다 고유한 식별자가 생성되고, 이 식별자는 데이터베이스에 저장되는 방식으로요. 이런 접근 방식은 Idempotent key를 사용하는 방식과 유사한건가요?