뒤로

VibeFox SF Express for PrestaShop — 도움말

요구 사항

PrestaShop: 8.0 ~ 9.x.

PHP: 8.0 이상. 모듈은 이전 PHP 버전에 설치되지 않습니다.

SF Express 계정(실시간 요금에만 필요): 실시간 요금은 SF Express FengQiao 오픈 플랫폼(open.sf-express.com)을 사용합니다. SF Express 월 정산 계정과 FengQiao 개발자 계정이 필요합니다. 해당 플랫폼에 가입하여 애플리케이션을 만들고, API "Delivery time standard and price query"(EXP_RECE_QUERY_DELIVERTM)를 추가한 뒤 고객 코드와 checkword를 복사하세요. 샌드박스와 운영 환경의 checkword는 다릅니다. 가격표만 사용한다면 SF Express 계정은 필요하지 않습니다.

중국 성(省)(실시간 요금에만 필요): 실시간 요금에는 배송지 주소의 성이 필요합니다. PrestaShop에는 기본적으로 중국의 성이 없습니다. 모듈이 이를 대신 추가할 수 있습니다(아래 Chinese provinces 참조).

VibeFox 라이선스 키: vibefox.net에서 구매합니다. 키 하나는 도메인 하나에서 작동합니다.

설치

1. 관리자 페이지에서 Modules > Module Manager로 이동하여 Upload a module을 클릭하세요. 모듈 ZIP 파일을 선택합니다.

2. 업로드가 끝나면 Configure를 클릭하세요. 나중에 하려면 모듈 목록에서 VibeFox SF Express를 찾아 Configure를 클릭하세요.

3. Configure 페이지 상단의 라이선스 블록에 있는 License key에 VibeFox 라이선스 키를 입력하고 Activate를 클릭하세요(라이선스 키 참조).

4. 가격표 및/또는 대체 배송비를 입력하고 Save를 클릭하세요.

5. 중국 본토 실시간 요금을 사용하려면 고객 코드와 checkword, 발송지 성과 시(또는 중국의 쇼핑몰 주소)를 입력하세요. 쇼핑몰 기본 통화가 CNY가 아니라면 통화 환율도 입력하세요. 페이지에서 요청하면 Add Chinese provinces를 클릭하세요. 먼저 Sandbox와 샌드박스 자격 증명으로 테스트하세요.

설치하면 모듈은 배송 시간 문구 Courier delivery를 가진 SF Express 운송업체를 만듭니다. 운송업체는 모든 배송 지역과 모든 고객 그룹에 할당됩니다. 배송 지역, 고객 그룹, 배송 시간, 로고, 크기 제한은 Shipping > Carriers에서 변경할 수 있습니다. 단, 그곳에서 가격을 설정하지 마세요. 가격은 항상 모듈에서 가져옵니다.

설정

모든 설정은 모듈 페이지에 있습니다: Modules > Module Manager > VibeFox SF Express > Configure. 설정은 운송업체의 모든 배송 지역에 적용됩니다. 각 섹션에는 자체 Save 버튼이 있으며, 이 버튼은 페이지 전체를 저장합니다. 저장할 때마다 캐시된 SF Express 요금도 지워집니다.

저장할 때 모듈은 숫자를 검사합니다. 숫자가 아닌 값, 음수 금액 또는 무게, 환율 0, Min weight가 Max weight보다 큰 경우, 또는 가격표의 잘못된 요금은 메시지와 함께 거부되며, 수정하기 전까지 아무것도 저장되지 않습니다. 설정 위의 경고는 실시간 요금 설정이 일부만 되어 있는지(누락된 설정이 목록으로 표시됨), 환율이 없는지, 중국 주소에 성 필드가 없는지, 또는 쇼핑몰의 무게 또는 치수 단위를 모듈이 인식하지 못하는지를 알려줍니다. 단위는 International > Localization(Local units)에서 설정합니다.

일반

