创建元数据存档
在安装购物车之前,确保您有一个安装了 SFRA 的正常沙盒和基于沙盒的站点。然后创建站点导入元数据存档:
- 在您提取的 Zonos LINK 购物车中,将
/link_zonos/metadata/sites/RefArch文件夹重命名为您的 SFCC 站点的 ID。例如,如果您的站点 ID 是"GlobalEcom",请重命名使您的文件夹结构中有/link_zonos/metadata/sites/GlobalEcom。 - 创建您的
/link_zonos/metadata文件夹的 Zip 存档,并将 zip 存档命名为metadata.zip。**注意:**在 zip 存档中包含/metadata文件夹本身。
导入元数据存档
准备好 metadata.zip 后,将其导入到您的 SFCC 沙盒中:
- 转到 Business Manager > Administration > Site Development > Site Import & Export。
- 使用本地上传选项上传
metadata.zip。 - 上传后,在列表中找到存档,然后单击导入。

此步骤创建 Zonos 集成使用的所需站点首选项、服务、凭证和自定义对象。
将购物车添加到购物车路径
将 int_zonos 购物车添加到您的站点购物车路径以激活其控制器、脚本和模板:
- 导航至 Administration > Sites > Manage Sites > [您的目标站点] > Settings。
- 在基础 SFRA 店面购物车(
app_storefront_base)之前的购物车路径中插入int_zonos。

配置管道别名
购物车中包含 2 个自定义管道,应在 Business Manager 内添加管道别名:
Zonos-OrderConfirmation
这用于 SFCC 内的自定义订单确认,一旦在 Zonos 结账中完成订单。用户将被重定向到这里。例如,别名可以是 zonos-order-confirmation。请为您的业务选择并添加一个适当的别名,该别名与您用于原生 SFCC/SFRA 结账订单确认页面(COSummary-Submit)的别名不同。
Zonos-PlaceSFCCOrder
这用于自定义端点,用于在 SFCC/SFRA 中创建 Zonos 订单,假定别名为 zonos-placesfccorder。如果您在此处使用不同的别名,您需要在进行服务设置时记下此别名。这不是面向公众的 URL,因此建议在初始设置中使用 zonos-placesfccorder 以便于使用此购物车。
要配置这两个别名,在 Business Manager 中,导航至 Merchant Tools > URL Rules > Pipeline URLs。

