결제 완료/ 예약완료

moon.kick·2025년 5월 15일

review

목록 보기
5/5

네, 사용자에게 보여지는 주요 화면(JSP 파일들)의 구조적인 목록은 어느 정도 나왔다고 볼 수 있습니다. rooms.jsp, room_detail.jsp, 그리고 방금 이야기 나눈 payment.jsp 와 그 결과를 보여줄 payment_result.jsp 까지 해서 사용자가 경험하는 주요 단계의 페이지들은 언급이 되었네요.

물론, 이 JSP 파일들 안에 실제 내용을 채우고, 예쁘게 디자인(HTML, CSS)하고, 사용자 편의를 위한 동적인 기능(JavaScript)을 넣는 작업이 실제 프론트엔드 개발의 많은 부분을 차지하긴 합니다. 하지만 어떤 페이지들이 필요한지에 대한 설계 자체는 핵심 흐름에 맞춰 거의 다 나왔다고 할 수 있습니다.

이제 "결제 완료되었습니다. 예약완료되었습니다." 페이지에 대한 질문인데요, 아주 좋은 질문입니다! 결론부터 말씀드리면, 네, 그런 페이지가 있는 것이 일반적이고 사용자 경험에도 좋습니다.

조금 더 자세히 설명드리면:

"결제 완료 / 예약 완료" 페이지의 필요성:

사용자가 PG사 결제창에서 성공적으로 결제를 마치면, "결제가 정상적으로 처리되었고, 당신의 예약이 확정되었습니다." 라는 명확한 피드백을 받는 것이 중요합니다.
이 페이지에는 보통 예약번호, 결제금액, 숙소명, 체크인 날짜 등 주요 정보를 다시 한번 보여주어 사용자가 안심하고 예약 내용을 확인할 수 있도록 합니다.
이전에 저희가 이야기했던 payment_result.jsp 가 바로 이 역할을 수행할 수 있습니다. PaymentResultServlet이 PG사로부터 (브라우저를 통해) 기본적인 성공/실패 정보를 받아와서, payment_result.jsp에 "결제 완료! 예약이 확정되었습니다." 와 같은 메시지와 주요 정보를 표시해주는 거죠.
마이페이지와의 연동:

네, 맞습니다. 성공적으로 결제되고 예약이 확정된 건은 당연히 마이페이지의 최근 예약 내역에 즉시 반영되어야 합니다.
사용자가 "결제/예약 완료" 페이지를 본 후, 마이페이지로 이동했을 때 방금 예약한 내역이 목록에 바로 나타나야 합니다.
중요한 점:
사용자 브라우저가 payment_result.jsp로 돌아오는 것(PG사의 return_url 처리)과 별개로, 서버에서는 PaymentWebhookServlet이 PG사로부터 직접 결제 성공 알림을 받습니다.
이 Webhook을 통해 서버는 데이터베이스의 예약 상태를 '결제 완료'로 확실하게 변경합니다.
따라서 마이페이지는 이 DB에 업데이트된 정보를 읽어와서 보여주게 됩니다.
추천 흐름:

사용자: PG 결제창에서 결제 성공 -> 브라우저가 PaymentResultServlet으로 자동 이동 -> PaymentResultServlet은 payment_result.jsp로 포워딩.
payment_result.jsp 화면: "홍길동님, [숙소이름] 예약(예약번호: 12345)이 성공적으로 완료되었습니다. 총 결제금액: 100,000원" 과 같은 명확한 메시지 표시.
추가적으로 "마이페이지에서 예약 확인하기" 버튼이나 "홈으로 가기" 버튼 등을 제공할 수 있습니다.
동시에 (백그라운드): PG사 서버 -> PaymentWebhookServlet으로 결제 성공 정보 전송 -> PaymentWebhookServlet이 DB 예약 상태 '결제 완료'로 변경.
사용자가 마이페이지 방문 시: DB에서 최신 예약 목록(방금 완료된 예약 포함)을 읽어와 표시.
결론적으로,

"결제 완료되었습니다. 예약 완료되었습니다." 라는 확인 페이지(payment_result.jsp)는 있는 것이 좋습니다. 사용자에게 명확한 피드백을 줍니다.
그리고 마이페이지의 최근 예약 목록에도 이 내용이 업데이트되어야 합니다. 이는 서버에서 Webhook을 통해 DB 상태를 변경함으로써 이루어집니다.
두 가지 모두 구현하는 것이 일반적이며, 서로 다른 역할을 수행하며 사용자에게 더 나은 경험을 제공합니다.
payment_result.jsp는 즉각적인 피드백, 마이페이지는 지속적인 예약 관리 및 확인 창구인 셈이죠!

profile
@mgkick

0개의 댓글