네이버페이 질문입니다.

네이버페이 질문입니다.

QA

네이버페이 질문입니다.

본문

말씀 드리기는 좀 그렇지만 보드 기반으로 네이버페이를 사용하는것이 아닌 독립몰 기반으로 네이버페이를 작업하고 있습니다

 

그런데 작업중에 오류 하나 때문에 계속 진행이 안되는것이 답답해서 질문을 드립니다

 

"error":"FAIL:[OTHER_ERR] Required String parameter 'SHOP_ID' is not present10614346"

 

네이버페이 주문서 쪽에 데이터를 전송해주는 단계에서 오류가 나는것 같은데 네이버쪽에도 물어보니 메뉴얼을 참조  하라는 말 밖에는 안와서 ㅠㅠㅠ 부탁드립니다

 


 
<?

    //print_a($_POST);
        
    $pre_link = empty($_POST["pre_link"])?die("잘못된 접근입니다."):$_POST["pre_link"];
    $idx = empty($_POST["idx"])?die("잘못된 접근입니다."):$_POST["idx"];
    $option_one_price = empty($_POST["option_one_price"])?"":explode("|||",substr($_POST["option_one_price"],0,-3));
    $option_idx_arr = empty($_POST["option_idx_arr"])?"":explode("|||",substr($_POST["option_idx_arr"],0,-3));
    $option_quantity = empty($_POST["option_quantity"])?"":explode("|||",substr($_POST["option_quantity"],0,-3));
    
    require CFG_MODEL_PATH_ABS."/class.product.php";
    $cls_product = new product();
    //네이버페이
    require CFG_MODEL_PATH_ABS."/class.naverpay.php";
    $shippingType = 'FREE';
    if ($shippingType == 'PAYED') {
        $shippingPrice = 2500;
    }else{
        $shippingPrice = 0;
    }
    $sp = '&';
    
    $encode = "&page=product_view&idx=".$idx;
    $encode = urlencode($encode);
    if($pre_link == "shop")
        $backUrl = "http://".$_SERVER["HTTP_HOST"]."/?folder=shop".$encode;
    else
        $backUrl = "http://".$_SERVER["HTTP_HOST"]."/?folder=mypage&page=order_cart";
$queryString = 'SHOP_ID='.urlencode(NPAY_SHOP_ID);
$queryString .= '&CERTI_KEY='.urlencode(NPAY_CERT_KEY);
$queryString .= '&SHIPPING_TYPE='.$shippingType;
$queryString .= '&SHIPPING_PRICE='.$shippingPrice;
$queryString .= '&RESERVE1=&RESERVE2=&RESERVE3=&RESERVE4=&RESERVE5=';
$queryString .= '&BACK_URL='.$backUrl;
$queryString .= '&SA_CLICK_ID='.$_COOKIE["NVADID"]; //CTS
// CPA 스크립트 가이드 설치 업체는 해당 값 전달
//$queryString .= '&CPA_INFLOW_CODE='.urlencode($_COOKIE["CPAValidator"]);
//$queryString .= '&NAVER_INFLOW_CODE='.urlencode($_COOKIE["NA_CO"]);
$totalMoney = 0;
echo $queryString;
$row = $cls_product->get_view($idx);
$id = $row["idx"];
$name = $row["name"];
$naver_id = $row["navershop_id"];
$uprice =  $row["price"];
$count = count($row["idx"]);
$tprice = $uprice * $count;
$option = "";
//echo $id;
 $item = new ItemStack($id, $name, $tprice, $uprice, $option, $count);
 $totalMoney += $tprice;
 $queryString .= '&'.$item->makeQueryString();

//}
$totalPrice = (int)$totalMoney + (int)$shippingPrice;
$queryString .= '&TOTAL_PRICE='.$totalPrice;

echo ($queryString."<br>\n")."<br>";
$req_addr = 'ssl://test-pay.naver.com';
$req_url = 'POST /customer/api/order.nhn HTTP/1.1'; // utf-8
// $req_url = 'POST /customer/api/CP949/order.nhn HTTP/1.1'; // euc-kr
$req_host = 'test-pay.naver.com';
$req_port = 443;
$nc_sock = @fsockopen($req_addr, $req_port, $errno, $errstr);
if($nc_sock)
{
 fwrite($nc_sock, $req_url."\r\n" );
 fwrite($nc_sock, "Host: ".$req_host.":".$req_port."\r\n" );
 fwrite($nc_sock, "Content-type: application/x-www-form-urlencoded; charset=utf8\r\n"); 
 fwrite($nc_sock, "Content-length: ".strlen($queryString)."\r\n");
 fwrite($nc_sock, "Accept: */*\r\n");
 fwrite($nc_sock, "\r\n");
 fwrite($nc_sock, $queryString."\r\n");
 fwrite($nc_sock, "\r\n");
    
while(!feof($nc_sock))
 {
     $header=fgets($nc_sock,4096);
    
     echo $header;
     $headers .= $header;
     echo $headers;
    
     if($header=="\r\n")
     {
            break;
        
     }
     else 
     {
        $headers .= $header;
     }
 } 
        while(!feof($nc_sock))
        {
            $bodys.=fgets($nc_sock,4096);
        }
        fclose($nc_sock);
        $resultCode = substr($header,9,3);
             if ($resultCode == 200) 
             {
             // success
            
             $orderId = $bodys;
             } 
             else 
             {
             // fail
            return_error2json($bodys);
             } 

}
    else
    {
     echo "$errstr ($errno)<br>\n";
     exit(-1);
     //에러처리
    }
    echo ($orderId."<br>\n");
    
//$orderUrl = "https://test-pay.naver.com/customer/order.nhn?ORDER_ID=".$orderId."&SHOP_ID=".urlencode(NPAY_SHOP_ID)."&TOTAL_PRICE=".$totalPrice;
if($resultCode == 200){
    die(json_encode(array('error'=>'', 'ORDER_ID'=>$orderId, 'SHOP_ID'=>urlencode(NPAY_SHOP_ID), 'TOTAL_PRICE'=>$totalPrice)));
}else{
    die(json_encode(array('error'=>'error')));
}
//echo $orderUrl;
?>

 

이 질문에 댓글 쓰기 :

답변 1

SHOP_ID 값이 넘어오지 않았다는 얘기인 것 같습니다.

 

$queryString = 'SHOP_ID='.urlencode(NPAY_SHOP_ID);

 

과 같은 코드가 있는데.. NPAY_SHOP_ID 상수에 값이 정상적으로 들어있는지 확인해 보는 것이 좋을 듯 싶습니다.

echo NPAY_SHOP_ID;

exit;

답변을 작성하시기 전에 로그인 해주세요.
전체 7
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT