VibeFox Melhor Envio for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0~9.x.
PHP: 8.0 이상. 모듈은 이전 PHP 버전에는 설치되지 않습니다.
Melhor Envio 계정(실시간 견적에만 필요): 실시간 견적에는 액세스 토큰이 필요합니다. Melhor Envio 계정에서 토큰 페이지(melhorenvio.com.br/painel/gerenciar/tokens)를 열고 “shipping-calculate” 권한으로 토큰을 생성하십시오. 테스트를 하려면 Melhor Envio 샌드박스(sandbox.melhorenvio.com.br/painel/gerenciar/tokens)에서 토큰을 생성하십시오. 운영용 토큰과 샌드박스 토큰은 서로 다릅니다. “연결” 버튼은 없습니다. 토큰을 모듈 설정에 붙여넣으십시오. 토큰이 없으면 운송사는 대체 요금을 사용합니다.
VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭하십시오. 모듈 ZIP 파일을 선택하십시오.
2. 업로드가 끝나면 Configure를 클릭하십시오. 나중에 모듈 목록에서 VibeFox Melhor Envio를 찾아 Configure를 클릭해도 됩니다.
3. Configure 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 붙여넣고 Activate를 클릭하십시오(라이선스 키 참조).
4. 액세스 토큰, 연락처 이메일, 출발지 CEP를 붙여넣으십시오. 쇼핑몰의 기본 통화가 BRL이 아니라면 BRL exchange rate를 설정하십시오. 필요하면 대체 요금표(예: 브라질용)나 대체 배송비를 입력하십시오. Save를 클릭하십시오.
설치 시 모듈은 배송 기간 문구 Delivery by the carriers of your Melhor Envio account가 적힌 Melhor Envio 운송사를 만듭니다. 운송사는 모든 구역과 모든 고객 그룹에 할당됩니다. 구역, 고객 그룹, 배송 기간, 로고, 크기 제한은 Shipping > Carriers에서 변경할 수 있습니다. 그곳에서는 요금을 설정하지 마십시오. 요금은 항상 모듈에서 가져옵니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Melhor Envio > Configure. 설정은 운송사의 모든 구역에 적용됩니다. 각 섹션에는 전체 페이지를 저장하는 자체 Save 버튼이 있습니다. 저장할 때마다 캐시된 Melhor Envio 견적과 마지막 API 오류도 지워집니다.
페이지 상단의 경고는 설정이 불완전함을 알려줍니다: 출발지 CEP가 비어 있거나 8자리가 아님, 연락처 이메일 누락, BRL 환율 누락, 날짜가 표시된 마지막 Melhor Envio API 오류, 토큰 없음, 대체 요금 없음(이 경우 운송사는 절대 표시되지 않습니다), 또는 모듈이 인식하지 못하는 쇼핑몰 무게·치수 단위(이 경우 kg 또는 cm로 읽힙니다). 숫자 입력란에 0 이상의 숫자가 아닌 값이 있거나, Min weight가 Max weight보다 크거나, Default product size가 길이 x 너비 x 높이 형식이 아니면 페이지에 오류가 표시되고 아무것도 저장되지 않습니다.
General
Enable Melhor Envio shipping: 운송사를 켜거나 끕니다. Shipping > Carriers의 운송사 상태와 같은 스위치입니다.
Name: 체크아웃에서 고객에게 표시되는 운송사 이름입니다. 기본값: Melhor Envio. 필수 항목이며 최대 64자입니다.
Tax: 운송사의 세금 규칙 또는 No tax입니다. Melhor Envio 요금은 운송사의 최종 요금입니다. PrestaShop이 이 요금에 세금을 더하지 않아야 한다면 No tax를 선택하십시오.
Melhor Envio API
Access token: 아래에서 선택한 환경의 토큰입니다. Bearer 토큰으로 Melhor Envio에 전송됩니다. 저장 후 이 입력란은 비어 있고 A token is saved — leave empty to keep it.를 표시합니다. 토큰을 바꾸려는 경우에만 새 토큰을 입력하십시오. 저장된 토큰을 삭제하려면 Remove the saved token을 체크한 뒤 저장하십시오. 토큰은 로그에 절대 기록되지 않습니다.
Sandbox: 테스트를 위해 Melhor Envio 샌드박스(sandbox.melhorenvio.com.br)를 사용합니다. 샌드박스 토큰과 함께 사용하십시오. 기본값: 끔.
Contact e-mail: 기술 담당 연락처 이메일입니다. 모든 요청의 User-Agent 헤더에 담겨 Melhor Envio로 전송됩니다. Melhor Envio는 모든 연동에 이 항목을 요구합니다. 잘못된 주소는 저장되지 않으며 안내 메시지가 표시됩니다.
Origin CEP: 소포를 발송하는 출발지 CEP(8자리)입니다. 예: 01310-100. 00000-000 형식으로 저장됩니다. 올바른 출발지 CEP가 없으면 견적을 요청하지 않습니다.
Services: 견적을 받을 Melhor Envio 서비스 ID를 쉼표로 구분하여 입력합니다(선택 사항). 예: 1 = Correios PAC, 2 = Correios SEDEX, 17 = Correios Mini Envios, 3 = Jadlog .Package, 4 = Jadlog .Com. 비워 두면 계정의 모든 서비스에 대해 견적을 받습니다.
Quotes at checkout: 견적을 표시하는 방식입니다.
Delivery time: 체크아웃에 Melhor Envio의 배송 예상 기간을 표시합니다. 예: “3-5 business days”. 기본값: 켬.
Declared value: 견적에 상품 가액(보험)을 신고합니다. 끄면 신고 가액 없이 견적을 냅니다. 요금은 더 저렴하지만 소포는 보험이 적용되지 않습니다. 기본값: 켬.
BRL exchange rate: Melhor Envio는 브라질 헤알(BRL)로 견적을 냅니다. 쇼핑몰의 기본 통화가 BRL이 아닐 때만 필요합니다. 1 BRL의 기본 통화 가격을 입력하십시오. 예: 0.17. 설정하지 않으면 실시간 견적은 사용되지 않습니다. 값은 0보다 커야 합니다. 신고 가액도 같은 환율로 BRL로 환산됩니다. 기본 통화가 BRL이면 이 입력란에 Store currency is BRL이 표시됩니다.
Default product weight: 무게가 없는 상품에 사용하는 무게(kg)입니다. 견적과 무게 제한 모두에 사용됩니다. 0보다 커야 합니다. 기본값: 0.3.
Default product size: 치수가 없는 상품에 사용하는 길이 x 너비 x 높이(cm)입니다. 기본값: 16x11x5.
대체 요금(쇼핑몰의 기본 통화 기준)
대체 요금은 토큰이 없거나, 목적지 CEP가 없거나, API가 견적을 주지 않을 때(오류, 시간 초과, 서비스 지역 아님) 사용됩니다.
Fallback price table: 국가와 장바구니 무게별 요금입니다. Add country를 클릭하면 행이 추가되고, 휴지통 아이콘을 클릭하면 행이 삭제됩니다. 자체 행이 없는 모든 국가에는 국가로 * Default를 선택하십시오. 각 행에는 Price와 무게 열이 있습니다: XS는 1 kg까지, S는 1-2 kg, M은 2-3 kg, L은 3-5 kg, XL은 5 kg 초과입니다. 비어 있거나 0인 열은 Price를 사용합니다. “9.99”와 “9,99” 모두 허용됩니다. 숫자가 아닌 값은 저장 후 알려지며 무시됩니다.
Fallback cost: 표에도 요금이 없을 때 사용됩니다. 이 경우 운송사를 숨기려면 비워 두십시오.
Fallback calculation: Per order는 대체 요금을 한 번만 청구합니다. Per item (each item priced by its own weight x quantity)은 각 상품의 무게(무게가 없으면 기본 무게)에 맞는 대체 요금을 찾아 수량을 곱합니다. 상품 하나라도 요금이 없으면 운송사는 숨겨집니다. 이는 대체 요금에만 적용됩니다. Melhor Envio 견적에는 이미 모든 상품이 포함되어 있습니다.
이용 가능 조건
Min weight: 장바구니가 이보다 가벼우면 운송사를 숨깁니다(kg 단위). 0은 제한 없음을 뜻합니다.
Max weight: 장바구니가 이보다 무거우면 운송사를 숨깁니다(kg 단위). 기본값: 30. 0은 제한 없음을 뜻합니다. 빈 칸은 운송사의 구역에서는 30 kg을, 그 밖에 있는 Ignore shipping zones 국가에 대해서만 제한 없음을 뜻합니다.
Minimum subtotal: 장바구니 소계(배송이 필요한 상품, 할인 후, 세금 전)가 이 금액 이상일 때만 운송사를 표시합니다. 항상 표시하려면 비워 두십시오.
Free shipping from: 이 금액 이상의 장바구니 소계에서 배송비가 무료가 됩니다. 서비스별 옵션을 사용하면 가장 저렴한 서비스만 무료가 됩니다. 더 빠른 서비스는 원래 요금을 유지합니다. 비워 두면 비활성화됩니다.
Ignore shipping zones: 운송사가 구역에 할당되지 않았더라도 아래 국가에서 운송사를 제공합니다. 이 옵션이 켜져 있는 동안 운송사는 비활성 구역과 나중에 만든 구역을 포함한 모든 구역에 연결됩니다. 끄면 운송사는 자체 구역을 되돌려 받습니다.
Countries: 이 모드의 배송 대상 국가입니다. 모든 국가를 대상으로 하려면 비워 두십시오. 이 입력란은 Ignore shipping zones가 켜져 있을 때만 사용됩니다.
고급
Debug log: API 요청과 요금 계산을 모듈 폴더의 logs/vfd_menv_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 이 옵션이 꺼져 있어도 오류는 항상 기록됩니다. 토큰은 절대 기록되지 않으며, 고객 CEP는 처음 5자리로 줄여서 기록됩니다.
Log: 디버그 로그의 크기와 최근 항목을 표시합니다. Clear log를 클릭하면 로그가 비워집니다.
Remove data on uninstall: 켜져 있으면 모듈을 제거할 때 모든 모듈 설정, 운송사, 로그가 삭제됩니다. 꺼져 있으면 다시 설치할 수 있도록 모든 것이 보존됩니다. 견적 캐시는 항상 삭제됩니다. 주문과 함께 저장된 서비스는 주문 이력이므로 보존됩니다.
체크아웃에서의 작동 방식
배송 단계에서 PrestaShop은 모듈에 Melhor Envio 요금을 요청합니다. 배송이 필요한 상품만 계산에 포함됩니다. 가상 상품은 무게를 더하지 않으며 소계에도 포함되지 않습니다. 모듈은 먼저 조건을 확인합니다: Ignore shipping zones 국가, 장바구니 무게, 최소 소계.
8자리 CEP가 있는 브라질 배송지의 경우, 모듈은 출발지 CEP와 목적지 CEP, 그리고 배송 가능한 각 상품의 무게, 크기, 수량, 신고 가액을 Melhor Envio에 보냅니다. 서비스 목록을 설정했다면 그 목록도 함께 보냅니다. 견적은 쇼핑몰의 기본 통화로 환산되고 요금순으로 정렬된 뒤, 고객의 장바구니 통화로 표시됩니다. 무료 배송이 적용되면 가장 저렴한 서비스의 요금은 0입니다.
One option - the cheapest service를 사용하면 운송사는 가장 저렴한 서비스의 요금을 표시하고, Delivery time이 켜져 있으면 운송사 아래에 Delivery estimate: 줄을 표시합니다. One option per service를 사용하면 고객은 운송사 아래에서 Choose a delivery service:를 보게 되며, 서비스마다 라디오 버튼, 요금, 배송 예상 기간이 표시됩니다. 선택은 즉시 저장되고, 운송사 요금과 장바구니 요약이 업데이트됩니다. 해당 주소에서 더 이상 제공되지 않는 서비스라면 고객에게 This service is not available for your address any more. Please choose another one.가 표시되고 이전 선택이 되돌아옵니다.
각 견적은 소포, CEP, 토큰, 환경별로 1시간 캐시되므로 같은 장바구니가 새 요청을 보내지 않습니다. 실패한 호출은 5분 동안 기억되므로 API 장애가 있어도 체크아웃 새로고침마다 느려지지 않습니다. API 시간 초과는 12초입니다.
토큰이 없거나, 주소가 브라질 밖에 있거나, 아직 올바른 CEP가 없거나, BRL 환율이 없거나, Melhor Envio가 오류를 반환하거나 해당 경로에 서비스가 없으면 대체 요금이 사용됩니다: 해당 국가의 행(또는 * 행), 없으면 대체 배송비입니다. 무료 배송이 적용되면 요금이 없어도 운송사는 무료로 표시됩니다. 요금이 전혀 없으면 운송사는 숨겨집니다. 고객은 API 오류를 절대 보지 않습니다.
주문이 있는 운송사를 Shipping > Carriers에서 편집하면 PrestaShop은 이를 운송사의 새 버전으로 저장합니다. 모듈은 새 버전을 자동으로 따릅니다.
모듈은 요금만 계산합니다. 라벨을 구매하거나 생성하지 않으며, Melhor Envio 장바구니에 발송 건을 추가하지 않고, 소포를 추적하거나, 집하를 예약하거나, 송장(NF-e) 데이터를 보내지 않습니다. Jadlog, Azul, LATAM 지점(접수처) 선택이나 “직접 전달”, “수령 증명” 부가 서비스는 제공하지 않습니다. 발송은 Melhor Envio 패널에서 관리하십시오. Melhor Envio는 브라질 내에서만 배송합니다. 다른 국가는 대체 요금만 받습니다.
주문
실시간 견적으로 주문이 이루어지면 모듈은 Melhor Envio 서비스와 배송 예상 기간을 주문과 함께 저장합니다. 백오피스의 주문 페이지에는 Melhor Envio 블록이 표시되며, Melhor Envio service(서비스 ID 포함)와 Delivery estimate가 나타나므로 Melhor Envio에서 어떤 서비스를 구매해야 하는지 알 수 있습니다. 고객은 계정의 주문 페이지에서 같은 정보를 볼 수 있습니다. 주문 확인 이메일에는 운송사 이름 뒤에 추가됩니다. 대체 요금으로 주문된 경우에는 서비스 정보가 없습니다. 기존 주문에는 영향을 주지 않습니다.
라이선스 키
이 모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox Melhor Envio는 Modules > Module Manager > VibeFox Melhor Envio > Configure의 첫 번째 블록이며, 설정 위에 있습니다. 키를 License key에 붙여넣고 Activate를 클릭하십시오. 그 후 블록에는 마스킹된 키, 상태(예: 라이선스가 활성 상태인 날짜와 도메인), 그리고 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key 버튼이 표시됩니다. 그 아래에는 Product: presta-shipping-melhor-envio 줄과 vibefox.net 계정을 여는 Manage licenses and domains in your account 링크가 있습니다. 모듈에 대한 Configure 권한이 있는 직원만 키를 변경할 수 있습니다. 블록의 텍스트는 백오피스 언어를 따릅니다(영어와 러시아어 포함).
키가 승인되지 않으면 블록에 그 이유가 표시됩니다. 예: Key not found, This key belongs to another product, Domain limit reached, 또는 날짜와 함께 License expired on. 쇼핑몰 주소를 변경한 후, 또는 계정에서 도메인 슬롯을 비운 후에는 Check now를 클릭하십시오. 라이선스 서버에 연결할 수 없으면 모듈은 마지막으로 확인된 상태로 계속 작동합니다.
키 하나는 도메인 하나에서 작동합니다. 기본 쇼핑몰의 도메인이며, 멀티스토어 설정에서도 마찬가지입니다. 쇼핑몰에서 키를 제거해도 도메인 슬롯은 해제되지 않습니다. vibefox.net 계정에서 슬롯을 해제하십시오.
활성 키가 없으면 Melhor Envio 운송사는 체크아웃에서 고객에게 표시되지 않으며 요금도 계산되지 않습니다. PrestaShop 스토어프론트는 백오피스에 로그인한 사실을 알지 못하므로 운송사는 본인에게도 숨겨집니다. 키를 구입하기 전에 모듈을 설정할 수는 있지만 체크아웃에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문에는 영향을 주지 않습니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태는 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 재설정하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
체크아웃에 Melhor Envio가 나타나지 않음: 라이선스가 활성 상태이고 Enable Melhor Envio shipping이 켜져 있는지 확인하십시오. Shipping > Carriers에서 운송사가 고객 국가의 구역과 고객 그룹을 포함하는지 확인하거나, Ignore shipping zones를 켜고 Countries를 확인하십시오. 모듈 페이지 상단의 경고, 무게 제한, Minimum subtotal을 확인하십시오. 토큰이나 견적이 없으면 운송사에는 대체 요금이 필요합니다: Fallback price table의 행이나 Fallback cost. 상품 페이지에서 특정 운송사로 제한되어 있을 수도 있습니다.
대체 요금만 표시됨: Debug log를 켜고 체크아웃을 새로고침한 다음, 모듈 페이지의 Log 항목을 확인하십시오. 흔한 원인: 토큰 없음, 출발지 CEP가 8자리가 아님, 기본 통화가 BRL이 아닌데 BRL exchange rate가 없음, 아직 목적지 CEP가 없음, 또는 어떤 서비스도 해당 경로를 포함하지 않음.
로그나 경고에 HTTP 401 또는 403: Melhor Envio가 액세스 토큰을 거부했습니다. 토큰이 잘못되었거나, 만료되었거나, 취소되었거나, 다른 환경의 토큰입니다. 새 토큰을 생성하고 Sandbox 설정이 토큰과 일치하는지 확인하십시오.
고객에게 “The service could not be saved. Please try again.”이 표시됨: 네트워크 오류 등으로 선택 내용이 쇼핑몰에 전달되지 않았습니다. 고객은 서비스를 다시 선택할 수 있습니다. 고객이 Continue를 클릭할 때 선택된 서비스도 저장됩니다.
Melhor Envio 요금에 세금이 추가됨: Tax를 No tax로 설정하십시오.
변경 후 견적이 오래된 것처럼 보임: 모듈 페이지에서 Save를 클릭하십시오. 캐시된 견적이 지워집니다.
페이지에 Melhor Envio 운송사를 찾을 수 없다고 표시됨: Shipping > Carriers에서 운송사가 삭제되었습니다. Modules > Module Manager에서 모듈을 초기화하여 다시 만드십시오.
제거
Modules > Module Manager로 이동하여 VibeFox Melhor Envio 옆의 메뉴를 열고 Uninstall을 선택하십시오. 라이선스 키와 라이선스 상태는 항상 삭제됩니다. 견적 캐시는 항상 삭제됩니다. Remove data on uninstall이 켜져 있으면 운송사가 삭제되고(주문은 이력을 유지함), 운송사 자체 구역이 복원되며, 설정, 진행 중인 장바구니의 서비스 선택, 로그가 삭제됩니다. 꺼져 있으면 운송사는 비활성화만 되고 모든 설정이 유지됩니다. 모듈을 다시 설치하면 운송사는 이전의 상태를 되찾습니다. 주문과 함께 저장된 서비스는 항상 보존됩니다.
Melhor Envio는 각 소유자의 상표입니다. 이 모듈은 Melhor Envio와 제휴하지 않으며 Melhor Envio의 승인을 받지 않았습니다.
