// === API 설정 화면 === const { useState: useStateSet } = React; function SettingsScreen() { const [creds, setCreds] = useStateSet(window.API.loadCreds()); const [showSecret, setShowSecret] = useStateSet(false); const [confirmClear, setConfirmClear] = useStateSet(false); const update = (patch) => setCreds(prev => ({ ...prev, ...patch })); const save = () => { window.API.saveCreds(creds); window.toast("자격증명이 브라우저에 저장되었습니다"); }; const clear = () => { window.API.clearCreds(); setCreds({}); setConfirmClear(false); window.toast("자격증명이 삭제되었습니다"); }; return (

API 설정

ISVM 및 네이버 커머스 API 자격증명을 관리합니다

{/* Security warning */}
⚠️
보안 주의사항
  • 자격증명은 이 브라우저의 localStorage에만 저장됩니다 — 서버나 코드에 저장되지 않습니다.
  • 네이버 client_secret은 절대 브라우저에서 직접 사용하지 마세요. 서버 프록시에서만 사용해야 합니다.
  • 채팅, GitHub, 공개된 곳에 시크릿이 노출된 경우 즉시 재발급하세요.
  • 공유 PC에서는 작업 후 반드시 "전체 삭제"를 누르세요.
{/* ISVM */}
IS
ISVM Crawler API
자격증명 불필요 (CORS 화이트리스트만)
ISVM 서버는 인증 없이 동작하며, 호출 도메인이 서버측 CORS 화이트리스트에 등록되어 있어야 합니다.
{/* Naver */}
N
네이버 커머스 API
update({ naver_client_id: e.target.value.trim() })} />
update({ naver_client_secret: e.target.value.trim() })} />
왜 프록시가 필요한가?
  1. 네이버 OAuth 토큰 발급은 bcrypt(client_id + "_" + timestamp, client_secret) 서명을 요구합니다 → 시크릿이 노출됩니다
  2. 네이버는 호출 IP를 화이트리스트로 검증합니다 (브라우저 IP는 매번 바뀜)
  3. 브라우저 CORS 정책으로 직접 호출이 차단됩니다
update({ proxy_url: e.target.value.trim() })} />
브라우저는 이 URL로만 요청합니다. 프록시 서버가 client_secret을 보관하고 네이버 API에 서명된 요청을 전달합니다.
update({ smartstore_id: e.target.value.trim() })} />
ISVM 신규 등록 시 사용할 기본값 (배송/A&S — 기준상품에서 안 가져옴)
update({ naver_as_phone: e.target.value.trim() })} /> update({ naver_base_fee: parseInt(e.target.value) || 0 })} /> update({ naver_free_amount: parseInt(e.target.value) || 0 })} /> update({ naver_remote_fee: parseInt(e.target.value) || 0 })} />
미입력 시 기본값 사용: A/S 1588-0000, 배송비 3,000원, 무료배송 50,000원 이상, 도서/산간 +5,000원, 택배사 로젠택배
{/* Supabase (매입처/Model 같은 사용자 메타 저장) */}
S
Supabase (사용자 메타데이터 저장)
미입력 시 브라우저 localStorage 사용 (다른 PC 동기화 X)
update({ supabase_url: e.target.value.trim() })} /> update({ supabase_anon_key: e.target.value.trim() })} />
anon key는 브라우저용 공개 키 — Supabase RLS 정책으로 보호됩니다. service_role key는 절대 입력하지 마세요.
저장 대상: 상품 관리의 매입처 / Model (네이버 API 미지원 → 우리가 별도 보관)
다른 PC 동기화: 같은 URL/key 입력만 하면 자동 동기화
{/* 로젠택배 Open API */}
L
로젠택배 Open API (선택)
미입력 시 XLSX 다운로드 방식만 사용 가능
update({ logen_user_id: e.target.value.trim() })} /> update({ logen_cust_cd: e.target.value.trim() })} />
로젠 API 연동 안내
  • userId/custCd는 로젠택배와 API 연동 계약 시 발급됩니다 (☎ 1588-9988)
  • 입력 안 해도 OK — 입력 시 송장 출력 화면에서 "로젠 API로 발급" 버튼 활성화
  • 먼저 개발 환경으로 테스트한 후 운영으로 전환하는 것을 권장
localStorage 키: smartfarm.creds.v1
setConfirmClear(false)} title="자격증명 삭제 확인" footer={<> }>
이 브라우저에 저장된 모든 자격증명이 삭제됩니다. 작업을 마친 공유 PC에서 반드시 실행하세요.
); } window.SettingsScreen = SettingsScreen;