PC(웹)/모바일 환경의 콜백과 웹훅 순서에 대해 알려드리겠습니다
포트원에서는 결제시 환경에 따라 결제 결과는 아래 3가지 경로로 전달됩니다.
1.
IMP.request_pay의 콜백함수(웹 환경)
2.
IMP.request_pay 호출시 전달한 m_redirect_url(모바일 환경)
3.
웹훅(Notification) URL(웹훅 설정시)
웹(PC) 환경에서 결제 프로세스가 완료되면 1번과 3번 루트로 결제 결과가 전달되고,
모바일 웹 또는 모바일 앱 환경에서 결제 프로세스가 완료되면 2번과 3번 루트로 결제 결과가 전달됩니다.
웹훅이 설정됐다고 해서 기존에 선언한 콜백이 호출되지 않거나 m_redirect_url로 302 리디렉션이 이루어지지 않는것은 아닙니다.
그럼 콜백함수 호출/m_redirect_url로 리디렉션 vs 웹훅 중 어떤 것이 먼저 호출될까요?
이는 병렬적으로 이루어지기 때문에 순서가 보장되지 않습니다만, 별도 요청시 순서가 보장되도록 설정이 가능합니다. 하지만 앞선 작업이 끝날때까지 기다린 후, 다음 작업이 진행되는 점 유념해 주시기 바랍니다.
체크사항
기술구조상, 현재는 2번(m_redirect_url)과 3번(Webhook)을 동시에 실행하고 있어 병렬적으로 처리됩니다. 이 부분 때문에 Race condition 이 우려되신다면
3번 (Webhook)이 실행되고, Webhook 에 대한 응답이 수신되기를 기다렸다가
2번 (m_redirect_url)이 실행되도록 설정해드릴 수 있습니다.
(대신, 반대로 2번을 우선적으로 실행하는 것은 기술적으로 불가합니다)
이렇게 웹훅 URL을 설정하게 되면 2가지 경로로 결제 결과가 전달되기 때문에 자칫 가맹점에 따라 결제 결과 업데이트가 2번 이루어지거나, 상황에 따라 같은 레코드가 2개 생성될 수도 있으니 코드를 작성하실때 유의하시길 바랍니다.
참고로 모바일 환경에서는 결제 인증 후, m_redirect_url로 리디렉션 될때 네트워크 이슈(인터넷 연결 문제 등)로 인해 가맹점이 결제 결과를 전달 받지 못하는 경우가 발생할 가능성이 높습니다.
이에 따라 결제가 승인되었을때 아임포트 서버가 직접 가맹점 웹서버로 결제 결과를 전달(POST 요청)하도록 웹훅을 필수적으로 설정해주시기 바랍니다.
(참고 : 웹훅 자세히 알아보기)
설정을 원하신다면, 포트원 기술지원팀(support@portone.io)로 포트원 관리자콘솔의 계정과 함께 문의주시기 바랍니다