配置 SFCC 服务
通过第 2 步中的站点导入,创建了两个 SFCC 服务(具有随附的配置文件和凭证):zonos.api.graphql 和 create.order.api.sfra。
单站点设置
如果您的组织在您的 SFCC 组织内有单个店面站点,则无需进行任何额外操作,您可以继续下一步。
多站点设置
如果您的组织在您的 SFCC 组织内有多个店面站点或计划拥有多个店面站点,您需要对 SFCC 服务进行更新/添加。当您有多个将使用 Zonos 集成的 SFCC 站点时,您将需要为每个站点创建一个订单 API 服务。对于每个站点,请执行以下操作:
- 创建一个名称为
create.order.api.[siteID]的新凭证。 - 将凭证 URL 分配给:
https://[Sandbox Host]/s/[Site ID]/Zonos-PlaceSFCCOrder(例如:https://wxyz-001.dx.commercecloud.salesforce.com/s/RefArch/zonos-placesfccorder)。 - 创建一个名称为
create.order.api.[siteID]的新服务,并将create.order.api配置文件和在第 1 步中创建的create.order.api.[siteID]凭证分配给它。
完成后,您应该为每个站点拥有一个创建订单 API 服务。
**注意:**如果您没有将原始
create.order.api.sfra服务重命名为您的某个站点的创建订单服务,并且它仍然存在,您可以删除它。将zonos.api.graphql服务名称保持原样。即使有多个站点,您也只需要一个 Zonos API 服务。
配置 Zonos 自定义站点首选项
在 Business Manager 中,导航至 Merchant Tools > Site Preferences > Custom Preferences,然后单击 zonos 首选项组以访问 Zonos 自定义站点首选项。
为您的站点设置以下站点首选项:
| 首选项名称↕ | 描述↕ |
|---|---|
| Zonos Enabled | 用于在店面上启用/禁用 Zonos 集成的功能开关。如果未设置,将使用默认值(否)。 |
| Main Zonos Script | (必需) Zonos 集成的客户端(浏览器)端脚本的 URL。由 Zonos 提供。如果未设置,将使用默认值(https://cdn.jsdelivr.net/npm/@zonos/elements/dist/scripts/loadZonos.js)。 |
| Blur OnInit Script | (可选)客户端(浏览器)端脚本的 URL,用于在启用自动货币转换时模糊初始价格值。由 Zonos 提供。 |
| Public API Token | (必需) 公共集成令牌。此值可在您的 Zonos Dashboard(Settings > Integrations > API Keys:公共凭证)中找到。 |
| Private API Token | (必需) 私有集成令牌。此值可在您的 Zonos Dashboard(Settings > Integrations > API Keys:Zonos API)中找到。 |
| Zonos Store ID | (必需) Zonos 提供的店铺 ID。此值可在您的 Zonos Dashboard(Settings > Integrations > App credentials:Store ID)中找到。 |
| Currency Element Selector | (可选)jQuery 风格选择器字符串(不带引号),用于 Zonos 应应用货币转换的价格值。 |
| Place Order (Checkout) Button Selector | (可选)jQuery 风格选择器字符串(不带引号),用于应启动 Zonos 模态结账的按钮。 |
| Zonos Payment Method ID | 在 SFCC 中创建 Zonos 订单时使用的 SFCC 支付方法 ID。数据导入中包含一个新的支付方法和支付处理器,两者的 ID 均为 ZONOS。此新支付方法 ID 也是此自定义站点首选项的默认值。如果您更希望将不同的支付方法与 Zonos 订单关联,此处的值可以更改为 Business Manager 中配置的任何有效支付方法的 ID。 |
| Zonos Ship Method Mapping | JSON 映射,将 Zonos 订单详情响应中的运输方法 ID 映射到在 SFCC 中放置 Zonos 订单时的 SFCC 运输方法 ID。设置默认映射,以便如果没有明确映射,未映射的 Zonos 运输方法映射到默认 SFCC 运输方法。有关更详细的说明,请参见下面的"配置运输方法"部分。 |
| Place Order Password | (必需) SFCC 使用此值来确保订单创建 API 请求来自受信任的内部(即 SFCC 作业)源。此值可以是您喜欢的任何字符串(包含大小写字母、数字和标准特殊字符)。示例:X$7eo$33B!z= |
| SFCC Storefront Password | SFCC 站点的店面密码(如果受保护)。 |
| Place Order Service Name | (必需) 您在第 5 步中配置的创建订单 API 服务的名称。注意:此名称必须完全匹配服务名称。 |
| Origin Shipping Address | 运输仓库的原始地址,发送给 Zonos,JSON 格式。示例:{"administrativeArea": "Pennsylvania", "administrativeAreaCode": "PA", "countryCode": "US", "line1": "975 S Tech Ridge Dr", "line2": "", "locality": "Harrisburg", "postalCode": "17025"} |
| Zonos Default HS Code | (必需) Zonos 默认 HS 代码,用于产品值为空时。如果为空,将使用默认值(6109.10)。 |
配置运输方法
在 Zonos 模态结账期间,购物者选择在您的 Zonos Dashboard 中定义的运输方法。当这些订单导入到 SFCC 时,其运输方法必须与有效的 SFCC 运输方法相对应。为了支持这一点:
- 在 SFCC 中设置一个或多个运输方法,您的 Zonos 中的运输方法应映射到这些方法。
- 在上面描述的 Zonos Ship Method Mapping 自定义站点首选项中,在您的 Zonos 运输方法和您的 SFCC 运输方法之间建立一个或多个运输方法映射。
运输方法映射
运输方法映射以 JSON 对象的形式,将您的 Zonos 运输方法映射到您的 SFCC 运输方法。此映射必须为每个可能在您的 Zonos 结账中选择的潜在 Zonos 运输方法(服务级别)都有一个映射记录。强烈建议您还包括一个 default 映射记录,该记录将在 Zonos 订单使用的运输方法没有对应的 SFCC 运输方法映射的情况下使用,从而防止因 SFCC 订单中缺少运输方法而导致的下游故障。
JSON 对象的格式为:
{
"[Zonos Shipping Service Level Code]": "[SFCC Shipping Method ID]",
...
"default": "[Default SFCC Shipping Method ID]"
}
示例
假设您在 Zonos Dashboard 中启用了以下服务级别:

由于某些原因(例如后台要求、额外的第三方运输服务集成等),您可能仅限于您 SFCC 站点的以下运输方法:

当收到新的 Zonos 订单并将其放入 SFCC 时,运输方法必须来自此列表。
要建立您的映射,请登录您的 Zonos Dashboard,转到 Shipping > Manage Rates,然后单击每个显示的启用的服务级别,您会看到类似以下内容的显示:

在每个中,单击编辑详情以获取(或设置)Zonos 运输服务级别代码(参见下文)。

通过运输服务级别代码,创建一个映射记录,将其映射到您希望在 Zonos 结账中选择该运输服务级别(Zonos 运输方法)时在您的 SFCC 订单中出现的 SFCC 运输方法。
添加了每个启用的运输服务级别代码的记录以及 default 运输方法映射后,您的 Zonos Ship Method Mapping JSON 对象应该看起来像这样:
{
"ups.worldwide_saver": "004",
"ups.standard": "002",
"ups.worldwide_expedited": "012",
"ups.worldwide_express": "012",
"default": "001"
}
**注意:**由于这只是 Zonos 运输方法到 SFCC 运输方法的映射,只需要在映射中包含所有 Zonos 运输方法即可。无需在映射中包含您的每个 SFCC 运输方法。
配置作业
安装中包含两个 SFCC 作业以支持 Zonos 集成:
CreateOrdersFromZonos
此作业在 zonosOrders 自定义对象存储中查找新创建的 Zonos 订单引用,从 Zonos 获取完整订单详情,并在 SFCC 中创建相应的订单。
**时间安排:**您可以安排此作业以满足您的业务需求,但通常,此作业应配置为按间隔基础定期运行(即每 5-10 分钟),并且每周运行一次。

自定义参数: CreateOrdersFromZonos 作业不包含任何自定义参数。
CreateMissingZonosOrders
虽然这应该很少发生,但可能由于某些不可预见的情况,Zonos 中放置的订单可能不会通过正常过程进入您的 SFCC 实例。出于这个原因,我们包括了 CreateMissingZonosOrders 作业。此作业在您的 Zonos 订单历史和 SFCC 之间进行交叉检查,以识别和导入任何丢失的订单。
**时间安排:**您可以安排此作业以满足您的业务需求,但您应该安排此作业的运行频率低于 CreateOrdersFromZonos 作业。安排此作业运行频率时要考虑的事项:
- 与所有作业一样,考虑所有因素(包括处理负载/带宽和您的业务需求)后,您应该安排此作业尽可能不频繁地运行。
- 由于此作业将查询一段时间内的所有订单,高流量站点应更频繁地运行此作业(每个作业运行处理的订单更少),而低流量站点可以降低频率。
- 我们对
CreateMissingZonosOrders的基线建议频率,我们认为适用于大多数站点,是每 90 分钟运行一次。

**自定义参数:**有两个与 CreateMissingZonosOrders 作业步骤关联的自定义参数,您应该设置:
- **LookBackHours:**这是从作业运行时开始,您希望作业向后查询 Zonos 以寻找缺失订单的小时数。基于您为作业安排的频率,此值应至少等于作业运行之间的时间,理想情况下应有重叠。例如,如果作业每 90 分钟运行一次,将
LookBackHours设置为2(小时)。默认值(如果未设置值):2 - **OrderSize:**每次 Zonos 内部查询时要检索的最大订单数。将此视为作业在查询 Zonos 订单时使用的页面大小。默认值(如果未设置值):
20

配置 Zonos Hello
Zonos Hello 提供客户端本地化功能,例如动态语言选择、税费消息和内联货币转换。启用 Hello 后,它通过 Zonos 客户端脚本在您的店面上自动加载。
Zonos 客户端脚本使用 SFCC 远程包含 Zonos-ClientScriptInclude 端点添加,位于以下覆盖模板的底部:
/cartridge/templates/default/common/layout/page.isml/cartridge/templates/default/common/layout/checkout.isml

如果您的项目在更高优先级购物车中覆盖这些模板,请确保将远程包含添加到您的自定义版本:
<isinclude url="${URLUtils.url('Zonos-ClientScriptInclude', 'pageType', pdict.action)}"/>
配置货币转换
Zonos Hello 自动将店面上显示的价格值转换为购物者的本地货币。为了使其正常工作:
- 价格值必须包装在 HTML 元素中,使用可以通过 jQuery 选择的类名或 ID。例如:
<p class="text-right sub-total zonos-price">${pdict.totals.subTotal}</p> - 这些选择器值必须包含在货币元素选择器站点首选项(或在您的 Zonos Dashboard 中)中。
价格显示代码更改
Zonos 购物车包括以下覆盖模板,其中在参考架构站点中呈现价格,利用分配给包含这些各种价格的 HTML 元素的 zonos-list-price、zonos-sales-price 和 zonos-price 类名:
/cartridge/templates/default/cart/productCard/cartCouponDisplay.isml/cartridge/templates/default/cart/cartTotals.isml/cartridge/templates/default/checkout/billing/billingSummary.isml/cartridge/templates/default/checkout/cart/miniCart.isml/cartridge/templates/default/chackout/productCard/productCardProductTotalPrice.isml/cartridge/templates/default/product/components/pricing.isml/cartridge/templates/default/product/components/setPrice.isml
如果购物车路径中没有在 int_zonos 之上配置的包含这些模板的购物车,则 Zonos Hello 要转换您站点上这些价格呈现的货币不需要进行代码更改。如果您在购物车路径中 int_zonos 之上的一个或多个购物车中有这些模板的自定义版本,您必须在这些自定义模板的围绕您的价格的 HTML 包装器中包含唯一的类名(如上所示)。
配置价格元素选择器字符串
货币选择器字符串是 jQuery 风格的选择器字符串值,由 Zonos 脚本使用,用于识别应接收货币转换更新的包含价格值的 HTML 元素。此值应该是分配给在前一步中描述的您站点的价格显示的 HTML 元素的 CSS 类名和/或 ID 的空格分隔列表,其中类名以 . 为前缀,ID 以 # 为前缀(不带引号)。例如,如果您的站点将使用 Zonos 购物车中包含的价格显示模板,选择器字符串将为 .zonos-list-price .zonos-sales-price .zonos-price(不带引号)。
货币选择器字符串可以通过您的 Zonos Dashboard 或在您 Business Manager 的 Zonos 自定义站点首选项中的货币元素选择器站点首选项中配置。
**注意:**如果在两个地方都配置了,Business Manager 中的值将优先。
配置结账按钮
结账按钮选择器字符串是 jQuery 选择器字符串值,由 Zonos 脚本使用,用于识别您站点上用作按钮控件的 HTML 元素,单击这些元素时,将客户带入您站点的结账流程。
当购物者单击与您配置的选择器字符串匹配的结账按钮时,Zonos 会自动截断该操作并打开模态结账。
结账按钮选择器字符串可以通过您的 Zonos Dashboard 或在您 Business Manager 的 Zonos 自定义站点首选项中的放置订单(结账)按钮选择器站点首选项中配置。
了解订单确认和自定义对象
当用户在 Zonos 托管结账中完成订单时,他们被重定向到显示 SFCC 内订单确认的自定义管道(Zonos-OrderConfirmation)。此订单确认的主要呈现模板是 /int_zonos/cartridge/templates/default/checkout/confirmation/zonosConfirmation.isml。
此订单确认页面使用与原生 SFCC/SFRA 订单确认页面相同的样式,并与原生 SFCC/SFRA 订单确认页面共享一些 .isml 文件。这可能需要一些样式更新以匹配已对站点进行的任何自定义样式更新。Zonos 订单确认模板使用的基础呈现模板包括:
app_storefront_base\cartridge\templates\default\checkout\confirmation\confirmationDetails.ismlapp_storefront_base\cartridge\templates\default\checkout\shipping\shippingSummary.ismlint_zonos\cartridge\templates\default\checkout\billing\billingSummary.ismlapp_storefront_base\cartridge\templates\default\checkout\orderProductSummary.ismlapp_storefront_base\cartridge\templates\default\checkout\orderTotalSummary.isml
与向用户显示订单确认之外的此自定义管道相关的底层功能与数据导入中包含的新自定义对象类型 zonosOrders 有关。当订单确认为用户显示时,SFCC 使用订单确认 URL 中显示的 Zonos 订单 ID 并为自定义对象创建相应的自定义对象,并将 Zonos 订单 ID 作为自定义对象的关键属性。然后使用它通过作业 CreateOrdersFromZonos 在 SFCC 中放置订单。此作业将遍历 zonosOrders 类型的所有自定义对象,其中 createdStatus = - None -。该作业将执行几项任务:
- 查询 Zonos 以获取订单详情。
- 使用此响应根据在站点偏好设置中为运输方法和支付方法配置的设置,以及响应中的项目、运输、账单和客户详情创建 SFCC 中的订单。
- 通过突变使用 SFCC 订单编号更新 Zonos,以将其与 Zonos Dashboard 内的 Zonos 订单编号相关联。
如果以上步骤成功,自定义对象属性 createdStatus 将被设置为 created,以将对象从将来的考虑中删除。如果以上步骤不成功,自定义对象属性 createdStatus 将被设置为 failed,错误消息将在对象中的属性 errorResponse(Zonos)或 sfccErrorResponse(SFCC)中注明,具体取决于在该过程中响应的系统。
如果您需要重新尝试放置订单,只需将 createdStatus 重新设置为 - None -,这将在下一次作业运行中被考虑。
调整高级设置
可选—以下设置是高级设置。现有默认值,因此无需采取任何行动。如果您想进行调整,请按照以下指南:
导入时创建发票
默认设置为是。Zonos 将在订单导入时创建发票。如果您选择禁用此功能,您需要创建自己的发票,并且 Zonos 将设置欺诈审查保留为 zonos_hold 状态。欺诈被解除后,我们将恢复为之前的状态。
客户登录
默认设置为否。如果您想要求结账账户,请切换为是。您还需要转到客户配置 > 登录选项并将登录后将客户重定向到账户仪表板更新为否。
SFCC 订单导出
如果您使用或计划使用 SFCC 订单导出,请确保分配给订单和产品对象的 Zonos 自定义属性包含在您的 SFCC 订单导出文件中。从 Merchant Tools > Site Preferences > Orders,将订单导出架构版本设置为最新版本。

测试您的集成
现在您已设置您的账户和应用,您可以测试您的集成。您需要在测试时在 SFCC 中启用 Checkout 和 Hello。要执行此操作:
- 转到 Merchant Tools > Site Preferences > Custom Preferences > zonos。
- 将 Zonos Enabled 切换为是。
一旦您在站点的自定义站点首选项中配置了 Zonos 账户信息,并且 Zonos Enabled 功能开关设置为 YES,您可以通过向您的站点的 URL 添加以下参数来在店面上测试 Zonos 功能:zCountry=[country code of a country you have enabled in your Zonos Dashboard]
例如,如果您启用了加拿大:https://abcd-001.dx.commercecloud.salesforce.com/on/demandware.store/Sites-RefArch-Site?zCountry=CA
**注意:**这仅在非生产环境中进行测试时必需,其中您的 Zonos 公开 API 令牌配置了测试凭证令牌。当配置您的实时/生产 API 令牌时,
zCountryURL 参数不必需或预期。
如果您还没有准备好上线,请记住一旦完成测试,将 Zonos Enabled 切换回否。完成测试后,使用与上面相同的步骤启用 Zonos。
跟踪号码同步
在 SFCC 中添加的跟踪号码会自动同步到 Zonos。但是,在 Zonos Dashboard 中添加的跟踪号码不会同步回 SFCC。如果您在 Zonos Dashboard 中添加或更新跟踪号码,您还需要在 SFCC Business Manager 中手动更新它们。
卸载 Checkout
购物车的卸载必须由经验丰富的 SFCC 开发人员执行。请与您的 SFCC 开发团队或 Zonos 支持联系以寻求卸载帮助。
为获得有关税费和运费的最准确报价,我应该提供什么产品信息?
产品信息可能会影响应支付的税费金额和运费。您提供给 Zonos 的产品信息越多,返回的报价就越精确。即使在此信息不可用时 Zonos 也可以生成报价,但建议提供以下关键产品详情以提高准确性:
- **重量:**重量会影响您的运费,这可能会影响税费。您的 SFCC 产品列表中的重量在存在时由 Zonos 自动使用。
- **尺寸:**尺寸可能会影响您的运费,这可能会影响税费。Zonos 可以使用在 SFCC 中的每个产品上设置的产品尺寸(长、宽和高),但您必须在 Zonos 自定义站点首选项中将其映射以进行适当的集成。
- HS 代码: HS 代码会影响税率,有时会影响税费。Zonos 可以使用在您的 SFCC 产品列表中设置的 HS 代码,但您必须在 Zonos 自定义站点首选项中映射 HS 代码字段。
- **原产国:**产品的原产国会影响税率,并可能影响税费。您的 SFCC 产品列表中设置的原产国在存在时由 Zonos 自动使用。
**注意:**或者,您可以将信息输入到"目录"中,覆盖存储的信息并从 SFCC 传递的信息。
Salesforce Commerce Cloud 结账
使用 Zonos Checkout 为您的 SFCC 商店实现全球商务。
Zonos Checkout 直接集成到您的 Salesforce Commerce Cloud(SFCC)店面中,通过内置的落地成本计算、本地化的支付选项,以及 Zonos 和 SFCC Business Manager 之间的自动订单管理,实现无缝国际交易。
**对于您的客户:**使用他们的语言和货币进行本地化结账,并提前计算落地成本、欺诈保护和交付时无隐藏费用。
**对于您的团队:**无缝国际计算、SFCC Business Manager 中的订单管理(自动订单同步),以及由 Zonos 完全处理的安全支付处理。