네이버페이 연동 가이드

1. 네이버페이 타입


네이버페이에는 '결제형'과 '주문형' 두 가지 서비스 타입이 있습니다.

-결제형 : 결제수단의 하나로 네이버페이 간편결제가 제공됩니다. 결제 이후 쇼핑몰의 구매완료 페이지에 돌아오기 때문에 에이스카운터 스크립트로 분석이 가능합니다.

-주문형 : 네이버 ID 로그인 후 네이버 쇼핑으로 넘어가 구매완료까지 이루어집니다. 본 가이드를 참고해 네이버페이 연동 세팅을 해야만 주문형에 대한 네이버페이 분석이 가능합니다.

네이버 페이 & 에이스카운터 연동을 위해서는 네이버페이 가맹점 연동 가이드에 대한 숙지가 되어 있어야 합니다.

2. 네이버페이 연동 프로세스


*에이스카운터 연동 가이드 참고 페이지 => 인증키 획득(P5), 인증키 세팅(P6), 응답 데이터 전송(P8)

3. 네이버페이 연동 방법


1) 제품상세 페이지 - 에이스인증키 획득 (공통)

  • 네이버페이 버튼 핸들러 함수(buy_nc)에서 에이스인증키 획득

  • 획득한 에이스 인증키를 주문정보 등록 URL 파라미터로 전송

function buy_nc(url) { 
 varcheck = checkOption(...) ... 
 
 if (check) {
    try { 
        varacePid= window._AcePID; // 에이스인증키획득
    } catch (e) {} 
 location.href= url+ "?customcode=" + acePid;// 에이스인증키를주문정보등록url파라미터로전송
 }
}

[참고] 네이버페이 가맹점 연동 가이드.pdf - 2.2 네이버페이 버튼 동작

2) 주문 정보 등록 페이지 - 에이스 인증키 세팅

주문정보 등록시 merchantCustomCode1 요소의 값으로 앞 단계에서 획득한 에이스인증키 값을 넣어서 주문서 등록을 진행 (1.0버전은 MALL_MANAGE_CODE)

네이버 페이 API 버전 별 차이

버전
v 1.0(= API 4.1)
v2.1 (= API 5.0)

주문등록 데이터 방식

쿼리스트링

XML

'에이스인증키' 저장 key

MALL_MANAGE_CODE

merchantCustomCode1

1.0 버전(쿼리스트링)

 <?
 ...
 // 에이스인증키를MALL_MANAGE_CODE 로설정
if (isset($_REQUEST["customcode"])) { 
 $queryString .= 
  ‘&MALL_MANAGE_CODE=‘.
   $_REQUEST["customcode"]; 
}
...
 ?>

[참고] 네이버페이 가맹점 연동 가이드.pdf-3.1.2 주문 정보 등록

2.1 버전 (XML)

<!– 에이스인증키를MerchantCustomCode1 로설정-->
<order>
 <merchantId>상점ID</merchantId>
 <certiKey>인증키</certiKey>
 ...
 <interface>
  < merchantCustomCode1>에이스인증키
</merchantCustomCode1 >
 </interface>
 ...
 </order>
<? 
...
 // xml 생성하기 위한 php코드
if (isset($_REQUEST["customcode"])) {
 $data .=
 '<interface>< merchantCustomCode1>'.
 $_REQUEST["customcode"] .
 }
 ... 
?>

3) 주문 정보 조회 페이지 - 응답 데이터를 에이스카운터로 전송

  • 전송 조건 : 네이버페이 API GetProductOrderInfoList 를 이용하면 결제 완료된 상품리스트를 응답 받는다. 응답 데이터에 MerchantCustomCode1 속성이 있고 빈 값이 아닌 경우에만 전송한다. (네이버페이 API 4.1버전은 MallManageCode 속성값 사용)

  • 전송 방법 : HTTPS 통신이 가능한 cURL 또는 그 외 HTTPS 통신 툴

  • 전송 URL : 응답 데이터 중 MerchantCustomCode1 속성값 (네이버페이 API 4.1 버전은 MallManageCode 속성값 사용)

파라미터

필드명
타입
필수 여부(Y/N)
설명

orderNo

string

Y

주문번호. 전달받은 주문번호를 입력

pay

string

Y

결제수단. 전달받은 결제수단을 입력

ll

string

Y

상품 리스트. 상품의 속성은 @로 구분하고 여러 상품의 묶음은 ^로 구분해서 생성한다. ('상품리스트 생성' 페이지참고)

