네이버페이 결제형 검수는 포트원 기술지원팀을 통하여 진행해주셔야 합니다.
포트원 관리자콘솔 내 PG설정 및 연동개발이 완료되셨다면, 1번,2번의 내용과 검수요청서 파일(파일 내용 작성시 3번내용 참고)을 포트원 기술팀(support@portone.io)로 네이버페이 결제형 검수를 요청주시기 바랍니다.
(아래 정보는 네이버페이(결제형) 검수 진행시에 네이버페이에서 필수로 요구하는 정보입니다)
1. 사업자 및 계약정보
•
상호명 :
•
사업자번호 :
•
포트원 계정 :
•
네이버페이 연동 개발자 연락처(이메일/전화번호) : 가맹점의 담당자님 정보를 적어주세요
•
네이버페이 연동 검수 담당자 연락처(이메일/전화번호) : 가맹점의 담당자님 정보를 적어주세요
•
네이버페이 결제형 파트너ID : 단건/반복(정기) 이용하실 방식에 따라 구분하여 전달 주세요.
•
검수 진행가능한 URL :
•
테스트 가능한 로그인계정 :
2. 질의사항
•
적립금 적립방식(자체적립/네이버페이적립) :
•
현금영수증 발급 방식(자체발행/네이버페이대행발행) :
•
판매상품 과/면세 여부:
•
에스크로 사용여부:
•
모바일앱 보유 여부:
•
부분취소 제공여부:
•
IMP.request_pay 함수 호출 시 naverProduct 파라미터 설정 셋팅 예시:
•
•
금액위변조 기능 개발 여부 :
참고
가맹점 상품의 실제 구매금액이 화면표시부터 네이버페이까지 도달하기 까지 금액이 위변조 되지 않도록 조치 해야 합니다. 금액변조 방지 기능을 내부적으로 구현하기 어려우시다면 참조할 만한 포트원 에서 제공할 수 있는 기능이 있어 소개드립니다.
(네이버페이) 결제창을 띄우기 직전에 결제금액을 미리 사전에 등록하는 api를 사용하실 수 있습니다. 인증방식의 결제를 진행할 때 결제금액 위변조시 결제진행자체를 block하기 위해 결제예정금액을 사전등록하는 기능입니다.
단, 해당 기능을 이용하실 때는 server-side에서 구현하시는 것이 바람직합니다.
추가적으로 https://docs.iamport.kr/implementation/payment 가이드의 STEP5의 결제정보 검증을 통해 취소 및 실패처리 로직을 구현하시는 것을 권해 드립니다.
3. 검수 요청서 기본 내용 작성 상세 가이드
아래 내용은 검수요청서 작성시 자세히 참고하실 수 있는 가이드입니다.
검수요청서 파일은 네이버페이로부터 안내받으실 수 있으며, 링크를 통해서도 다운로드 가능합니다 (직접 편집 불가. 다운로드 후 이용가능)
배경 색상이 노란색으로 되어있는 부분 위주로 확인해주시면 됩니다.
확인이 완료되면 배경 색을 하얀색으로 바꿔주세요.
1) 연동 담당자
•
연동 담당자(개발/검수 담당자): 검수 요청 메일을 보낸 가맹점 담당자의 이름<이메일 주소> 형태로 기재합니다.
2) 검수 환경
•
계정: 가맹점 담당자로부터 전달 받은 테스트 계정 / 테스트 계정 비밀번호를 기재합니다.
•
과/면세 기준: IMP.request_pay 호출시 tax_free 파라미터 전달 여부로 판단합니다. 전달시 면세, 비 전달시 과세
•
가맹점 타입: IMP.request_pay 호출시 escrow 파라미터 값으로 판단합니다. true시 에스크로, false시 비 에스크로
•
포인트 적립 타입, 현금영수증 발행: 가맹점이 네이버페이와 계약한 내용을 기반으로 하므로 가맹점이 포트원로 검수 요청시 해당 정보를 제공합니다.
•
PC, Mobile Web, Mobile App, 관리자페이지: 제공하는 각 환경에 대해 테스트 가능한 URL, 지원하는 종류와 버전, 부분취소 제공 여부를 파악해 기재합니다.
3) 간편 결제 플랫폼 연동 현황
•
현금영수증 발행대상 금액조회, 거래완료, 네이버페이 포인트 적립 요청은 2) 검수환경에 작성된 내용을 기반으로 작성합니다.
4) 결제창 호출(NaverPay javascript SDK) 연동 현황
•
PC와 모바일에서 결제창이 호출되는 방식을 파악하고 맞는 값에 O 표시를 합니다.
•
layer 방식은 더이상 지원하지 않습니다.
•
page 방식이란, 네이버페이 URL로 리디렉션 되는 방식을 의미합니다.
5) productItems(상품 상세 정보) parameter 연동 현황
네이버페이 - 결제형의 경우, 결제창 호출(IMP.request_pay 함수)시 상품 정보를 의미하는 naverProducts 파라미터를 필수로 전달해야 합니다. 이 값이 없다고 해서 결제가 안되는 것은 아니지만, 네이버페이 측에서 데이터 수집을 위해 필수로 전달할 것을 요구하고 있습니다. naverProducts 파라미터는 상품 정보(객체)를 담고 있는 배열이며, 각 상품 정보는 아래 6가지 속성을 갖고 있습니다.
•
•
•
uid (필수) : 가맹점 내부의 상품 고유 ID를 활용하는 것이 일반적입니다만, 네이버페이 가이드 참고가 필요합니다.공식 매뉴얼
•
name (필수) : 주문상품의 명칭
•
count (필수) : 상품 주문 개수
•
payReferrer (선택) : 네이버 플랫폼의 타 서비스와 제휴계약 후 유입분석을 진행하는 경우에만 입력공식 매뉴얼
해당 파라미터값을 “코드 예” 항목에 넣어주시면 됩니다.
6) 사전 준비 항목
•
자체 앱 보안 설정 항목을 제외한 모든 부분은 포트원에서 이미 처리하고 있으므로 확인 결과를 모두 O로 설정합니다.
•
앱을 검수하는 경우에는 자체앱 보안 설정 항목이 처리되어 있는지 직접 확인하며, 웹을 검수하는 경우에는 모두 -(해당 사항 없음 의미)로 설정합니다.
7) name 파라미터
name 파라메터는 주문명을 의미합니다. 간혹 2개 이상의 상품을 구매하는 경우, name값을 “XX외 X건”과 같은 형식으로 전달하는 경우가 있습니다. 네이버페이 - 결제형의 경우 2개 이상의 상품 구매시 주문명을 위와 같이 자동으로 생성하기 때문에 name 파라메터는 항상 naverProducts[0].name값과 동일한 값으로 설정해야 합니다.
해당 파라미터가 정상적으로 설정된 경우, 간편결제 API > 결제창 호출 > “No.6 productName(대표 상품명)은 상품명만 전달하는지 확인”에 정상으로 체크해주시면 됩니다.
8) 에러 메시지 비 가공
결제창 호출(IMP.request_pay 함수)후 결제창 하단의 “취소" 버튼 클릭 등으로 결제 프로세스가 중단되거나 잔액 부족, 한도 초과, 10원 미만 결제 등의 사유로 결제에 실패하면 콜백 함수(popup 방식)/m_redirect_url(리디렉션 방식)로 전달되는 결제 결과(response 객체/쿼리 파라메터)에 실패 사유(error_msg)가 전달됩니다. 이 에러 메시지는 사용자에게 가공 없이 그대로 노출되어야 합니다.
예) error_msg가 “잔액 부족"이라고 가정할때, "결제에 실패하였습니다. 실패 사유:" + "잔액 부족"과 같은 형태로 가공되면 안됨
해당 내용이 정상적으로 반영되어있는 경우, 결제 화면 > “No.3 실패 응답에 대한 resultMessage를 받은 경우 서비스 시나리오에 따라 적절하게 처리되었는지 확인”에 정상으로 체크해주시면 됩니다.
9) 10원 미만 결제 처리
네이버페이 - 결제형의 최소 결제 금액은 10원이기 때문에, 10원 미만 결제 요청에 대해 예외 처리가 되어있어야 합니다.
예) 사용자에게 최소 결제 금액이 10원이라 결제를 할 수 없다는 의미를 담는 에러 메시지가 노출되어야 함
해당 내용이 정상적으로 반영되어있는 경우, 간편결제 API > “No.8 totalPayAmount 최소 결제금액(10원)에 대한 예외 처리 확인”에 정상으로 체크해주시면 됩니다.
10) 결제 금액 위/변조
프론트엔드에서 javascript 함수를 호출해 결제창이 렌더링되는 만큼 결제 금액이 얼마든지 위/변조 될 수 있습니다. 결제 금액 위/변조시 승인 완료 후 가맹점 웹서버가 이를 감지해 주문 처리를 하지 않는지 체크해야 합니다. 정상적인 프로세스는 아래와 같습니다.
결제 금액 위/변조하여 결제창 호출 → 승인 완료 → 콜백 함수 호출(또는 m_redirect_url로 리디렉션) → 가맹점 웹서버로 HTTP 리퀘스트 → 전달된 포트원 번호(imp_uid)로 실제로 결제 된 금액(amount)을, 주문 번호(merchant_uid)로 결제를 의도한 금액(예) amountToBePaid)을 조회 → amount와 amountToBePaid가 일치하는 경우에만 주문 완료 처리 → 일치하지 않는 경우 위/변조 된 결제이므로 해당 결제 건을 취소하고 사용자에게 위/변조 된 결제라는 점 안내
해당 내용이 정상적으로 반영되어있는 경우, 결제로직 취약성 > No.3(총 결제금액은 동일하고, 수량만 변경하였을 경우 변조 유무를 체크하는지 확인), No. 4(결제금액과 관련된 기타 파라미터 변경시 결제금액이 변경되는지 확인)에 정상으로 체크해주시면 됩니다.
11) 결제 취소 API 호출시 요청 본문
네이버페이 - 결제형 결제건의 경우, 결제 취소 API(POST /payments/cancel) 호출시 추가적으로 전달해야할 요청 본문 파라미터가 있습니다. 해당 파라미터는 아래와 같습니다.
•
reason: 결제 취소 사유, 실제 사유와 같아야 함
•
extra: { requester: “admin” 또는 “customer” }: 결제 취소 대상자를 구분하는 값으로 admin은 가맹점을, customer는 가맹점 고객을 의미
네이버페이 연동시 참고사항
네이버페이는 크게 아래의 3단계에 걸쳐 심사가 완료됩니다.
3번은, 네이버페이가 여러 가지 UI/UX적인 체크와 기능 체크를 하게 됩니다. 가령, 네이버페이 버튼이 네이버 내부의 디자인 가이드에 맞게 적용되어있는지 / 결제금액을 변조해서 결제를 해봤을 때 주문완료처리를 하지 않고 걸러내는지 / 부분취소 기능은 잘 동작하는지 등등 을 전반적으로 사이트 검수하게 됩니다. (네이버페이와 관련된 디자인 및 기능들을 점검하는데 통상적으로 2주 정도 소요되는 경향이 있습니다)
1.
네이버페이로부터 (결제형) 입점심사 결정
2.
네이버페이 (결제형) 연동 완료
3.
네이버페이 심사