Enable SF Express: 운송업체를 켜거나 끕니다. 이는 Shipping > Carriers의 운송업체 상태와 같은 스위치입니다.

Method title: 장바구니와 결제 시 표시되는 운송업체 이름입니다. 기본값: SF Express. 필수, 최대 64자.

Tax: 운송업체의 세금 규칙 또는 No tax입니다. 세금 규칙을 선택하면 쇼핑몰의 배송 세금이 요금에 더해집니다. SF Express 요금에 청구하려는 모든 항목이 이미 포함되어 있다면 No tax를 선택하세요.

SF Express FengQiao API(실시간 요금)(선택 사항, 중국 본토 배송지 주소용)

Customer code (partnerID): FengQiao 애플리케이션의 고객 코드(顾客编码)입니다. 이를 지우면 저장된 checkword도 함께 지워지므로 자격 증명을 삭제할 수 있습니다.

Checkword: 같은 환경의 checkword(校验码)입니다. 요청에 서명하는 데만 사용되며, 전송되거나 기록되지 않습니다. 저장한 후 이 필드는 비어 있고 Saved — leave empty to keep it.를 표시합니다. 변경하려는 경우에만 새 값을 입력하세요.

Sandbox: 샌드박스 자격 증명으로 테스트할 때 FengQiao 샌드박스(sfapi-sbox.sf-express.com)를 사용합니다. 샌드박스 요금은 실제 요금이 아닙니다. 실제 운영 쇼핑몰에서는 끄세요. 기본값: 꺼짐.

SF Express product: 어떤 SF Express 상품의 요금을 표시할지 선택합니다.

Cheapest product offered by SF Express: 기본값입니다. SF Express가 반환하는 가장 낮은 요금을 사용합니다.
SF Express Priority (顺丰特快, code 1): 이 상품의 요금만 사용합니다.
SF Standard Express (顺丰标快, code 2): 이 상품의 요금만 사용합니다.

Sender province: 소포를 발송하는 성입니다. 쇼핑몰이 중국에 있는 경우, 비워 두면 Shop Parameters > Contact > Stores에 있는 쇼핑몰 주소의 성을 사용합니다.

Sender city: 표준 중국어 도시 이름입니다(예: 深圳市). 쇼핑몰이 중국에 있는 경우, 비워 두면 쇼핑몰 도시를 사용합니다.

Currency conversion rate: SF Express 요금은 CNY(위안)로 표시됩니다. 쇼핑몰의 기본 통화가 CNY가 아니라면, CNY 1위안이 귀하의 통화로 몇 단위인지 입력하세요(1 CNY = ? 단위). 입력하지 않으면 실시간 요금은 사용되지 않습니다. 쇼핑몰 통화가 CNY라면 요금을 그대로 사용합니다. 소수점 구분 기호로 점과 쉼표 모두 허용됩니다.

Chinese provinces: 중국 주소에 성을 넣을 수 있는지 보여줍니다. 없다면 Add Chinese provinces를 클릭하세요. 이 버튼은 32개 성, 자치구, 직할시를 중국의 주(state)로 추가하고(GD, BJ 같은 ISO 코드, "Guangdong / 广东" 같은 이름), 중국에 대해 "Contains states"를 켜고, 중국 주소 양식에 주 필드를 추가합니다. 이미 있는 성은 다시 추가되지 않습니다. 이 클릭 없이는 아무것도 변경되지 않습니다.

가격표 및 대체 배송비(홍콩, 마카오, 대만 및 기타 국가에 사용됨. 실시간 요금이 설정되지 않았거나 SF Express가 요금을 주지 않을 때 적용됨. 요금은 쇼핑몰 기본 통화이며 세금 제외)

