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

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

qwaszx 4년 전 조회 2,099

네이버페이 연동중인데

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

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

...

ITEM_IMAGE:http:https://www.google.com/url?q=https://shop.fittingmonster.com/data/item/1607576003/511500.jpg,&source=gmail&ust=1608093600992000&usg=AFQjCNEzjoH4ApH9NhDejB6A6yiMSCa4fQ" href="https://shop.fittingmonster.com/data/item/1607576003/511500.jpg," target="_blank">https://도메인.com/data/item/1607576003/511500.jpg,

ITEM_THUMB :http:https://www.google.com/url?q=https://shop.fittingmonster.com/data/item/1607576003/511500.jpg,&source=gmail&ust=1608093600992000&usg=AFQjCNEzjoH4ApH9NhDejB6A6yiMSCa4fQ" href="https://shop.fittingmonster.com/data/item/1607576003/511500.jpg," target="_blank">https://도메인.com/data/item/1607576003/511500.jpg,

...

이런 답변이 왔습니다.

 

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

</p>

<p>function get_naverpay_item_image_url($it_id)

{

    global $g5;</p>

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

<p>    if(!$row['it_id'])

        return '';</p>

<p>    $url = '';</p>

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

<p>            $url = str_replace(G5_PATH, G5_URL, $file);</p>

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

<p>            break;

        }

    }</p>

<p>    return $url;

}</p>

<p>

 

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

</p>

<p>for($i=0; $i<$count; $i++) {

    $it_id = $_POST['it_id'][$i];</p>

<p>    // 상품정보

    $sql = " select * from {$g5['g5_shop_item_table']} where it_id = '$it_id' ";

    $it = sql_fetch($sql);

    if(!$it['it_id'])

        alert_close('상품정보가 존재하지 않습니다.');</p>

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

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

}</p>

<p>

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

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

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

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

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

답변 1개

채택된 답변
+20 포인트
플라이
4년 전

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

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

답변에 대한 댓글 3개

q
qwaszx
4년 전
댓글감사합니다

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

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

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

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

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

로그인