VibeFox Servientrega for PrestaShop — 도움말
요구 사항
PrestaShop: 8.0~9.x
PHP: 8.0 이상. 모듈은 이전 PHP 버전에는 설치되지 않습니다.
Servientrega 계정(실시간 요금에만 필요): 실시간 요금은 Servientrega Cotizador Corporativo(법인 견적 API)를 사용합니다. 이 API에 접근할 수 있는 Servientrega 법인(신용) 계정이 필요합니다. 사용자 이름, 비밀번호, 청구 코드(código de facturación, 보통 SER로 시작)의 세 가지 값이 필요합니다. 이는 SISCLINET 자격 증명이며 Servientrega 영업 담당자가 발급합니다. 고정 요금만 사용한다면 Servientrega 계정은 필요하지 않습니다.
서버 접근(실시간 요금에만 필요): 서버가 web.servientrega.com에 HTTP로 포트 8058(견적 API)과 포트 8081(비밀번호 암호화 웹 서비스)을 통해 접속할 수 있어야 합니다.
VibeFox 라이선스 키: vibefox.net에서 구입합니다. 키 하나는 도메인 하나에서 작동합니다.
설치
1. 백오피스에서 Modules > Module Manager로 이동하여 Upload a module을 클릭하세요. 모듈의 ZIP 파일을 선택하세요.
2. 업로드가 끝나면 Configure를 클릭하거나, 나중에 모듈 목록에서 VibeFox Servientrega를 찾아 Configure를 클릭하세요.
3. Configure 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 입력하고 Activate를 클릭하세요(라이선스 키 참조).
4. 실시간 요금을 사용하려면 사용자 이름, 비밀번호, 청구 코드를 입력하고, Servientrega 상품을 선택하고, 출발지 DANE 코드를 입력하세요. 쇼핑몰 통화가 COP가 아니라면 통화 환율도 입력하세요. 쇼핑몰에 콜롬비아 도가 아직 없다면 Add Colombian departments를 클릭하세요(설정 항목 참조).
5. 필요하면 국가 및 무게별 고정 요금과 대체 비용을 추가한 뒤 Save를 클릭하세요.
설치 시 모듈은 배송 기간 텍스트 Servientrega courier delivery가 적용된 Servientrega 운송업체를 만듭니다. 운송업체는 모든 지역과 모든 고객 그룹에 할당됩니다. 지역, 고객 그룹, 배송 기간, 로고, 크기 제한은 Shipping > Carriers에서 변경할 수 있습니다. 그곳에서 가격을 설정하지 마세요. 가격은 항상 모듈에서 나옵니다.
설정
모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox Servientrega > Configure. 설정은 모든 지역에 적용됩니다. 각 섹션에는 전체 페이지를 저장하는 자체 Save 버튼이 있습니다. 저장할 때마다 캐시된 Servientrega 견적과 로그인 토큰이 지워집니다.
저장된 설정으로 실시간 요금을 사용할 수 없으면 양식 위의 경고가 이유를 알려 줍니다. 사용자 이름, 비밀번호 또는 청구 코드 누락, 환율 누락, 출발지 DANE 코드 누락 등이 해당합니다. 쇼핑몰의 무게 또는 치수 단위(International > Localization, Local units)를 모듈이 인식하지 못하면 역시 경고가 나타나며, 이 경우 무게는 kg, 치수는 cm로 읽습니다. 저장할 때 숫자가 아닌 값, 음수, 환율 0, 최소 무게가 최대 무게보다 큰 경우, 표의 잘못된 가격, 64자를 넘는 방법 제목은 오류와 함께 거부되며 아무것도 저장되지 않습니다.
일반
Enable Servientrega: 모든 지역에서 운송업체를 한 번에 켜거나 끕니다. Shipping > Carriers의 운송업체 상태와 같은 스위치입니다.
Method title: 장바구니와 결제 과정에서 고객에게 보이는 운송업체 이름입니다. 기본값: Servientrega. 필수 항목이며 최대 64자입니다.
Servientrega API(콜롬비아 실시간 요금)(선택 사항. 자격 증명이 없으면 고정 요금만 사용됩니다)
User (login): Servientrega / SISCLINET 사용자 이름입니다. 이 칸을 비우면 저장된 비밀번호도 삭제됩니다.
Password: 입력한 그대로의 Servientrega / SISCLINET 비밀번호입니다. 로그인 전에 Servientrega 웹 서비스에서 암호화됩니다. 저장한 뒤에는 칸이 비어 있고 Saved — leave empty to keep it이 표시됩니다. 변경하려는 경우에만 새 값을 입력하세요.
Billing code: Servientrega 계정의 código de facturación으로, SISCLINET에 표시됩니다. 보통 SER로 시작합니다.
실시간 요금에는 세 칸이 모두 필요합니다. 실시간 요금은 콜롬비아 내 배송지에 대해서만 요청됩니다. 다른 국가는 고정 요금을 사용합니다.
Servientrega product: Servientrega 계약 중 견적을 낼 서비스입니다.
청구 무게는 실중량과 부피중량 중 큰 값입니다.
Currency conversion rate: Servientrega는 COP로 견적을 냅니다. 쇼핑몰 기본 통화가 COP가 아니라면 쇼핑몰 통화로 1 COP의 값을 입력하세요. 예: 0.00023. 신고하는 소포 가치도 같은 방식으로 COP로 환산됩니다. 쇼핑몰 통화가 COP라면 비워 두세요. 다른 통화를 사용하는데 이 칸이 비어 있으면 실시간 요금은 사용되지 않고 고정 요금이 적용됩니다. 모듈은 환율을 가져오지 않습니다. 소수점 구분자로 점과 쉼표를 모두 쓸 수 있습니다.
Colombian departments: 도(departamento)는 이름이 같은 시·군을 구별하는 데 도움이 됩니다. PrestaShop에는 기본적으로 콜롬비아의 도가 없으며, 도가 없으면 콜롬비아에서 유일한 도시 이름만 인식됩니다. Add Colombian departments를 클릭하면 33개 도가 콜롬비아의 주(state)로 추가되며(ISO 코드 ANT, DC…), 콜롬비아에 대해 Contains states를 켜고 콜롬비아 주소 양식에 도 필드를 추가합니다. 이미 있는 도는 중복 추가되지 않습니다. 모든 설정이 끝나면 이 칸에 콜롬비아 주소가 가진 도의 개수가 표시됩니다.
Ship from(실시간 요금에 사용)
Origin city (DANE code): 발송하는 시·군의 8자리 DANE 코드입니다. 예: 11001000 Bogotá, 05001000 Medellín, 76001000 Cali, 08001000 Barranquilla. 5자리 시·군 코드도 허용됩니다. 이 칸이 비어 있고 Shop Parameters > Contact > Stores의 쇼핑몰 주소가 콜롬비아에 있으면 쇼핑몰 주소의 시·군이 사용됩니다.
고정 요금(실시간 요금이 없을 때 사용: 자격 증명 없음, 콜롬비아 외 배송지, 알 수 없는 시·군, 환율 누락, API 오류 또는 해당 경로에 대한 서비스 없음)
Price per country: 쇼핑몰 기본 통화로(세금 제외) 적은 국가와 요금 표입니다. Add country를 클릭하면 행이 추가되고, 휴지통 아이콘을 클릭하면 행이 삭제됩니다. Price는 모든 무게에 적용됩니다. XS ≤1 kg, S 1–2 kg, M 2–3 kg, L 3–5 kg, XL >5 kg 무게 열은 0보다 크면 해당 무게에서 Price 값을 대신합니다. * Default 행은 자체 행이 없는 모든 국가에 적용됩니다. 가격이 전혀 없는 행은 저장되지 않습니다.
Fallback cost: 실시간 요금이 없고 표의 어떤 행도 맞지 않을 때 사용됩니다. 이 경우 운송업체를 숨기려면 비워 두세요.
Fixed price applies: 고정 요금이 청구되는 방식입니다.
Servientrega 실시간 요금은 항상 발송 건당 계산됩니다.
조건
Minimum weight: 장바구니가 이보다 가벼우면 운송업체를 숨깁니다(kg 단위). 0은 제한 없음을 뜻합니다.
Maximum weight: 장바구니가 이보다 무거우면 운송업체를 숨깁니다(kg 단위). 기본값: 50. 0은 제한 없음을 뜻합니다.
Minimum order amount: 장바구니 소계(할인 후, 세금 전)가 이 금액에 도달해야만 운송업체를 표시합니다. 항상 표시하려면 비워 두세요.
Free shipping from: 장바구니 소계(할인 후, 세금 전)가 이 금액에 도달하면 배송비가 무료이며 Servientrega에 요청이 전송되지 않습니다. 운송업체가 제공되는 모든 배송지에 적용되며, 가격 표에 행이 없는 국가도 포함됩니다. 무료 배송을 제공하지 않으려면 비워 두세요.
Tax: 운송업체의 세금 규칙 또는 No tax입니다. Servientrega 견적(ValorTotal)에는 이미 운송업체 요금이 포함되어 있습니다. 그 위에 세금을 더하고 싶지 않다면 No tax를 선택하세요.
배송 지역 없이 제공
보통 운송업체는 Shipping > Carriers에서 할당된 지역에 제공됩니다.
Ignore shipping zones: 운송업체가 해당 국가의 지역에 할당되어 있지 않더라도 아래 국가에 대해 Servientrega를 제공합니다. 이 경우 운송업체는 나중에 만드는 지역을 포함한 모든 지역에 할당됩니다. 이 옵션을 끄면 운송업체는 이전 지역을 되찾습니다.
Countries: 이 모드의 배송 대상 국가입니다. 쇼핑몰의 활성 국가를 모두 사용하려면 비워 두세요. 이 칸은 Ignore shipping zones가 켜져 있을 때만 사용됩니다.
고급
Debug log: 요금 계산과 API 오류를 모듈 폴더의 logs/vfd_svtg_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 자격 증명, 토큰, 고객 주소는 기록되지 않습니다. 로그가 꺼져 있으면 API 오류를 포함해 아무것도 기록되지 않습니다. 작업이 끝나면 로그를 끄세요.
Log: 디버그 로그의 크기와 최근 항목을 보여 줍니다. Clear log를 클릭하면 로그를 비웁니다.
Remove data on uninstall: 켜져 있으면 모듈을 제거할 때 모든 Servientrega 설정, 운송업체, 캐시된 견적, 로그가 삭제됩니다. 지난 주문은 운송업체를 유지합니다. 꺼져 있으면 다시 설치할 수 있도록 모든 것이 보존됩니다.
결제 시 작동 방식
배송 단계에서 PrestaShop은 모듈에 Servientrega 가격을 요청합니다. 실물 상품만 계산에 포함됩니다. 가상 상품은 무게를 더하지 않으며 주문 금액에도 포함되지 않습니다. 모듈은 먼저 조건을 확인합니다. 배송 국가(Ignore shipping zones 포함), 장바구니 무게, 최소 주문 금액입니다. 무료 배송이 적용되면 가격은 0이 되고 Servientrega에 요청이 전송되지 않습니다. 그다음 가격을 찾습니다. Servientrega 실시간 요금, 가격 표, 대체 비용 순입니다. 가격이 없으면 해당 장바구니에서 운송업체가 숨겨집니다.
자격 증명이 설정된 콜롬비아 배송지의 경우, 모듈은 고객 시·군의 DANE 코드를 찾습니다. 우편번호나 시(city) 칸에 입력된 DANE 코드를 사용하거나, 도와 시를 내장된 약 1,130개 시·군 표와 대조합니다. 악센트 기호와 "D.C."는 무시됩니다. 한 도에만 있는 도시 이름은 도가 없어도 찾아집니다.
이후 모듈은 주문당 한 개의 소포를 Servientrega에 보냅니다. 총 무게는 쇼핑몰 단위에서 kg으로 환산하고, 가장 큰 상품의 길이와 너비, 모든 상품의 총 부피를 바탕으로 한 상자를 cm로 환산합니다. 치수가 없는 상품은 10 × 10 × 10 cm로 계산됩니다. 신고 금액은 장바구니 소계를 COP로 환산한 값이며, 최소 6,000 COP입니다. Servientrega는 COP로 총액을 돌려줍니다. 모듈은 이를 쇼핑몰 기본 통화로 환산하며, 고객은 장바구니 통화로 요금을 봅니다.
로그인 토큰은 만료될 때까지 보관되며 최대 4일입니다. 거부된 토큰은 자동으로 한 번 갱신됩니다. 각 견적은 경로와 소포별로 1시간 동안 캐시되므로, 같은 장바구니가 새 요청을 일으키지 않습니다. 실패한 요청(암호화, 로그인, 견적)은 10분 동안 캐시되므로, 결제 페이지를 새로 고칠 때마다 Servientrega를 기다리지 않습니다. 요청당 제한 시간은 10초입니다.
고객은 API 오류를 전혀 보지 못합니다. 디버그 로그가 켜져 있으면 이유가 로그에 기록됩니다.
주문이 있는 뒤에 Shipping > Carriers에서 운송업체를 편집하면, PrestaShop은 이를 운송업체의 새 버전으로 저장합니다. 모듈은 새 버전을 자동으로 따릅니다.
모듈은 요금만 계산합니다. 운송장(guías), 라벨, 스티커를 만들지 않고, 집화를 요청하지 않으며, 발송을 추적하거나 취소하지 않고, 고객이 Servientrega 지점(Centro de Soluciones)을 선택하게 하지도 않습니다. 운송장은 SISCLINET 또는 Servientrega 포털에서 만드세요. 착불 결제(logística de recaudo)는 견적에 포함되지 않습니다. 실시간 견적은 콜롬비아 국내 발송에만 적용됩니다. 다른 국가는 고정 요금을 사용합니다.
라이선스 키
모듈은 vibefox.net에서 받은 VibeFox 라이선스 키와 함께 작동합니다. License — VibeFox Servientrega 라이선스 블록은 Modules > Module Manager > VibeFox Servientrega > Configure에서 설정 위에 있는 첫 번째 블록입니다. License key에 키를 입력하고 Activate를 클릭하세요. 그러면 블록에 마스킹된 키, 상태(예: 라이선스 사용 기한과 도메인), 그리고 다음 버튼이 표시됩니다. Check now는 상태를 다시 확인하고, Change key는 다른 키를 입력하며, Remove key는 이 쇼핑몰에서 키를 제거합니다. 그 아래에는 Product: presta-shipping-servientrega 줄과, 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 계정에서 슬롯을 해제하세요.
활성 키가 없으면 결제 시 고객에게 Servientrega 운송업체가 표시되지 않으며, 요금을 요청하거나 계산하지 않습니다. PrestaShop 스토어프런트는 관리자 페이지에 로그인했는지 알지 못하므로, 운송업체는 사용자에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 결제에서 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 나타납니다. 기존 주문에는 영향이 없습니다.
라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 관리자 페이지에서 작업하는 동안 상태는 자동으로 다시 확인됩니다. 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.
문제 해결
결제 시 Servientrega가 나타나지 않습니다: 라이선스가 활성 상태인지, Enable Servientrega가 켜져 있는지 확인하세요. Shipping > Carriers에서 운송업체가 고객 국가의 지역과 고객 그룹을 포함하는지 확인하거나, Ignore shipping zones를 켜고 Countries를 확인하세요. 무게 제한과 Minimum order amount도 확인하세요. 실시간 요금이 없다면 해당 국가 또는 * Default 행에 가격이 있는지, 또는 Fallback cost가 설정되어 있는지 확인하세요. 상품 페이지에서 상품이 특정 운송업체로만 제한되어 있을 수도 있습니다.
실시간 요금이 나타나지 않습니다: Debug log를 켜고 결제 페이지를 새로 고친 뒤, 모듈 페이지의 Log 칸을 확인하세요. 흔한 이유는 다음과 같습니다. 환율 누락(쇼핑몰 통화가 COP가 아님), 출발지 DANE 코드 없음, 고객의 도 또는 시가 아직 입력되지 않았거나 알려진 시·군이 아님, 잘못된 자격 증명, 해당 경로에 대한 서비스 없음. 고정 요금을 설정해 두었다면 이런 경우에도 고정 요금이 적용됩니다.
로그인이 실패합니다: 사용자 이름, 비밀번호, 청구 코드를 Servientrega 영업 담당자와 함께 확인하세요. 로그인에 실패하면 모듈은 다음 시도 전까지 10분 기다립니다. 바로 다시 시도하려면 설정을 저장하세요.
고객의 시(city)를 인식하지 못합니다: Add Colombian departments를 클릭하여 고객이 도를 선택할 수 있게 하세요. 드문 철자의 경우 고객은 8자리 DANE 코드를 우편번호로 입력할 수 있습니다.
변경 후 요금이 오래된 것처럼 보입니다: 모듈 페이지에서 Save를 클릭하세요. 캐시된 Servientrega 견적과 토큰이 지워집니다.
페이지에 Servientrega 운송업체를 찾을 수 없다고 나옵니다: Shipping > Carriers에서 운송업체가 삭제되었습니다. Modules > Module Manager에서 모듈을 초기화하면 다시 만들어집니다.
개발자용: 훅 actionVfdSvtgDaneCode와 actionVfdSvtgQuoteRequest를 사용하면 배송지 DANE 코드와 견적 요청을 변경할 수 있습니다.
제거
Modules > Module Manager로 이동하여 VibeFox Servientrega 옆의 메뉴를 열고 Uninstall을 선택하세요. 라이선스 키와 라이선스 상태는 항상 삭제됩니다. 캐시된 견적, 토큰, 암호화된 비밀번호는 항상 삭제됩니다. Remove data on uninstall이 켜져 있으면 운송업체가 삭제되고(주문은 기록을 유지합니다) 설정과 로그도 삭제됩니다. 꺼져 있으면 운송업체는 비활성화만 되고 모든 설정이 유지됩니다. 모듈을 다시 설치하거나 Reset을 사용하면 운송업체는 이전 상태를 되찾습니다.
Servientrega는 해당 소유자의 상표입니다. 이 모듈은 Servientrega와 제휴하거나 Servientrega의 승인을 받은 것이 아닙니다.
