네이버페이 연동검수 오류 (찜등록 이미지URL) 채택완료
네이버페이 연동중인데
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/
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/
...
이런 답변이 왔습니다.
▼ 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개
답변을 작성하려면 로그인이 필요합니다.
로그인
한가지 여쭤봐도 될까요?
혹 urlencode에서 https를 붙이나요?
get_naverpay_item_image_url() 함수 내에서는
$url = (preg_match('#^http:#', $url) ? '' : 'http:').$url;
이 부분으로 봤을땐 http로 붙는 것 같은데 거기다가
urlencode 얘가 중간에 https를 추가해서 저러는건지ㅠㅠ