VibeFox Frenet for OpenCart — 도움말
요구 사항
OpenCart: 3.0.x(3.0.5.0에서 테스트됨) 또는 4.0.2 이상(4.1.0.3에서 테스트됨).
PHP: 8.0 이상.
Frenet 계정(실시간 견적에만 필요):Frenet 패널(painel.frenet.com.br)에서 무료 계정을 만들고, 사용할 운송업체를 활성화한 다음 API 토큰을 복사하세요. 고정 가격만 사용한다면 Frenet 계정은 필요하지 않습니다.
상품:정확한 가격을 위해 무게와 치수를 입력하세요. 이 정보가 없는 상품은 0.3 kg 및 16 × 11 × 2 cm(Correios의 최소 상자 크기)로 견적이 계산됩니다.
VibeFox 라이선스 키:vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
다운로드 파일은 두 OpenCart 버전용 패키지가 들어 있는 zip 파일 하나입니다. 컴퓨터에서 압축을 푸세요. 파일에는 README.txt, OpenCart 3 패키지 vfd_frenet-oc3-(version).ocmod.zip, OpenCart 4 패키지 vfd_frenet.ocmod.zip이 들어 있습니다. 사용 중인 OpenCart 버전에 맞는 패키지만 설치하세요. 라이선스 키는 두 버전 모두 같습니다.
OpenCart 3
1. 관리자 페이지에서 Extensions > Installer로 이동하고 Upload를 클릭한 다음 vfd_frenet-oc3-(version).ocmod.zip 파일을 선택합니다. 이 확장 기능은 OCMOD 수정 사항을 추가하지 않으므로 Extensions > Modifications를 새로 고칠 필요가 없습니다. 설치 도구 대신 이 패키지의 upload 폴더 내용을 쇼핑몰의 루트 폴더에 복사해도 됩니다.
2. Extensions > Extensions로 이동하여 확장 기능 유형으로 Shipping을 선택합니다. VibeFox Frenet을 찾아 Install(녹색 + 버튼)을 클릭합니다.
3. Edit(연필 버튼)를 클릭하여 설정 페이지를 엽니다.
4. Edit 페이지 상단의 라이선스 블록에 있는 License key 칸에 VibeFox 라이선스 키를 입력하고 Activate를 클릭합니다(라이선스 키 참조).
5. API 토큰을 붙여 넣고 발송지 CEP를 입력합니다. 기본 통화가 BRL이 아니면 BRL 환율을 입력합니다. 필요하다면 고정 가격과 대체 비용을 추가합니다. Enable Frenet을 켜고 Save를 클릭합니다.
OpenCart 4
1. 관리자 페이지에서 Extensions > Installer로 이동하고 Upload를 클릭한 다음 vfd_frenet.ocmod.zip 파일을 선택합니다. 파일 이름을 바꾸지 마세요. OpenCart 4는 파일 이름에서 확장 기능 코드를 읽으므로, 이름을 바꾼 패키지는 작동하지 않습니다.
2. 설치된 확장 기능 목록에 같은 페이지에서 패키지가 나타납니다. 그 옆의 Install(녹색 + 버튼)을 클릭합니다.
3. Extensions > Extensions로 이동하여 확장 기능 유형으로 Shipping을 선택합니다. VibeFox Frenet을 찾아 Install(녹색 + 버튼)을 클릭한 다음 Edit(연필 버튼)을 클릭합니다.
4. 라이선스 키와 설정은 OpenCart 3의 4단계와 5단계와 같이 입력합니다. 설정 페이지와 그 항목들은 두 버전에서 동일합니다.
설치 후에는 Enable Frenet을 켜고 저장하기 전까지 이 배송 방법이 꺼져 있습니다. 제거한 뒤 다시 설치하면, 보관해 둔 Frenet 설정이 다시 사용됩니다.
구성
모든 설정은 확장 기능 페이지에 있습니다: Extensions > Extensions > Shipping > VibeFox Frenet > Edit. 섹션은 왼쪽에 나열됩니다. 하단의 Save 버튼 하나로 페이지 전체를 다시 불러오지 않고 저장합니다. 저장할 때마다 캐시된 Frenet 견적도 지워집니다. 가격 입력란은 소수점 구분자로 점과 쉼표를 모두 받습니다. 값이 잘못되면 아무것도 저장되지 않고, 페이지에 이유가 표시됩니다. 예를 들어 Enter a valid method title (64 characters max, without < > ; = # { })., "…" must be a number., "…" must not be negative. 등이 있습니다. BRL exchange rate가 0 이하이거나, Minimum weight (kg)가 Maximum weight (kg)보다 크면 이 역시 거부됩니다. 이 확장 기능의 수정 권한이 있는 관리자 사용자만 설정을 저장할 수 있습니다.
페이지 상단에는, 그리고 저장할 때마다 확장 기능이 경고를 표시합니다. API 토큰이 없는 경우(고정 가격만 사용되며, 고정 가격도 없으면 배송 방법이 전혀 표시되지 않음), 발송지 CEP가 없는 경우, 발송지 CEP가 8자리가 아닌 경우, 기본 통화가 BRL이 아닌데 환율이 없는 경우입니다. 쇼핑몰에 단위가 kg인 무게 클래스나 단위가 cm인 길이 클래스가 없으면 이것도 경고합니다. 이 경우 상품 무게와 치수는 해당 클래스의 단위 이름에 따라 환산되며, 알 수 없는 단위는 kg 또는 cm로 간주됩니다. System > Localisation > Weight Classes와 Length Classes를 확인하세요.
일반
설정은 모든 지역 구역에 적용됩니다. Conditions에서 배송 방법을 지역 구역으로 제한하거나 Ignore shipping zones를 사용할 수 있습니다. 가격은 항상 이 확장 기능에서 가져옵니다.
Enable Frenet:체크아웃에서 Frenet을 표시하거나 숨깁니다. 기본값: 끔.
Method title:장바구니와 체크아웃에서 고객에게 보이는 배송 방법 이름입니다. 기본값: Frenet. 필수 항목이며, 최대 64자이고, 다음 문자는 사용할 수 없습니다: < > ; = # { }.
Sort order:체크아웃 배송 방법 목록에서 Frenet의 위치입니다. 정수입니다.
Frenet 실시간 견적
Frenet은 Frenet 계정에서 활성화된 운송업체(Correios, Jadlog, Loggi 등)를 비교하고, 장바구니에 대한 가격을 반환합니다. 실시간 견적은 브라질에 있는 8자리 CEP가 완전히 입력된 주소에 대해서만 요청됩니다. 이 섹션에는 Frenet 패널로 가는 링크가 있습니다.
API token:Frenet 패널에서 가져온 Frenet API 토큰입니다. 고정 가격만 사용하려면 비워 두세요. 저장 후 이 칸은 비어 있고 A token is saved — leave empty to keep it.를 표시합니다. 변경하려는 경우에만 새 값을 입력하세요. 저장된 토큰을 삭제하려면 Remove the saved token을 선택하고 저장합니다.
Origin CEP:소포를 발송하는 우편번호(CEP)입니다. 예: 01001-000. OpenCart에는 쇼핑몰 우편번호가 없으므로 실시간 견적에는 이 칸이 필요합니다. 8자리가 아닌 CEP는 입력한 그대로 저장되며, 페이지에 Frenet: the origin CEP must have 8 digits.가 표시됩니다.
Service to offer:Cheapest service(기본값) 또는 Fastest service. Frenet은 여러 서비스를 반환하지만, 배송 방법은 가격 하나만 표시합니다. 선택된 운송업체, 서비스 및 배송 기간은 주문과 함께 저장됩니다.
BRL exchange rate:Frenet은 브라질 레알로 견적을 냅니다. 기본 통화가 BRL이 아니면, 1 BRL이 기본 통화로 얼마인지 입력하세요. 예: 0.16. 견적과 주문의 신고 금액은 이 환율로 환산됩니다. 환율이 없으면 실시간 견적은 사용되지 않습니다. 기본 통화가 BRL이면 이 칸은 Frenet 가격을 그대로 사용한다는 내용을 표시합니다.
고정 가격
API 토큰이 없을 때, Frenet이 서비스하지 않는 국가에 대해, 그리고 Frenet이 가격을 반환하지 않을 때(API 중단, CEP 서비스 불가) 사용됩니다.
Price per country:Country, Price, XS, S, M, L, XL 열이 있는 표입니다. 가격은 기본 통화로 입력하며 세금은 제외합니다. Add country를 클릭하면 행이 추가됩니다. 크기 열은 장바구니 무게에 따라 달라집니다: XS는 1 kg 이하, S는 2 kg 이하, M은 3 kg 이하, L은 5 kg 이하, XL은 5 kg 초과입니다. 크기 열이 비어 있으면 Price가 사용됩니다. Price가 0이면 해당 국가는 무료 배송입니다. 자체 행이 없는 나머지 모든 국가에는 * Default (all other countries)를 사용합니다. 가격이 전혀 없는 행은 저장할 때 삭제됩니다.
Fallback cost:Frenet과 표 모두 가격을 제공하지 않을 때 사용됩니다. 배송 방법을 숨기려면 비워 두세요.
Fixed price applies:Per order(기본값)는 가격을 한 번만 청구합니다. Per item (price × quantity)는 가격에 상품 개수를 곱합니다. 이는 고정 가격과 대체 비용에만 적용됩니다. Frenet 견적은 이미 장바구니 전체를 포함합니다.
조건
Minimum weight (kg):장바구니 무게가 이 값보다 작으면 배송 방법을 숨깁니다. 0은 제한 없음을 뜻합니다.
Maximum weight (kg):장바구니 무게가 이 값보다 크면 배송 방법을 숨깁니다. 기본값: 30(칸이 비어 있을 때도 사용됨). 0은 제한 없음을 뜻합니다. Minimum weight (kg)보다 작을 수 없습니다.
Minimum order amount:배송이 필요한 상품의 소계(쿠폰 적용 후, 세금 전)가 이 금액 이상일 때만 배송 방법을 표시합니다. 항상 표시하려면 비워 두세요.
Free shipping from:배송비가 무료가 되는 소계(쿠폰 적용 후, 세금 전)입니다. 무료 배송을 제공하지 않으려면 비워 두세요.
Tax class:배송비에 추가되는 세금 클래스, 또는 No tax입니다. Frenet 가격은 운송업체의 최종 가격입니다. OpenCart가 이 가격에 세금을 더하지 않도록 하려면 No tax를 선택하세요.
Geo zone:이 지역 구역의 주소에만 Frenet을 제공합니다. All zones는 제한이 없음을 뜻합니다. Ignore shipping zones와 함께 사용되지 않습니다. 지역 구역은 System > Localisation > Geo Zones에서 관리합니다.
배송 구역 없이 제공 범위
일반적으로 배송 방법은 Conditions에서 선택한 지역 구역에서 제공됩니다(아무것도 선택하지 않으면 모든 구역에서 제공).
Ignore shipping zones:일치하는 지역 구역과 관계없이 아래 국가에 대해 Frenet을 제공합니다. 이 경우 Conditions의 Geo zone은 확인되지 않습니다.
Countries:이 모드의 배송 대상 국가이며, 쇼핑몰에서 활성화된 국가 중에서 선택합니다. 비워 두면 배송하는 모든 국가를 사용합니다. Ignore shipping zones가 켜져 있을 때만 사용됩니다.
고급
Debug log:모든 견적 요청과 응답을 storage/logs/vfd_frn_debug.log.php(OpenCart 4에서는 system/storage/logs/vfd_frn_debug.log.php)에 기록합니다. 이 파일은 웹에서 읽을 수 없습니다. API 오류는 항상 기록됩니다. 토큰은 기록되지 않으며 고객의 CEP는 줄여서 기록됩니다. 작업이 끝나면 끄세요. 파일이 5 MB에 도달하면 vfd_frn_debug.old.log.php로 옮겨지고 새 로그가 시작됩니다.
Log:로그의 크기와 최근 항목을 보여줍니다. Clear log를 클릭하면 비웁니다.
Remove data on uninstall:켜져 있으면 확장 기능을 제거할 때 모든 Frenet 설정과 로그가 삭제됩니다. 꺼져 있으면 다시 설치할 수 있도록 모든 것이 보관됩니다. 캐시된 견적은 항상 삭제됩니다. 주문과 함께 저장된 Frenet 서비스는 주문 기록의 일부이므로 유지됩니다.
가져오기 / 내보내기
Export:Download JSON을 클릭하면 설정을 JSON 파일로 저장합니다. API 토큰은 내보내지 않습니다.
Import:이전에 내보낸 JSON을 붙여 넣고 Import를 클릭하면 설정을 복원합니다. 예를 들어 다른 쇼핑몰에 적용할 때 사용합니다. 값은 일반 저장과 같은 방식으로 확인됩니다. 저장된 API 토큰은 유지됩니다.
체크아웃에서 작동하는 방식
OpenCart가 배송 방법을 표시할 때, 확장 기능에 Frenet 가격을 요청합니다. Geo zone이 설정되어 있고(그리고 Ignore shipping zones가 꺼져 있고) 주소가 그 밖에 있으면 Frenet은 제공되지 않습니다. Requires Shipping이 Yes로 설정된 상품만 계산에 포함됩니다. 나머지 상품은 무게를 더하지 않으며 주문 금액에도 포함되지 않습니다. 그런 다음 확장 기능은 국가 목록(Ignore shipping zones가 켜져 있을 때), 장바구니 무게, 최소 주문 금액을 확인합니다. 주문 금액은 쿠폰 할인 후, 세금 전의 배송 대상 상품 가격입니다. 무료 배송이 적용되면 가격은 0이 되며 Frenet으로 요청이 전송되지 않습니다.
브라질에 있고 8자리 CEP가 완전히 입력된 주소의 경우, 그리고 API 토큰과 발송지 CEP가 설정되어 있으면, 확장 기능은 Frenet에 발송지 및 도착지 CEP, 장바구니의 모든 상품(kg 단위 무게, cm 단위 치수, 수량, 상품의 Model 및 카테고리), BRL 단위 주문 금액, 장바구니의 쿠폰 코드를 보냅니다. CEP가 완전하지 않으면 요청하지 않습니다. Frenet은 활성화된 운송업체의 서비스를 반환합니다. 오류가 있거나 가격이 없는 서비스는 건너뜁니다. 확장 기능은 가장 저렴하거나 가장 빠른 서비스를 선택하고 가격을 기본 통화로 환산합니다. 가격은 기본 통화의 소수점 자릿수에 맞춰 반올림되며, 선택된 Tax class의 세금을 포함하여 고객의 통화로 표시됩니다.
각 응답은 같은 장바구니와 같은 주소에 대해 1시간 동안 캐시됩니다. 실패한 요청이나 활성화된 운송업체가 서비스하지 않는 CEP는 10분 동안 기억됩니다. API 시간 초과는 10초입니다. 이런 경우 고객에게 오류는 보이지 않습니다. 고정 가격 또는 대체 비용이 사용되며, 둘 다 없으면 배송 방법이 숨겨집니다. 이유는 로그에 기록됩니다. 브라질 이외 주소에는 고정 가격만 사용됩니다.
OpenCart 4에서는 고객이 체크아웃 페이지의 배송 방법 블록에서 Choose를 클릭하고, Shipping method options 창에서 Frenet을 선택합니다. 이 방법은 OpenCart 3과 같은 방식으로 작동합니다.
확장 기능은 요금만 계산합니다. 배송 전표를 만들지 않고, 라벨을 인쇄하지 않으며, 소포를 추적하지 않습니다. 장바구니마다 Frenet 서비스 하나만 표시하며 여러 개를 표시하지 않고, 픽업 포인트나 사물함도 없습니다. Frenet 견적은 브라질 내에서만 제공되므로, 다른 국가에는 고정 가격을 사용하세요.
주문
Frenet으로 주문이 이루어지면, 확장 기능은 배송비가 어떻게 계산되었는지를 저장합니다. 고객이 배송 단계에서 본 옵션과 정확히 같으며, Frenet에 새 요청을 보내지 않습니다. 그러면 Sales > Orders의 주문 페이지에 다음 줄이 포함된 Frenet 블록이 표시됩니다:
Carrier:Frenet 운송업체와 서비스입니다. 예를 들어 Correios 또는 Jadlog 서비스입니다. 실시간 견적에 대해 표시됩니다.
Delivery time:Frenet이 반환한 영업일 기준 배송 기간입니다. 실시간 견적에 대해 표시됩니다.
Price source:Live Frenet quote, Fixed price (price per country), Fallback cost 또는 Free shipping입니다.
OpenCart 4에서는 블록이 History 위에 표시됩니다. OpenCart 4는 고객이 주문을 다시 확정하면 같은 주문을 업데이트합니다. 이때 저장된 Frenet 데이터도 함께 업데이트되며, 고객이 다른 배송 방법을 선택했다면 해당 주문의 Frenet 데이터는 삭제됩니다.
이 블록은 확장 기능이 비활성화되어 있어도 표시됩니다. 이 데이터는 Remove data on uninstall이 켜져 있어도 확장 기능을 제거할 때 유지됩니다.
라이선스 키
이 확장 기능은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. License — VibeFox Frenet 라이선스 블록은 Extensions > Extensions > Shipping > VibeFox Frenet > Edit 페이지에서 설정 위에 있는 첫 번째 블록입니다. 키를 License key 칸에 붙여 넣고 Activate를 클릭하세요. 그 후 블록에는 키가 가려진 형태로, 상태(예: 라이선스가 유효한 날짜와 도메인)와 함께 Check now(상태 다시 확인), Change key(다른 키 입력), Remove key(이 쇼핑몰에서 키 제거) 버튼이 표시됩니다. 그 아래에는 Product: opencart-shipping-frenet 줄과 Manage licenses and domains in your account 링크가 있으며, 이 링크는 vibefox.net 계정을 엽니다. 키는 이 확장 기능의 수정 권한이 있는 관리자 사용자만 변경할 수 있습니다. 블록의 텍스트는 관리자 언어를 따릅니다(영어와 러시아어 포함).
키가 승인되지 않으면 블록에 이유가 표시됩니다. 예: Key not found, This key belongs to another product, Domain limit reached, 또는 날짜와 함께 License expired on. 쇼핑몰 주소를 변경한 후, 또는 계정에서 도메인 슬롯을 비운 후에는 Check now를 클릭하세요. 라이선스 서버에 연결할 수 없으면 확장 기능은 마지막으로 확인된 상태로 계속 작동합니다.
키 하나는 도메인 하나에서 작동합니다. OpenCart 설정에 있는 쇼핑몰 주소가 기준입니다. 쇼핑몰에서 키를 제거해도 도메인 슬롯은 비워지지 않습니다. vibefox.net 계정에서 슬롯을 비우세요.
활성 키가 없으면 Frenet 배송 방법은 체크아웃에서 고객에게 표시되지 않고 요금도 계산되지 않습니다. 같은 브라우저에서 관리자 페이지에 로그인한 관리자 사용자는 여전히 쇼핑몰에서 이 배송 방법을 볼 수 있으며, (unlicensed — visible to admins only)로 표시됩니다. 따라서 키를 구입하기 전에 확장 기능을 설정하고 테스트할 수 있습니다. OpenCart 4에서는 이 미리보기를 사용할 수 없습니다. 쇼핑몰은 관리자 로그인을 인식하지 못하므로, 활성 키가 없으면 배송 방법이 모든 사용자에게 숨겨집니다. Edit 페이지를 한 번 열면 관리자 Dashboard에 알림이 표시됩니다. ×를 눌러 닫으면 7일 동안 숨겨집니다. 기존 주문에는 영향을 주지 않습니다.
라이선스가 만료되어도 확장 기능은 계속 작동하지만, 업데이트와 지원을 받으려면 갱신이 필요합니다. 관리자 Dashboard 또는 Edit 페이지를 열면 상태가 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 이후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 확장 기능을 제거하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 Frenet이 나타나지 않음:라이선스가 활성 상태인지, Enable Frenet이 켜져 있는지 확인하세요. Geo zone, 또는 Ignore shipping zones와 Countries, 무게 제한, Minimum order amount를 확인하세요. 확장 기능 페이지 상단의 경고를 확인하세요. 일반적인 원인: 고객이 아직 8자리 CEP를 완전히 입력하지 않았고 고정 가격도 없는 경우, 또는 Frenet이 해당 경로의 서비스를 반환하지 않았고 고정 가격도 없는 경우입니다. 상품의 Requires Shipping이 Yes로 설정되어 있는지도 확인하세요.
실시간 견적이 표시되지 않음:Debug log를 켜고, 체크아웃을 새로 고친 다음 확장 기능 페이지의 Log 칸을 확인하세요. 이유가 표시됩니다. 발송지 CEP 없음, BRL 환율 없음, 고객 CEP 미완성, 무게 또는 금액 제한, 건너뛴 서비스의 메시지 등입니다.
로그에 API 토큰이 거부되었다고 표시됨(HTTP 401 또는 403):Frenet 패널에서 토큰을 다시 복사하여 API token에 붙여 넣으세요.
로그에 Frenet이 서비스를 반환하지 않았다고 표시됨:Frenet 패널에서 운송업체를 하나 이상 활성화하세요.
쇼핑몰이 유로나 달러로 판매함:Frenet은 BRL로 응답합니다. BRL exchange rate(1 BRL이 기본 통화로 얼마인지)를 입력하세요.
Frenet 가격 위에 세금이 붙음:Frenet 가격은 운송업체의 최종 가격입니다. Tax class를 No tax로 설정하세요.
변경 후 요금이 오래된 것처럼 보임:확장 기능 페이지에서 Save를 클릭하세요. 이렇게 하면 캐시된 Frenet 견적이 지워집니다.
페이지에 "Warning: You do not have permission to modify VibeFox Frenet!"라고 표시됨:관리자 사용자 그룹이 설정을 보기만 할 수 있는 상태일 수 있습니다. System > Users > User Groups에서 해당 그룹에 extension/shipping/vfd_frenet(OpenCart 3) 또는 extension/vfd_frenet/shipping/vfd_frenet(OpenCart 4)에 대한 수정 권한을 부여하세요.
개발자용:Frenet 견적 주소는 설정 vfd_frn_api_url(테스트용)로 바꿀 수 있습니다. 이 설정은 설정 페이지에 입력란이 없습니다.
제거
Extensions > Extensions로 이동하여 유형 Shipping을 선택하고, VibeFox Frenet 옆의 Uninstall(빨간색 − 버튼)을 클릭하세요. 이 확장 기능의 라이선스 키와 라이선스 상태는 항상 삭제됩니다. OpenCart는 항상 Enable Frenet, Sort order, Tax class, Geo zone을 초기화합니다. 캐시된 견적은 항상 삭제됩니다. 이 확장 기능의 OpenCart 이벤트도 제거됩니다(OpenCart 4에서는 새 주문의 Frenet 데이터를 저장하는 이벤트도 함께 제거됩니다). 그래서 주문 페이지에 Frenet 블록이 더 이상 표시되지 않습니다. 주문과 함께 저장된 Frenet 데이터는 유지되며, 다시 설치하면 다시 표시됩니다. Remove data on uninstall이 켜져 있으면 Frenet 설정과 디버그 로그도 삭제됩니다. 꺼져 있으면 다른 설정은 유지되며, 확장 기능을 다시 설치할 때 다시 사용됩니다. 기존 주문은 배송 방법과 비용을 유지합니다.
OpenCart 4에서 확장 기능의 파일도 함께 삭제하려면, 제거 후 Extensions > Installer로 이동하여 설치된 확장 기능 목록에서 VibeFox Frenet 옆의 Uninstall(주황색 − 버튼)을 클릭한 다음, 업로드한 패키지를 삭제하려면 Delete(빨간 휴지통 버튼)를 클릭하세요.
Frenet은 각 소유자의 상표입니다. 이 확장 기능은 Frenet과 제휴하거나 Frenet의 승인을 받은 것이 아닙니다.
