영카트(그누보드) 스마트스토어 상품 연동 API
※ 회사에서 필요해서 간단한게 만든 버전입니다. 혹시나 필요하신 분에게는 도움이 될 것 같아 올립니다.
※ 회사 서버로 그누보드만 다시 설치해서 정상 동작을 확인했지만 오류 발생시 사용하시는 분의 상황에 따라
적절히 수정해서 쓰시면 감사하겠습니다. (그누보드 기본 파일은 수정한 것이 없습니다 )
※ 참고로 조만간 쿠팡 상품 API 도 올릴 예정입니다. 힘든 시기에 모두에게 힘이 되었으면 좋겠습니다.
※ 기타 궁금한 사항은 프로그램 내 기재된 메일 주소로 알려주시면 가능한 답변드리겠습니다.
영카트(그누보드)_스마트스토어_연동_API
================================




# 해당 프로그램은 무엇인가요?
영카트(그누보드) 상품을 스마트스토어에 신규로 등록하고 서로 매칭된 상품을 편리하게 연동하는 프로그램입니다.
# 이런 분께 추천드립니다.
스마트스토어와 영카트를 같이 운영 중인데, 품절/가격을 이중으로 수정하는 게 번거로운 분
부담스러운 통합솔루션 비용 없이 스마트스토어의 핵심만 가볍게 쓰고 싶은 분께 추천합니다.
# 지원 범위(중요)
현재는 아래와 같은 기본적인 기능만 지원됩니다.
영카트 상품 > 스마트스토어 신규 등록
영카트 상품명 > 스마트스토어 상품명 변경
영카트 상품가격 > 스마트스토어 판매가 변경
영카트 상품품절 체크시 > 스마트스토어 판매상태를 판매중지로 변경
영카트 판매가능 체크해제시 > 스마트스토어 전시상태를 전시중지로 변경
# 사용 전 주의사항
본 프로그램은 무료 배포이며, 사용 환경/설정/네이버 API 변경 등에 따라 오류가 발생할 수 있습니다.
실제 운영 적용 전 꼭 테스트 환경에서 충분히 검증 후 사용해 주세요.
본 프로그램 사용으로 발생하는 직접/간접 손해(주문/재고/노출/매출/계정 제재 등) 에 대해 제작자는 책임을 지지 않습니다.
무료 배포 특성상 모든 환경에서 100% 동작을 보장하긴 어렵습니다.
운영 반영 전 테스트를 권장드리며, 사용에 따른 최종 책임은 사용자에게 있습니다.
오류/개선 제안은 게시판에 남겨주시면 반영 및 검토하도록 하겠습니다.
# 라이선스/재배포 안내
본 프로그램은 개인/상업적 사용은 허용합니다.
단, 소스/파일의 무단 재배포 및 유료 판매는 금지합니다.
# 설치 전 준비사항
먼저 네이버 커머스 API 센터에서 내 스토어 애플리케이션을 등록해 주세요.
( 잘 모르실 경우 구글에 해당 내용으로 검색하시면 자세한 내용들이 많습니다 )
https://notice.naver.com/notices/cac/16929?page=1&pageSize=10&newNoticeHour=168&t=d
애플리케이션 ID : 커머스 API 센터에서 등록한 내 어플리케이션 참조
애플리케이션 시크릿 : 커머스 API 센터에서 등록한 내 어플리케이션 참조
판매자 ID : 스마트스토어에서 스토어 관리>API 관리>API 연동용 판매자ID
1. 압축을 영카트 루트에 그대로 풀어주세요.
쓰기 권한 확인
- `data/smartstore/
- `data/smartstore/tmp/
- `data/smartstore/register_jobs/
- `data/smartstore/soldout_jobs/
2. 설치 후 확인
- 관리자 접속 시 왼쪽 메뉴에 "API 관리"가 보이는지 확인합니다.
- 최고관리자가 아닌 계정은 권한 관리에서 아래 메뉴 권한(r/w)을 부여해야 합니다.
- `960001` 쇼핑몰>스마트스토어 상품등록
- `960200` 스마트스토어 상품관리
- `960230` 스마트스토어 등록 기본값
- `960100` 스마트스토어 연동 설정
3. 연동 설정(처음 1회)
관리자 메뉴: API 관리 > 스마트스토어 > 연동 설정
앱 ID/시크릿 입력 + 호출 IP 등록 + 토큰 발급
저장 후 테스트: API 관리 > 스마트스토어 > 스마트스토어 상품관리에서 목록 조회가 되는지 확인
# “매칭(연동)”이 핵심입니다
품절 동기화는 “영카트 상품코드(it_id) ↔ 스마트스토어 상품번호(origin/channel)” 매칭이 있어야 동작합니다.
CASE 1 : 스마트스토어 판매자 관리코드 = 영카트 상품코드 인 경우
스마트스토어 상품관리 화면에서 영카트 상품번호가 숫자로 바로 표시됩니다(확실 매칭)
CASE B: 스마트스토어 판매자 관리코드가 비어있거나 영카트 코드와 다른 경우(대부분 여기서 막힘)
API 관리 > 스마트스토어 > 스마트스토어 상품관리에서
영카트 상품번호 칸에 추천값(상품명 유사도) 이 미리 들어갑니다.
맞으면 그대로 두고, 틀리면 영카트 상품코드를 수정 입력
입력칸 옆 [매칭] 버튼을 눌러 해당 행만 즉시 매칭 처리
즉, 상품명으로 1차 비교해서 사용자의 불편함을 최소화합니다.
스마트스토어 연동 설정에서 영카트 상품연동 설정 사용이 체크되면
영카트 상품 수정시 위에서 명시한 지원 항목들이 영카트마트스토어 상품에도 즉시 반영됩니다.
- 본 모듈은 DB 테이블/컬럼을 자동 생성/추가합니다. 운영 반영 전 DB 백업을 권장합니다.
- `adm/css/admin.css` 같은 코어 파일을 직접 수정하는 방식은 피하고,
`adm/api_admin/api_admin.css` 처럼 플러그인 내부 CSS를 로드하는 방식을 권장합니다.
# 주의/권장
- 운영 적용 전 DB 백업을 권장합니다. (본 모듈은 최초 실행 시 자동으로 테이블/컬럼을 생성/추가합니다.)
- `data/smartstore/*.php` 설정 파일에 토큰/시크릿이 저장됩니다. `data/` 디렉토리는 외부 접근이 차단되어야 합니다.
(Apache는 `.htaccess`로 차단되지만, Nginx 등에서는 별도 차단 설정이 필요합니다.)
# 필수 요구사항(권장)
- PHP `curl` 확장 사용 가능(스마트스토어 API 호출/이미지 업로드)
- `data/` 디렉토리 쓰기 권한(설정/로그/job 파일 저장)
# 테스트 환경/호환 범위(참고)
--------------------------
- 그누보드/영카트: 그누보드 5.6.24 (영카트 포함 배포판 기준)
- PHP: 8.2.23
- OS: Rocky Linux 8.10 (x86_64)
- Web: Apache 2.4.37
- PHP 확장(필수): curl, json, openssl, mbstring
- DB: MySQL/MariaDB 호환 (테이블 생성/ALTER 권한 필요)
- 호스팅/서버 환경(PHP 버전, 확장, 권한, 방화벽/호출 IP 등록 등)에 따라 동작이 달라질 수 있습니다.
스마트스토어 토큰 발급 실패(IP 허용 관련) 해결 방법 안내
웹호스팅 환경에서는 웹사이트 접속 주소와 서버가 외부로 데이터를 보낼 때 쓰는 IP가 서로 다른 경우가 많습니다.
아래 단계에 따라 실제 IP를 확인하고 등록해 보시기 바랍니다.
1. 실제 서버 아웃바운드 IP 확인 방법
아래 코드를 복사하여 ip_check.php라는 파일로 만드신 후, 영카트 설치 경로에 업로드하고 브라우저에서 실행해 보세요.
(예: 도메인.com/ip_check.php)
PHP
<?php
// 내 서버가 네이버 API로 접속할 때 사용하는 실제 IP 확인
$ch = curl_init('https://api.ipify.org');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo "나의 서버 실제 호출 IP: " . curl_exec($ch);
curl_close($ch);
?>
화면에 나타나는 숫자로 된 IP 주소가 네이버에 등록해야 할 진짜 IP입니다.
2. 네이버 커머스 API 센터 설정 변경
네이버 커머스 API 센터에 접속합니다.
내 애플리케이션 > API 정보 메뉴로 이동합니다.
하단의 '호출 IP 등록' 칸에 위에서 확인한 실제 IP를 추가하고 저장합니다.
(기존에 등록된 IP가 있다면 지우지 마시고 줄바꿈으로 추가해 보세요.)
3. 다시 시도
IP 등록 후 반영까지 1~2분 정도 소요될 수 있습니다. 그 후 다시 관리자 화면에서 토큰 발급을 클릭해 보시기 바랍니다.
댓글 7개
두군데 올려야 하나 요근래 계속 고민을. ^^
7.x 인데 잘 되어야 할텐데요.
좋아요를 한번 밖에 못 누르네요. ㅠㅠ
큰거(?) 왔네요. 꾸벅.(__) 고맙습니다.
4번 줄
add_stylesheet('<link rel="stylesheet" href="' . G5_ADMIN_URL . '/api_admin/api_admin.css">', 20);
를
add_stylesheet('<link rel="stylesheet" href="' . G5_ADMIN_URL . '/api_admin/css/api_admin.css">', 20);
로 수정해 주세요.
4번 줄에서 css(폴더명) 가 누락 되어져 있더군요. 좌측 메뉴가 안 보여서 뭐가 잘못 되었나. ㅠㅠ
css 폴더명 넣어 주니 보여지네요. 순간 뭐가 잘못된건가 실겁 했습니다.
혹~ 설치 하시고 메뉴 안 보이시는 분들 참고해 주세요.
혹시 호출 IP 등록 후 연동 안되시는 분들은
<?php
// 내 서버가 외부로 나갈 때 사용하는 IP 확인
$ch = curl_init('https://api.ipify.org');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo "나의 서버 아웃바운드 IP: " . curl_exec($ch);
curl_close($ch);
?>
임의의 파일로 저장 후 계정에 올리시고 IP
확인 후 등록해 놓으시기 바랍니다.
우측에 있는 [상세] 버튼 클릭 > 하단에 스마트스토어 등록
클릭 시 CLI PHP 실행 파일을 찾을 수 없습니다. 라고
알림창 뜹니다.
=====================================
API 관리 > 쇼핑몰 상품선택 > 해당 상품의 목록 에서
좌측에 체크-인 우측 상단에 선택 상품 스마트스토어 일괄 등록
클릭 선택한 상품을 스마트스토어에 일괄 등록하시겠습니까?
확인 로딩바 지나가고 결과 목록이 보여집니다.
스마트스토어 상품관리 or 스토어 메인 진열 상품 목록에
보면 아무 변화가 없습니다. 웹호스팅 에서 막은건지. ㄷㄷㄷ
<?php
// 서버 내 PHP CLI 경로 탐색
$output = [];
exec("which php", $output);
echo "CLI 경로: " . ($output[0] ?? "찾을 수 없음") . "<br>";
// CLI 버전 확인 테스트
$version = shell_exec("php -v");
echo "CLI 작동 여부: <pre>$version</pre>";
?>
그리고 속도문제로 일괄등록버튼(주석처리)이 아닌 리스트 항목에 관리에 상품마다 등록버튼 처리되게 수정하였습니다.
새 파일로 다운받으셔서 확인해 주세요.
매칭 까지는 잘 됩니다. 제목/가격
수정도 잘 되구요. 수정 후 스마트스토어에도
적용 되었습니다. 라고 알림창이 보여 지네요.
현재 등록만 안되고 있습니다. 다른건 다 잘되는듯 합니다. 스마트스토어 상품 등록 결과 상태 항목 error 이라고만 보여 지네요.
명절 연휴라 그런지 호스팅사가 연락도 안되고 질문 글 올려 놨는데 답이 없네요. CLI PHP 만 확인 하면 될듯 합니다.
고맙습니다.