Country prices: 국가별 기본 요금이 있는 표입니다. Add country를 클릭하면 행이 추가되고, 휴지통 아이콘을 클릭하면 행이 제거됩니다. * All other countries 행은 자체 행이 없는 모든 국가에 적용됩니다. 0보다 큰 무게 구간 요금은 해당 구간의 소포에 대해 기본 요금을 대체합니다: XS ≤1 kg, S ≤2 kg, M ≤3 kg, L ≤5 kg, XL >5 kg. 기본 요금이 0이면 무료 배송을 뜻합니다. 기본 요금이 비어 있으면 이 국가에는 요금이 없으며 대체 배송비가 사용됩니다. "9.99"와 "9,99" 모두 허용됩니다. 요금이 하나도 없는 행은 저장되지 않습니다.

Fallback cost: SF Express와 가격표 모두 요금을 제공하지 않을 때 사용됩니다. 이 경우 운송업체를 숨기려면 비워 두세요.

Table / fallback price is: 가격표 및 대체 요금이 어떻게 청구되는지입니다.

Per order (tier by the total cart weight): 장바구니 전체 무게에 맞는 구간의 요금이 한 번 청구됩니다.
Per item (every item is priced by its own weight): 각 상품은 자체 무게 구간에 따라 요금이 정해지고, 수량을 곱합니다. 대체 배송비는 상품 개수만큼 곱해집니다.

SF Express 실시간 요금은 항상 주문 전체 기준입니다.

조건

Free shipping from: 무료 배송이 시작되는 장바구니 소계(할인 후, 세금 전)입니다. 무료 배송을 절대 제공하지 않으려면 비워 두세요. 무료 배송은 어떤 요금을 조회하기 전에 먼저 확인하므로, 이 금액 이상이면 운송업체가 이용 가능한 모든 목적지에 무료로 제공됩니다. 가격표 행이나 Fallback cost가 없는 국가라도 마찬가지입니다.

Minimum subtotal: 장바구니 소계(할인 후, 세금 전)가 이 금액에 도달했을 때만 운송업체를 표시합니다. 항상 표시하려면 비워 두세요.

Min weight: 장바구니의 최소 무게(kg)입니다. 상품 무게는 쇼핑몰의 무게 단위에서 변환됩니다. 0은 제한 없음을 뜻합니다.

Max weight: 장바구니의 최대 무게(kg)입니다. 기본값: 50. 0 또는 비어 있으면 제한 없음을 뜻합니다.

배송 지역 없이 이용 가능 여부

Ignore shipping zones: 어떤 배송 지역이 맞든 상관없이 아래 국가에 SF Express를 제공합니다. 저장하면 운송업체가 모든 배송 지역에 추가되고, 나중에 만든 배송 지역에도 추가됩니다. 이 옵션을 끄면 추가된 배송 지역이 다시 제거됩니다. 꺼져 있으면 운송업체는 자체 배송 지역에만 나타납니다.

Countries: 이 모드의 배송 대상 국가입니다. 비워 두면 활성화된 모든 국가를 허용합니다. 이 필드는 Ignore shipping zones가 켜져 있을 때만 사용됩니다.

고급

Debug log: 요금 계산을 모듈 폴더의 logs/vfd_sfex_debug.log.php에 기록합니다. 이 파일은 웹에서 열 수 없습니다. 이 옵션이 꺼져 있어도 API 오류는 항상 기록됩니다. checkword나 고객 주소는 기록되지 않습니다.

Log: 로그의 크기와 최근 항목을 보여줍니다. Clear log를 클릭하면 로그가 비워집니다.

Remove data on uninstall: 켜져 있으면 모듈을 제거할 때 설정, 운송업체, 캐시된 요금, 로그가 삭제됩니다. 꺼져 있으면 재설치를 위해 모든 항목이 유지됩니다.

결제 시 작동 방식

배송 단계에서 PrestaShop은 모듈에 SF Express 요금을 요청합니다. 실물 상품만 계산에 포함됩니다. 가상 상품은 무게를 더하지 않으며 소계에도 포함되지 않습니다. 모듈은 먼저 조건을 확인합니다: 허용된 국가(Ignore shipping zones 사용 시), 장바구니 무게, 최소 소계. 소계가 Free shipping from에 도달하면 요금은 0이 되고 SF Express로 요청이 전송되지 않습니다.