주의사항

1. 전송 URL 끝에 &을 반드시 추가하세요 ex : $curl="https://".$MerchantCustomCode1."&ll=".$ll."&pay=".$sPay."&orderno=".$sOrderno."&";

2. 중복수집 예방을 위해 주문은 최초 1회만 전송하세요.

네이버 페이 API 4.1 버전

<?
 //네이버페이API 4.1버전–MallManageCode사용
//GetProductOrderListAPI요청
// MallManageCode예시-> gtp4.acecounter.com/?cuid=AH1A418…(생략)
 $sOrderNo= {주문번호};
 $sPay= {결제수단};
 $ll= {상품리스트};
 $curl = https:// . $MallManageCode. 
"&ll=” . $ll . "&pay=" . $sPay. "&orderno=" . $sOrderNo. "&"; 
$ch= curl_init(); 
curl_setopt($ch, CURLOPT_URL, $curl); 
curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 $ret = curl_exec($ch); 
curl_close($ch); 
?>

네이버 페이 API 5.0 버전

<?
 //네이버페이API 5.0버전-MerchantCustomCode1사용
//GetProductOrderListAPI 요청
// MerchantCustomCode1 예시-> gtp4.acecounter.com/?cuid=AH1A418…(생략)
 $sOrderNo= {주문번호};
 $sPay= {결제수단};
 $ll= {상품리스트};
 $curl = "https://" . $MerchantCustomCode1. 
"&ll=" . $ll. "&pay=" . $sPay. "&orderno=" . $sOrderNo. "&"; 
$ch= curl_init(); 
curl_setopt($ch, CURLOPT_URL, $curl); 
curl_setopt($ch, CURLOPT_HEADER, 0);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
 curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
 $ret = curl_exec($ch); 
curl_close($ch); 
?>

4) 주문 정보 조회 페이지 - 상품리스트 생성

  • 상품의 속성은 @로 구분하고 여러 상품의 묶음은 ^로 구분해서 생성합니다.

  • 상품 가격은 상품 소계(각 상품의 구매 합계)입니다.

<?
 $productArray = array();
 $cnt = 0; 
// 구매상품을A와B 라고가정, 구매상품만큼배열추가
$ornList[] = array("pcategory"=>A상품카테고리, "pname"=>A상품명, "pcode"=>A상품번호, "pprice"=>A상품가격, "pquantity"=>A구매개수); 
$ornList[] = array("pcategory"=>B상품카테고리, "pname"=>B상품명, "pcode"=>B상품번호, "pprice"=>B상품가격, "pquantity"=>B구매개수, "opt"=>B옵션명); 
// 특수문자(#&^@,) & 태그제거함수
function removeStr($s, $m=0) {
 $ret= "";
 if ($m === 1) { 
$ret = preg_replace("/[#&^@,]*/s", "", $s);
 } else if ($m === 2) { 
$ret = preg_replace("/[<][^>]*[>]*/s", "", $s); 
$ret = preg_replace("/[#&^@,]*/s", "", $ret); 
} else { $ret = preg_replace("/[#&^@,]*/s", "", $s); } 
return $ret; 
} 
// 상품리스트를스트링으로변환해배열로저장
foreach ($ornList as $pVal) {
 $strTemp= "";
 $pCategory= removeStr($pVal['pcategory']);
 $pName = removeStr($pVal['pname'], 2);
 $pCode = removeStr($pVal['pcode']);
 $pPrice = removeStr($pVal['pprice'], 1);
 $pQuantity= removeStr($pVal['pquantity'], 1);
 $pOptName= removeStr($pVal['opt'], 1); 
// 표준형식: 카테고리명@상품명@상품가격@수량@상품ID@옵션명
$strTemp= $pCategory. "@" . $pName. "@" . $pPrice. "@" . $pQuantity. "@" . $pCode. "@" . $pOptName; 
$productArray[$cnt] = $strTemp; $cnt++; 
}
 $sOrderNo= "{주문번호}";
 $sPay= "{결제수단}";
 $ll= urlencode(implode("^", $productArray) . "^"); // 상품리스트
?>

5) 데이터 확인

에이스카운터에 로그인하여 데이터 확인이 가능합니다.

  • 메뉴 위치 : 에이스카운터 로그인 > 분석통계 > 구매자 > 결제 수단 분석

  • 구매자의 브라우저가 종료되면 약 40분 정도 이후에 데이터가 확인됩니다.

Last updated