테스트 사이트 - 개발 중인 베타 버전입니다

네이버페이 질문입니다.

underzombie 6년 전 조회 3,451

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

 

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

 

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

 

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

 

</p>

<p> </p>

<p><?</p>

<p>

    //print_a($_POST);</p>

<p>        

    $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));

    </p>

<p>    require CFG_MODEL_PATH_ABS."/class.product.php";

    $cls_product = new product();

    //네이버페이

    require CFG_MODEL_PATH_ABS."/class.naverpay.php";</p>

<p>    $shippingType = 'FREE';

    if ($shippingType == 'PAYED') {

        $shippingPrice = 2500;

    }else{

        $shippingPrice = 0;

    }</p>

<p>    $sp = '&';

    

    $encode = "&page=product_view&idx=".$idx;</p>

<p>    $encode = urlencode($encode);</p>

<p>    if($pre_link == "shop")

        $backUrl = "<a href="http://".$_SERVER["HTTP_HOST"]."/?folder=shop".$encode;" target="_blank" rel="noopener noreferrer">http://".$_SERVER["HTTP_HOST"]."/?folder=shop".$encode;</a>

    else

        $backUrl = "<a href="http://".$_SERVER["HTTP_HOST"]."/?folder=mypage&page=order_cart";" target="_blank" rel="noopener noreferrer">http://".$_SERVER["HTTP_HOST"]."/?folder=mypage&page=order_cart";</a></p>

<p>$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;</p>

<p>echo $queryString;</p>

<p>$row = $cls_product->get_view($idx);</p>

<p>$id = $row["idx"];

$name = $row["name"];

$naver_id = $row["navershop_id"];

$uprice =  $row["price"];

$count = count($row["idx"]);

$tprice = $uprice * $count;

$option = "";</p>

<p>//echo $id;

 $item = new ItemStack($id, $name, $tprice, $uprice, $option, $count);

 $totalMoney += $tprice;

 $queryString .= '&'.$item->makeQueryString();</p>

<p>

//}</p>

<p>$totalPrice = (int)$totalMoney + (int)$shippingPrice;

$queryString .= '&TOTAL_PRICE='.$totalPrice;</p>

<p>

echo ($queryString."
\n")."
";</p>

<p>$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);</p>

<p>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))

 {</p>

<p>     $header=fgets($nc_sock,4096);

    

     echo $header;</p>

<p>     $headers .= $header;</p>

<p>     echo $headers;

    </p>

<p>     if($header=="\r\n")

     {

            break;

        

     }</p>

<p>     else 

     {

        $headers .= $header;

     }

 } </p>

<p>        while(!feof($nc_sock))</p>

<p>        {

            $bodys.=fgets($nc_sock,4096);

        }</p>

<p>        fclose($nc_sock);</p>

<p>        $resultCode = substr($header,9,3);</p>

<p>             if ($resultCode == 200) 

             {

             // success

            

             $orderId = $bodys;

             } 

             else 

             {

             // fail

            return_error2json($bodys);

             } </p>

<p>

}</p>

<p>    else

    {

     echo "$errstr ($errno)
\n";

     exit(-1);

     //에러처리

    }</p>

<p>    echo ($orderId."
\n");</p>

<p>    </p>

<p>//$orderUrl = "<a href="https://test-pay.naver.com/customer/order.nhn?ORDER_ID=".$orderId."&SHOP_ID=".urlencode(NPAY_SHOP_ID)."&TOTAL_PRICE=".$totalPrice;" target="_blank" rel="noopener noreferrer">https://test-pay.naver.com/customer/order.nhn?ORDER_ID=".$orderId."&SHOP_ID=".urlencode(NPAY_SHOP_ID)."&TOTAL_PRICE=".$totalPrice;</a></p>

<p>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')));

}</p>

<p>//echo $orderUrl;</p>

<p>?></p>

<p>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

4년 전

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

 

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

 

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

echo NPAY_SHOP_ID;

exit;

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인