고객 코드와 checkword가 설정되어 있고 배송지가 중국 본토 주소인 경우, 모듈은 SF Express에 발송지 성과 시, 고객의 성과 시, 장바구니 무게, 장바구니 부피(세 가지 치수가 모두 있는 상품에서 계산)를 전송합니다. 요청은 checkword로 서명됩니다. SF Express는 CNY로 요금을 반환하며, 모듈은 선택된 요금을 쇼핑몰의 기본 통화로 환산합니다. 그 후 요금은 고객의 장바구니 통화로 표시됩니다.

SF Express는 표준 중국어 이름으로 주소를 인식합니다. 고객의 성은 주소의 주(state) 필드에서 가져옵니다. 도시는 중국어로 적어야 합니다(예: 广州市). 베이징, 상하이, 톈진, 충칭의 경우 도시가 자동으로 채워집니다. "Guangzhou"처럼 라틴 문자로 적은 도시는 가격표 요금을 받습니다.

각 요금은 1시간 동안 캐시되므로 같은 장바구니가 새 요청을 일으키지 않습니다. 실패한 요청은 10분 동안 캐시되므로, 결제 화면을 새로 고칠 때마다 SF Express를 기다리지 않습니다. HTTP 제한 시간은 10초입니다.

실시간 요금이 없으면 요금은 가격표에서, 그다음 Fallback cost에서 가져옵니다. 둘 다 적용되지 않으면 운송업체는 숨겨집니다. 고객은 오류를 보지 않습니다. 오류는 로그에 기록됩니다.

운송업체에 주문이 생긴 뒤 Shipping > Carriers에서 운송업체를 편집하면, PrestaShop은 이를 새 버전의 운송업체로 저장합니다. 모듈은 새 버전을 자동으로 따릅니다.

모듈은 요금만 계산합니다. 운송장이나 라벨을 만들지 않고, SF Express에 주문을 생성하지 않으며, 집화를 예약하지 않고, 배송을 취소하거나 추적하지 않습니다. 평소와 같이 SF Express 계정에서 배송을 생성하고 추적하세요. 고객은 SF 서비스 포인트나 무인 보관함을 선택할 수 없습니다. SF Express는 문 앞까지 배송하는 택배로 사용됩니다. 실시간 요금은 중국 본토 배송지 주소에만 존재합니다. 이 모듈은 FengQiao 문서와 모의 응답을 바탕으로 개발되었으므로, 실제 운영 전에 (먼저 샌드박스에서) SF Express 계정으로 요금을 확인하세요.

라이선스 키

이 모듈은 vibefox.net에서 받은 VibeFox 라이선스 키로 작동합니다. 라이선스 블록 License — VibeFox SF Express는 Modules > Module Manager > VibeFox SF Express > Configure의 첫 번째 블록이며, 설정 위에 있습니다. License key에 키를 붙여 넣고 Activate를 클릭하세요. 그 후 블록에는 마스킹된 키, 상태(예: 라이선스가 유효한 마지막 날짜와 도메인), 그리고 다음 버튼이 표시됩니다: 상태를 다시 확인하는 Check now, 다른 키를 입력하는 Change key, 이 쇼핑몰에서 키를 제거하는 Remove key. 그 아래에는 Product: presta-shipping-sf-express 줄과 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 계정에서 슬롯을 비우세요.

활성 키가 없으면 결제 시 고객에게 SF Express 운송업체가 표시되지 않으며 요금도 계산되지 않습니다. PrestaShop 스토어프론트는 백오피스에 로그인한 사실을 알지 못하므로, 운송업체는 관리자에게도 숨겨집니다. 키를 구매하기 전에 모듈을 설정할 수는 있지만, 결제 시 테스트할 수는 없습니다. Modules > Module Manager의 Alerts 탭에 알림이 표시됩니다. 기존 주문은 영향을 받지 않습니다.

