채택완료

네이버페이 연동검수 오류 (찜등록 이미지URL)

네이버페이 연동중인데

2. 찜등록 쿼리스트링 내 유효하지 않은 상품이미지URL이 전달되고 있습니다.

아래 참고하시어 찜등록 쿼리스트링 및 상품정보XML 모두 유효한 상품이미지URL이 전달되도록 수정 부탁드립니다.

...

ITEM_IMAGE:http:https://도메인.com/data/item/1607576003/511500.jpg,

ITEM_THUMB :http:https://도메인.com/data/item/1607576003/511500.jpg,

...

이런 답변이 왔습니다.

 

▼ lib>naverpay.lib.php 파일 get_naverpay_item_image_url($it_id) 부분입니다.

Copy
function get_naverpay_item_image_url($it_id)
{
    global $g5;

    $sql = " select it_id, it_img1, it_img2, it_img3, it_img4, it_img5, it_img6, it_img7, it_img8, it_img9, it_img10 from {$g5['g5_shop_item_table']} where it_id = '$it_id' ";
    $row = sql_fetch($sql);

    if(!$row['it_id'])
        return '';

    $url = '';

    for($i=1;$i<=10; $i++) {
        $file = G5_DATA_PATH.'/item/'.$row['it_img'.$i];
        if(is_file($file) && $row['it_img'.$i]) {
            $size = @getimagesize($file);
            if($size[2] < 1 || $size[2] > 3)
                continue;

            $url = str_replace(G5_PATH, G5_URL, $file);

            if( isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ){
                $url = preg_replace('#^https:#', '', $url);
                
                $port_str = ':'.$_SERVER['SERVER_PORT'];
                
                if( strpos($url, $port_str) !== false ){
                    $url = str_replace($port_str, '', $url);
                }
            }
            
            //TLS(SSL/HTTPS) 프로토콜 사용 시 네이버페이/네이버 쇼핑 서버가 해당 경로로 접근하여 데이터를 취득할 수 없으므로, 반드시 http 를 사용해야 함
            $url = (preg_match('#^http:#', $url) ? '' : 'http:').$url;

            break;
        }
    }

    return $url;
}

 

▼ shop/naverpay/naverpay_item.php 중 상품정보 부분입니다.

Copy
for($i=0; $i<$count; $i++) {
    $it_id = $_POST['it_id'][$i];

    // 상품정보
    $sql = " select * from {$g5['g5_shop_item_table']} where it_id = '$it_id' ";
    $it = sql_fetch($sql);
    if(!$it['it_id'])
        alert_close('상품정보가 존재하지 않습니다.');

    $id          = urlencode($it['it_id']);
    $name        = urlencode($it['it_name']);
    $description = urlencode($it['it_basic']);
    $price       = get_price($it);
    $image       = urlencode(get_naverpay_item_image_url($it_id));
    $item_url    = urlencode(G5_SHOP_URL.'/item.php?it_id='.$it_id);

    $item .= '&ITEM_ID='.$id;
    if($it['ec_mall_pid'])
        $item .= '&EC_MALL_PID='.urlencode($it['ec_mall_pid']);
    $item .= '&ITEM_NAME='.$name;
    $item .= '&ITEM_DESC='.$description;
    $item .= '&ITEM_UPRICE='.$price;
    $item .= '&ITEM_IMAGE='.$image;
    $item .= '&ITEM_THUMB='.$image;
    $item .= '&ITEM_URL='.$item_url;
}

찾아보니 urlencode가 문자열을 url로 인코딩하는 함수라고 하더라구요

$image       = urlencode(get_naverpay_item_image_url($it_id));

이부분이 문제인듯한데 어떻게 수정해야할지 모르겠습니다

그냥 urlencode() 없애고 get_naverpay_item_image_url($it_id)를 바로 넣으면 될까요?

|

답변 1개 / 댓글 3개

채택된 답변
+20 포인트

주소 보니까 http 뒤에 https가 또 붙네요 위 부분을 확인해 보셔야 할듯 합니다.

답변에 대한 댓글 3개

댓글감사합니다

한가지 여쭤봐도 될까요?
혹 urlencode에서 https를 붙이나요?

get_naverpay_item_image_url() 함수 내에서는
$url = (preg_match('#^http:#', $url) ? '' : 'http:').$url;
이 부분으로 봤을땐 http로 붙는 것 같은데 거기다가

urlencode 얘가 중간에 https를 추가해서 저러는건지ㅠㅠ
urlencode는 단지 url 인코딩만 하는것이고요 replace로 변경하는 부분이 어딘가에서 적용되고 있는듯 합니다.
ㅠㅠ그렇군요 감사합니다
아직 원인파악이 되지않아 우선 urlencode없이 재검수요청해보려해요ㅜㅜ

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