아임포트 결제 연동하기
March 13, 2023
Iamport
# 내가 사용했던 mobile 결제 처리 방법
/detail/[id]/로 리디렉션 url을 설정 했다고 가정해보자
...com/detail/[id]/complete?imp_uid=결제건을_특정하는_아임포트_번호&merchant_uid=가맹점_고유_주문번호&imp_success=true
해당 디테일 페이지로 이동하면 위의 url을 볼 수 있다.
쿼리스트링으로 imp_uid , merchant_uid , imp_success 에 대한 데이터를 추출해서 데이터를 가지고 핸들링 할 수 있다.
const Detail = () => {const { query } = useRouter();useEffect(() => {const { imp_uid , merchant_uid , imp_success } = query;if(imp_uid && merchant_uid && imp_success) {// 결제 후 리디렉션 url로 이동이 되었을 경우// ... 쿼리스트링으로 받은 데이터를 가지고 핸들링};}, [query]);return (/* ...중략... */);};
# 결제 후 화면 이동
PC와 달리 모바일에선, redirection url을 설정해줘야 한다.
const callback = ({success}) => {/* ...중략... */if(success) {// 성공 페이지로 이동} else {// 실패 페이지로 이동}};IMP.request_pay({// .../* Mobile환경에선 리디렉션 url을 세팅해줘야 함 */m_redirect_url}, callback)
PC에선 callback이 실행 되지만, MOBILE환경에선 실행되지 않는다.
앞서 설명했지만, MOBILE에서는 리디렉션url을 세팅을 하고, 그 url에서 받은 쿼리스트링값으로 핸들링 해야한다.
그래서 PC에선 결제 후 화면이동이 매끄럽지만, MOBILE에선 리디렉션url을 한번 거치고, 결제 후 화면으로 이동해야하는 이슈가 있다. 이건 어떻게 해결해야할지 고민을 해봐야 할 것 같다.
#참고 모바일, 웹 결제시 주의사항
#참고 아임포트 결제 연동 Docs