라이선스가 만료되어도 모듈은 계속 작동하지만, 업데이트와 지원에는 갱신이 필요합니다. 백오피스에서 작업하는 동안 상태가 자동으로 다시 확인됩니다: 키를 입력한 후 처음 14일 동안은 하루에 한 번, 그 후에는 일주일에 한 번입니다. cron 작업은 필요하지 않습니다. 모듈을 제거하거나 초기화하면 라이선스 키와 라이선스 상태는 항상 삭제됩니다.

문제 해결

결제 시 SF Express가 보이지 않음: 라이선스가 활성 상태인지, Enable SF Express가 켜져 있는지 확인하세요. Shipping > Carriers에서 운송업체가 고객 국가의 배송 지역과 고객 그룹을 포함하는지 확인하세요(또는 Ignore shipping zones를 켜고 Countries를 확인하세요). 무게 제한과 Minimum subtotal을 확인하세요. 가격표 또는 Fallback cost에 해당 국가의 요금이 있는지 확인하세요. 상품 페이지에서 특정 운송업체로 제한되어 있을 수도 있습니다.

요금이 SF Express가 아니라 가격표에서 옴: 실시간 요금에는 고객 코드와 checkword, 발송지 성과 시, 성과 중국어 도시 이름이 있는 중국 본토 배송지 주소, 그리고(CNY가 아닌 쇼핑몰의 경우) 통화 환율이 필요합니다. 모듈 페이지 상단의 경고를 읽은 다음 Debug log를 켜고, 결제 페이지를 새로 고친 뒤 Log 필드에서 이유를 확인하세요. 실패한 요청은 10분 뒤에 다시 시도됩니다.

중국 주소 양식에 성이 없음: 모듈 페이지의 API 섹션에서 Add Chinese provinces를 클릭하세요.

로그의 오류 A1006: 잘못된 서명입니다. checkword가 틀렸거나 다른 환경의 것입니다. Sandbox 설정을 확인하세요.

로그의 오류 A1004: 요금 조회 API가 FengQiao 애플리케이션에 추가되어 있지 않습니다.

홍콩: 가격표와 대체 배송비로 작동합니다. FengQiao 요금 조회는 중국 본토 주소에만 해당합니다.

변경 후 요금이 오래된 것처럼 보임: 모듈 페이지에서 Save를 클릭하세요. 캐시된 SF Express 요금이 지워집니다.

페이지에 SF Express 운송업체를 찾을 수 없다고 표시됨: 운송업체가 Shipping > Carriers에서 삭제되었습니다. Modules > Module Manager에서 모듈을 초기화하면 다시 만들어집니다.

개발자용: 훅 actionVfdSfExpressQuoteRequest는 요금 요청을 변경합니다(예: 다른 상품 코드로). actionVfdSfExpressApiUrl은 게이트웨이 URL을 변경합니다.

제거

Modules > Module Manager로 이동하여 VibeFox SF Express 옆의 메뉴를 열고 Uninstall을 선택하세요. 라이선스 키와 라이선스 상태는 항상 삭제됩니다. 캐시된 요금은 항상 삭제됩니다. Remove data on uninstall이 켜져 있으면 운송업체가 삭제되고(주문은 기록을 유지함) 설정과 로그도 제거됩니다. 꺼져 있으면 운송업체는 비활성화만 되고 모든 설정이 유지됩니다. 모듈을 다시 설치하거나 Reset을 하면 운송업체는 이전 상태로 돌아갑니다. 기존 주문은 배송 항목을 그대로 유지합니다.

SF Express는 해당 소유자의 상표입니다. 이 모듈은 SF Express와 제휴하거나 SF Express의 승인을 받은 것이 아닙니다.