6. 결제완료 처리하기
결제가 완료되면 사용자에게 결제 실패 유무 메세지를 작성하는 예제입니다.
Iframe 방식으로 진행되는 대부분의 PC환경 결제인 경우 결제응답은 callback 함수로 받아볼 수 있으며 고객사 서버에서 결제결과 처리가 최종적으로 완료되면 아래 예제처럼 결제 성공유무에 따른 분기를 통해 결과 메세지 처리를 진행 하실 수 있습니다.
IMP.request_pay(
{/* 결제 요청 객체 */},
async requestPayResponse => {
const { success, error_msg } = requestPayResponse;
if (!success) {
alert(`결제에 실패하였습니다. 에러 내용: ${error_msg}`);
return;
}
// 이전 단계에서 구현한 결제정보 사후 검증 API 호출
const res = await axios({
url: "/payments/complete",
method: "post",
headers: { "Content-Type": "application/json" },
data: { imp_uid: "...", merchant_uid: "..." },
});
switch (res.status) {
case: "vbankIssued":
// 가상계좌 발급 시 로직
break;
case: "success":
// 결제 성공 시 로직
break;
}
}
);
새로운 페이지로 리디렉션되어 결제가 진행되는 대부분의 모바일환경에서의 결제는 m_redirect_url 파라미터로 설정하신 고객사 EndPoint URL 에서 최종 결제완료 메세지 처리를 진행해 주시면 됩니다.
error_msg, error_code 정의
결제 실패 시 응답으로 내려가는 해당 파라미터는 PG사에서 내려준 오류코드와 메세지를 2차 가공없이 그대로 내려드리고 있습니다.
인증결제 과정에서 다음과 같은 사용자 동작이 일어날 경우 [비정상 접근입니다.]와 같은 오류가 발생할 수 있습니다.
- PG사 결제창 페이지 내 새로고침하는 경우
- 결제 진행 중 뒤로가기 버튼으로 카드사 ACS창으로 이동한 후 추가로 뒤로가기 버튼 클릭하여 PG사 결제창으로 돌아오는 경우
- 카드사 ACS 창 내 새로고침하는 경우 (카드사별로 상이)
결제페이지에서 뒤로가기 또는 새로고침 등의 동작을 방지하면 위 오류를 줄일 수 있습니다.