네이버 페이를 연동시에 상품이 품절 인 경우는 비활성화를 해주어야 한다.
문제는 한개의 페이지가 아니라 옵션을 선택시 품절 여부를 보여 줄 경우 스크립트로 수정하는 방법을 모른다는 것. 네이버에 물어봐도 제대로 답변해 주지 않는다. 그냥 숨김 처리하라고 하는 데, 버튼이 있던 자리가 없어지는 건 아무래도 이상하다.
소스를 보니 가능 할 것 같아서 해 봤더니, 되긴 된다.
<div id="naverPayBtn"></div>
<script type="text/javascript" src="http://test-pay.naver.com/customer/js/naverPayButton.js" charset="UTF-8"></script>
<script type="text/javascript" >
//<![CDATA[
var npBtnOption ={
BUTTON_KEY: "naverPayBtnCertiKey", // 네이버페이에서 제공받은 버튼 인증 키 입력
TYPE: "A", // 버튼 모음 종류 설정
COLOR: 1, // 버튼 모음의 색 설정
COUNT: 2, //버튼 개수 설정. 구매하기 버튼만 있으면(장바구니 페이지) 1, 찜하기 버튼도 있으면(상품 상세 페이지) 2를 입력.
ENABLE: "Y", // 품절 등의 이유로 버튼 모음을 비활성화할 때에는 "N" 입력
EMBED_ID : "naverPayBtn",
BUY_BUTTON_HANDLER: buy_nc, // 구매하기 버튼 이벤트 Handler 함수 등록, 품절인 경우 not_buy_nc 함수 사용
//BUY_BUTTON_LINK_URL: "", // 링크 주소 (필요한 경우만 사용)
WISHLIST_BUTTON_HANDLER: wishlist_nc, // 찜하기 버튼 이벤트 Handler 함수 등록
//WISHLIST_BUTTON_LINK_URL: "", // 찜하기 팝업 링크 주소
"":""
}
naver.NaverPayButton.apply(npBtnOption);
//버튼기능(네이버페이 구매하기)
function buy_nc() {
...
return false;
}
function wishlist_nc() {
// 네이버페이로 찜 정보를 등록하는 가맹점 페이지 팝업 창 생성.
// 해당 페이지에서 찜 정보 등록 후 네이버페이 찜 페이지로 이동.
...
return false;
}
function not_buy_nc() {
alert("죄송합니다. 네이버페이로 구매가 불가한 상품입니다.");
return false;
}
</script>
아래의 코드로 ENABLE 상태를 변경.
naverPayStatusChange: function(enable,option,btnHandler) {
$("#"+option.EMBED_ID).text("");
option.ENABLE = enable;
option.BUY_BUTTON_HANDLER = btnHandler;
naver.NaverPayButton.apply(npBtnOption);
}
ex) naverPayStatusChange("N",npBtnOption,not_buy_nc);
ps. 사용자가 네이버페이로 결제시 결제 완료, 실패 리턴이 없음. 그냥 보내면 끝이므로 주의