☰
Shopify与ERP系统对接全指南:API集成与Webhook避坑实践
2026/10/7 12:30:17 网站建设 项目流程

黑五那次大促差点把我搞到怀疑人生。Shopify 独立站爆单本来是好事,但办公室这边 ERP 里的库存半天没怎么动,客服那边已经开始接到“为什么我拍下的货发不出”的投诉了。问题根源其实特别简单:订单从 Shopify 到国内 ERP 完全靠运营手工导出再导入,库存也是运营每天手动盘点后回填。人一忙,必然出错;流量一大,人先崩。

那段时间我集中把跨境独立站和 Shopify 的对接流程完整走了一遍,也接手过不少客户的 Shopify 系统集成需求。这个领域看着就是“调用 API 同步数据”,但真的落到跨境场景里,商品、库存、订单、履约、价格、多币种、多时区、限流、Webhook,每个点都能埋坑。这篇文章我会按实际项目推进的顺序,把 Shopify 开发对接流程讲透:先是方案选型和架构设计,再是商品价格库存、订单履约售后、Webhook 机制,最后是跨境业务里那些文档里不会写但一定会踩的坑。

1. 先清楚一件事:你到底要“对接”什么

很多人找我咨询时,第一句话就是“我想把 Shopify 和我们的 ERP 打通”。但“打通”这个词太含糊了,不同业务背景的人需求完全不一样。我见过做亚马逊铺货转型的团队,以为对接 Shopify 就是把产品标题搬过去;也见过已经有自建站的品牌方,想把 Shopify 作为新渠道接入现有库存中心。需求不同,开发对接的深度差一个量级。

1.1 跨境业务里 Shopify 所承担的角色

在跨境电商这个链路里,Shopify 通常不是你的业务系统,它只是销售渠道。真正的运营中枢可能在 ERP、OMS、WMS 或海外仓系统里。订单进来之后,要经过审核、风控、仓库分配、拣货、打包、面单打印、出库、物流回传;商品要经过选品、采购、定价、翻译、上架;库存要实时或准实时地反映给消费者;售后要处理取消、退款、拦截、重发。

Shopify 作为独立站前台,承担的是“被消费者访问、下单支付”这一段。它天然拥有完整的商品展示、购物车、结算、支付、邮件通知能力,但一旦订单量上来,它和后台系统之间如果没有一条自动化通道,事情就会全部堆到人工身上。

所以“对接”的本质,就是把你已经有的业务能力,通过 Shopify 暴露出来的接口,和它发生双向数据流动。商品、价格、库存是“推给 Shopify”,订单、退款、售后是“从 Shopify 拉回来”,发货信息又是“推回去给 Shopify”。

1.2 数据流向全景

以我接手的一个典型客户为例,他们已有的系统组合是:

  • 国内自建 ERP,管采购、库存、订单处理和财务结算
  • 海外仓系统,管头程、尾程和库存实物
  • Shopify 独立站,面对海外消费者

实际数据流是这样走的:

  1. 商品主数据(标题、描述、图片、规格、SKU)从 ERP 推送到 Shopify;
  2. 价格按不同站点、不同币种,通过 Shopify 价格列表或市场功能同步;
  3. 可售库存从 ERP/WMS 汇总后,按仓库维度写入 Shopify 对应库存地点;
  4. 消费者在 Shopify 下单并支付,订单通过 Webhook 和定时任务被 ERP 拉取;
  5. ERP 内部做风控、审单、合并,推送到海外仓系统发货;
  6. 发货后,ERP 把物流公司、追踪单号回传 Shopify,Shopify 通知消费者;
  7. 遇到取消、退款、拒收,再由 Shopify 侧事件触发 ERP 处理。

这条链路上每一步都有细节,但首先要在架构层面把数据流理清楚。如果不先想明白哪些数据单向、哪些数据双向,后面写代码就是不断打补丁。

1.3 三种主流落地方式

开发对接的方式,我实际用下来无非三种,各有适用场景。

第一种是 Shopify 后台自建应用。登录店铺后台后,在 Settings 里进入 Apps,选择 Develop apps,创建一个 Custom App,拿到 Admin API 访问令牌后直接对接。这种方式适合只服务自己一家店铺,不需要上架应用商店,审查流程也简单。我个人的习惯是:如果是品牌自有店铺,且没有多租户需求,优先走这条路,开发效率最高。

第二种是公开应用。如果你的目标是把这套对接能力做成产品,授权给很多家 Shopify 店铺使用,那就要走 Shopify App Store 的公开应用流程,这需要注册为 Shopify 合作伙伴,走 OAuth 授权流程,每个店铺独立授权、独立 token,同时要过 Shopify 的 App Review。这套流程适合做 SaaS 服务商或者代运营公司,不适合只想解决自家店铺问题的团队。

第三方是中间件 + API 网关。有些团队已经有自建的集成平台,比如用 Kafka、消息队列做异步任务,或者用无代码工具直接完成同步,那就把 Shopify 当成一个数据源接入即可。这样的好处是灵活,坏处是调试链路变长,一旦数据对不上,很难说清楚是哪一环出了问题。

我通常是先在白纸上画清楚数据流和对接方式,再决定技术细节,别一上来就写代码。

2. 动手前先定架构:API 版本、认证、同步模型

架构设计这部分看起来不产生业务价值,但恰恰决定后面会不会返工。我在对接过程中对 API 版本、REST/GraphQL 取舍、权限范围和同步模型这四件事印象最深。

2.1 Admin API 版本与 REST/GraphQL 的取舍

Shopify Admin API 是分版本的。现在打开 Shopify 官方文档,能看到当前稳定版本和版本支持时间表,比如每季度出一次新版本,旧版本会提前几个月公布下架时间。这是很多人第一次做对接时最容易忽略的——接口版本一旦停用,线上功能就会静默失效。

我踩过一次教训。当时项目用了某个测试店铺默认的老版本 API,开发验证全通过,结果上线前一周官方邮件提醒版本即将停用,只好花一个周末把所有接口过了一遍。这事的教训是:新项目第一时间把 API 版本参数固定到最新的稳定版本,不要在文档里复制旧代码。

接口风格上,Shopify Admin API 同时提供 REST 和 GraphQL。REST 容易理解,调试工具也成熟,适合快速做商品、订单的增删改查;GraphQL 的好处是一次请求可以拿到关联数据,尤其是订单包含客户、地址、订单项、折扣、税费这些嵌套结构时,GraphQL 可以按需取字段,少了很多次请求。

但我对 GraphQL 有一个必须提醒的坑:GraphQL 里的 ID 是 base64 编码的全局 ID,比如gid://shopify/Order/123456,而 REST 返回的 ID 是纯数字。你在同步数据时,经常需要把 REST 拿到的数字 ID 转换成 GraphQL 能用的格式,或者反过来从全局 ID 里解析出数字 ID。这个小转换不写清楚,后面查数据时就会一脸懵。

我自己一般用 REST 做大多数操作,只有在一次要拿大量关联数据时用 GraphQL 的节点查询。大批量历史数据迁移,则优先考虑用 Bulk Operations API,让 Shopify 后台异步生成 JSONL 文件再下载,比循环拉分页快得多。

2.2 授权流程和权限范围设计

Shopify 的授权分两类,自定义应用和公开应用走的路不太一样。

自定义应用比较简单——你在 Shopify 后台创建一个应用,后台会生成 Admin API access token,然后把 token 配置到服务端即可。但注意,Custom App 的 token 是跟店铺绑定的,别把它提交到前端代码或 Git 仓库里,要像数据库密码一样保管。

公开应用则走标准的 OAuth 2.0 流程,大致是:

  1. 引导店铺管理员访问你的授权链接;
  2. 参数里带shop、scope、redirect_uri、state;
  3. 管理员确认后 Shopify 重定向到你的回调地址,带code;
  4. 你用client_id、client_secret、code换永久 access token;
  5. 以后所有 API 请求用这个 token,并加上X-Shopify-Access-Token头。

权限范围是我特别想强调的地方。Shopify 的 scope 设计遵循最小权限原则,你用多少就要多少。常见的包括:

权限范围用途
read_products读取商品
write_products写入商品、修改价格
read_orders读取订单
write_orders创建/修改订单,处理部分发货
read_inventory读取库存
write_inventory修改库存
read_fulfillments读取履约记录
write_fulfillments创建发货记录

有人图省事,直接申请所有权限,我的建议是别这样。权限越大,安全风险越大,而且 Shopify 公开应用的审核阶段会盯着权限列表看,超出业务合理性的 scope 会被打回。哪怕你自己开发,也多花两分钟想清楚哪几个接口需要什么权限,够用就行。

2.3 同步方向和数据模型设计

对接的数据同步,我一般先分成三类:

  • 主数据同步:商品、价格、库存,方向是 ERP → Shopify,通常是单向推送
  • 交易数据同步:订单、退款、售后,方向是 Shopify → ERP,基本是单向拉取
  • 履约回传:发货状态、物流单号,方向是 ERP → Shopify

这三类数据的同步频率、触发方式、冲突处理策略完全不同。商品同步可以做成全量+定时增量,库存同步要尽量实时但也要防抖,订单同步则必须依赖 Webhook 做事件驱动,再配合定时轮询兜底。

数据模型上,我建议在 ERP 侧为每个 Shopify 店铺建一个映射表,至少包含:

  • ERP 内部商品编码 ↔ Shopify product ID
  • ERP 内部 SKU ↔ Shopify variant ID
  • ERP 仓库 ↔ Shopify location ID
  • 订单号 ↔ Shopify order ID

没有这张映射表,你后面查事故会找到崩溃。我见过完全不做映射、靠标题模糊匹配的案例,一次商品改名,库存同步直接断了,运营一点办法都没有。

3. 商品、价格、库存:主数据怎么推

主数据同步,技术难度不大,但琐碎。页面标题、描述、图片、规格、标签、海关信息、长宽高重量,每一项都有可能出问题。跨境场景还要额外处理多语言和多币种。

3.1 商品结构映射

Shopify 商品模型核心是 Product 和 Variant。Product 是商品主体,包含标题、描述、品牌等;Variant 是具体的可售单位,包含 SKU、条形码、价格、重量、库存、尺寸选项。

对接时最常遇到的问题,是 ERP 的商品模型和 Shopify 的不一致。比如 ERP 里一个商品可能有多个自定义属性,但在 Shopify 里只能选最多三个 options 来做变体(现在 Shopify 其实支持多选项,但旧版本用过会受限制)。如果你的产品有颜色、尺码、材质、风格四个维度,直接搬过去就会出现变体爆炸。比如 10 个颜色 × 5 个尺码 × 3 个材质就是 150 个变体,管理成本极高。

我的处理方式是先做产品结构规划,再写映射代码。能用 SKU 拼接规则映射的最好,ERP 的规格代码会自动生成 Shopify variant 选项。如果 Shopify 变体数量确实太大,可以考虑把某些规格塞到 metafields 里,不参与生成变体,这样避免店铺后台管理混乱。

Shopify 的 metafields 是个特别有用的能力,可以给商品、变体、订单挂自定义字段。我在跨境对接时,通常会把商品的申报品名、HS 海关编码、原产地等放到 metafields 里,因为这些字段在独立站前台不展示,但订单回传 ERP 后要做报关和面单打印,ERP 需要拿到这些值。

3.2 多语言多币种价格同步

跨境独立站最常见的是多国站点,同一个商品在不同国家卖的价格可能不一样。Shopify 在这块提供了 Markets 功能,可以配置多个市场(国家/地区),每个市场有自己的语言、币种、价格列表。

这意味着你的价格同步不能简单地把 ERP 里的人民币价格换算成美元再填到商品上,而是要考虑“这个市场在用什么价格”。Shopify 里价格可以写到两个层:基础价格(primary price)和市场特定价格。如果你只设定了基础价格,Shopify 会按当天汇率自动换算,但自动换算往往不是你想定的价格策略。

我遇到的客户通常是这样做的:ERP 里维护一套基准定价(比如美元),然后按目标市场的倍率、税费、竞争情况做成价格策略,生成符合预期的当地售价,再通过 price list 同步到对应市场。开发对接时要注意,每个 price list 有独立的 price entry 接口,你得把 market ID、price list ID、variant ID 三者对应好,否则价格很容易写错,写错了消费者下单时看到的就不是你想要的价格。

多语言描述方面,Shopify 有翻译 API 和主题文件机制,但如果你不想把整个店铺国际化做太深,最直接的方式还是把多语言内容放在 metafields 里,或者用商品描述里做语言区块。不过我更推荐标准做法:用 Shopify Markets 的多语言配置,然后通过 API 把每个语言的标题、描述写入 localizable fields。这一块在开发对接时就是多一步,但用户体验完全不同。

3.3 库存同步与超卖防护

库存同步是主数据里最需谨慎的部分。消费者看库存决定买不买,如果库存显示不准,轻则影响转化,重则超卖、退款、差评。

Shopify 的库存系统是按 location 管理的。每个仓库对应一个 location,location 上有 inventory level。你必须在 Shopify 里先建好所有海外仓和国内仓的 location,再把 ERP/WMS 的库存汇总值写入对应 location,Shopify 会根据各 location 的库存自动聚合可售数量。

对接时要注意三点:

第一,写入库存接口有频率限制。实时同步可以做,但要有防抖。后期我会用消息队列把库存变更加入一个队列,比如 5 秒内同一个 variant 只合并成一次更新,避免订单高峰时反复触发 API。

第二,库存同步方向。比较稳的模式是 ERP 作为唯一库存源,ERP 每次变动后主动推给 Shopify。如果两边都改库存,一定会出现覆盖、回落的问题。

第三,超卖防护。完全依赖 Shopify 侧去控制库存数量不现实,因为第三方平台、线下渠道和独立站共用同一批货时,ERP 侧的并发扣减才更可靠。我一般会在同步时预留一个“安全缓冲库存”,比如可售 = 实物库存 - 在途订单 - 安全缓冲,防止多个渠道同时卖同一批货导致超卖。

4. 订单、履约、售后:交易链路

订单链路是整个对接里我最花时间调的部分。商品同步错了最多是价格显示不对,订单同步漏了那是直接造成资损和客诉。跨境订单尤其复杂,因为要处理多币种支付、税率、运费、地址校验、海外仓库存扣减。

4.1 订单增量同步

订单从 Shopify 到 ERP,常见的做法是两个通道同时跑:

一个通道是 Webhook 实时告知。你订阅orders/create、orders/paid、orders/cancelled等事件,Shopify 在事件发生时向你的回调地址发 POST 请求。这个通道实时性最好,但理论上可能存在丢事件,所以不能作为唯一通道。

另一个通道是定时增量拉取。我通常每隔 5 到 10 分钟调用一次GET /admin/api/版本/orders.json?status=any&fulfillment_status=any&updated_at_min=...,把这个窗口内变化的订单拉下来。

拉单时要特别注意几个参数:status要写成any,否则默认只拉 open 状态的订单,已取消、已归档的订单就漏了;fulfillment_status=any同理。很多新手在这里漏单,就是因为只要默认值。

订单数据拿回来之后,要把订单里的字段和 ERP 字段一一对应。跨境场景里最容易乱的是金额、地址和产品 SKU。订单金额是分层的:商品小计、折扣、税额、运费、总额,每层可能还有正负值。地址要区分账单地址、收货地址,有些国家地址格式跟你 ERP 字段不匹配,还得做地址清洗。

还有一点:不要直接把 Shopify 订单号当 ERP 订单批号。一个 Shopify 订单可能产生多个 ERP 发货单,也可能因为拆仓分成多个包裹。我的做法是把 Shopify order ID 作为外部订单号挂在 ERP 单据上,在 ERP 内部生成自己的单号体系,两边用映射表联系。

4.2 履约与物流回传

消费者付款之后,最关心的就是啥时候发货、物流到哪了。所以订单进入 ERP 做完发货后,一定要把履约状态和物流单号回传 Shopify。

回传用的是 Fulfillment 相关接口。先根据订单找到对应的 fulfillment,或者创建一个新的 fulfillment,填入tracking_company、tracking_number、tracking_url,并把 line items 的状态改为 fulfilled。

这里有一个很容易忽略的问题:一个订单可能分多个包裹发。比如一个订单买了 3 件商品,海外仓分成了两个包裹:第一个包裹发 2 件,第二个包裹发 1 件。如果你只回传一个 fulfillment,Shopify 会认为整单都完成履约,但实际上还有一个包裹没发出。正确做法是创建多个 fulfillment,每个 fulfillment 对应一个包裹,分别关联对应的 line item 和 tracking number。

跨境场景还有一点很关键:回传的物流单号要尽量做到有追踪轨迹的 carrier,Shopify 会主动去拉取物流信息,消费者能在订单详情页看到实时物流。如果你的 ERP 只能传出“已发货”状态,没有 tracking number,建议至少传个物流公司名称,否则消费者体验会差很多。

4.3 取消、退款与售后

订单取消在跨境业务里频率其实不算低,尤其是有些海外消费者习惯下单后马上后悔。取消涉及支付渠道,操作要比普通订单谨慎得多。

如果订单还在授权未捕获阶段(payment pending 或 authorized),你可以直接在 Shopify 后台取消订单,API 上也有取消接口。如果订单已经捕获资金(paid),那取消就不是单纯取消订单,而是要做退款,这涉及到 Shopify 的退款流程和支付网关之间的交互。开发对接时,我的建议是把“取消订单”和“退款”分开处理,ERP 里分别记录事件,别用一个动作全做完。

退款处理还要注意货币转换。如果订单支付币种、结算币种、ERP 入账币种不一致,退款金额的汇率就很容易对不上。还有退款会连带库存回补的问题:消费者买了 2 个商品,退回来 1 个,ERP 是否需要把那个商品加回可售库存,要跟仓库实际收货流程配合,最好等确认退货入库后再回补,而不是退款发起就回补。

售后场景里的换货、重发,则建议在 ERP 侧再造一个新订单或者售中单,再创建一个 Shopify fulfillment 回传,不要在原有订单上反复修改,否则订单状态会被搞乱。

5. Webhook 是发动机也是坑洼地

Shopify 的 Webhook 是整个实时数据同步的发动机,但我也是在这个环节被坑得最惨。要提醒大家:Webhook 这个机制设计得不错,但用起来要留很多心眼。

5.1 事件选择与签名校验

首先,Webhook 接收端是一个公网可访问的 HTTPS 地址。Shopify 会在你订阅事件后,把事件消息 POST 到这个地址。开发对接最常用的几个事件:

  • orders/create:新订单创建
  • orders/paid:订单支付完成
  • orders/cancelled:订单取消
  • orders/fulfilled:订单完成履约
  • products/update:商品内容更新
  • inventory_levels/update:库存数量变化
  • app/uninstalled:应用被卸载(公开应用尤其关注)

订阅事件别贪多。事件太多,回调处理不过来,反而增加风险。我一般只订阅真正影响业务的事件,其他的靠定时拉取补充。

签名校验是必须做的。Shopify 的 Webhook POST 请求头里会带X-Shopify-Hmac-Sha256,它是用你的 client_secret(或自定义应用的 secret)对原始请求体做 HMAC-SHA256 计算出来的。你的回调服务必须验签,否则任何人都可以向你的地址伪造订单事件,轻则数据重复,重则被刷单、误发货,损失就大了。

我用 Python 做验签的简单逻辑一般长这样:

import hashlib, hmac def verify_webhook(request_body: bytes, x_shopify_hmac: str, secret: str) -> bool: digest = hmac.new(secret.encode(), request_body, hashlib.sha256).hexdigest() return hmac.compare_digest(digest, x_shopify_hmac)

要注意,验签用的原始 body 必须是接收到的原始字节,不能是解析成 JSON 之后再重新序列化的结果,因为序列化顺序一变,签名就对不上了。这个坑我见过太多次了。

5.2 幂等与“至少一次”投递

Shopify 的 Webhook 投递是一种“至少一次”的模型,也就是说同一个事件可能重复投递,你不做幂等,就会重复处理同一张订单。

幂等的办法其实不复杂:在每个事件处理里,用事件产生的业务主键做唯一索引。比如创建一个 ERP 销售订单前,先查这张 Shopify order ID 是否已经存在,存在就跳过或更新,不存在才新增。同时把事件的X-Shopify-Webhook-Id存下来,作为处理记录的唯一标识,重复事件直接秒回 200。

订单重复创建是很多人开发 Webhook 时最容易犯的错,尤其是“先 Webhook 收到订单、同时定时拉取也抓到同一单”的场景下,两边同时处理,就会插进两个销售单。我处理的办法是:Webhook 只作为一个信号,实际处理统一走一个带锁的入口,比如数据库的唯一约束 + 业务幂等校验,保证同一个 Shopify order ID 只能生成一个 ERP 单号。

5.3 丢事件后的兜底机制

Webhook 虽然好用,但你要假设它可能会丢。比如回调服务发布升级期间,请求超时、失败,Shopify 会重试几次,但如果你的回调地址持续不可用,事件就会丢失。

兜底机制必不可少。我通常在 Webhook 之外,每天定时跑一次增量同步任务,拉取最近一天内更新的订单、库存、商品。这样即使 Webhook 丢了事件,定时任务也能把数据补回来,最多是延迟一点,不会永久丢失。

我曾经接手过一个项目,之前只依赖 Webhook,结果某天半夜后台更新代码,把回调地址搞错了,第二天早上起来,后台订单一大片没进 ERP,幸好还没到发货环节,不然就麻烦大了。自那以后,我把“Webhook 实时 + 定时轮询兜底”写成了团队做集成的一个硬性要求,任何对接都别只看 Webhook。

6. 跨境场景里那些“书上没有”的坑

最后这部分,我当成是一个排雷合集,整理跨境开发对接里最容易让人抓狂的问题。这些坑不是官方文档不写,而是你不真正上线运行一段时间,根本不会意识到它们这么重要。

6.1 时区、金额精度、ID 全局性

第一个坑是时区。Shopify 店铺后台可以设置时区,比如设置成美东或者美西,订单的created_at、updated_at都基于这个时区。而 ERP 系统通常用北京时间或者系统部署服务器的时区。两边如果不统一,订单日期统计、库存扣减时间、售后时效判断全都会乱。

我所有的内部系统都是统一存 UTC 时间戳,展示层再由前端转换。跟 Shopify 交互时,用 ISO 8601 带时区的字符串,确保数据传输过程中时区不丢失。别用“把字符串转成北京时间”这种隐式逻辑,会出大乱子。

第二个坑是金额精度。Shopify 返回的价格是字符串,比如"19.99",不是浮点数。你在转数值时千万不要用float()直接转,浮点误差在财务上是大忌。我在 Python 里一般用Decimal处理,在保留两位小数的计算场景里还要注意四舍五入规则,银行家舍入还是普通四舍五入,都要跟财务确认。

第三个坑是 ID 的全局性问题。做多店铺时,一个 Shopify 店铺里的 order ID 和另一个店铺的 order ID 可能是一样的数字。比如店铺 A 的第一个订单是 1001,店铺 B 的第一个订单也可能是 1001。如果你的数据库表只存了 order_id,没有存 shop 维度,数据就会串店。我的做法是每个店铺单独一个 client 标识,所有映射表都带上shop_id列,哪怕是只有一家店铺也这样设计,为多店铺扩展留好余地。

6.2 接口速率限制与批量操作

Shopify 的接口有限流策略,不控制速率,请求一密集就会收到 429 或 403。REST 和 GraphQL 的限流机制不完全一样,GraphQL 采用的是“成本点”机制,每个查询根据复杂度消耗不同的成本额度,同一时间窗口内用的点数有限。

我最早做库存同步时,想偷懒,把几千个 SKU 的库存一个接一个地调 REST 接口,结果很快触发了限流,后面一整天数据都推不上去。后来改成两个办法:小批量用 GraphQL 的批量 mutation,大批量直接用 Bulk Operations API,把所有要更新的库存生成一个操作,让 Shopify 后台慢慢跑完生成文件,再轮询拿结果。

日常对接中还有一个实用技巧:把高频同步的数据合并更新。比如库存,不是每个库存变化都推一次 API,而是把短时间内同一个 SKU 的所有变动合并成一个最终值,再推一次。效果很像前端做 debounce,能大幅减少 API 调用次数。

6.3 从踩坑中沉淀的检查清单

做了这么多 Shopify 对接项目,我总结了一份自查清单,每次上线前过一遍,能省掉很多事故。

  • 所有 API 调用统一带 Shopify API 版本号,不用旧版本
  • 密钥和 token 放环境变量或密钥服务,不提交到代码库
  • Webhook 必须验签,并且用原始 body 计算签名
  • 每个事件处理都要幂等,用业务主键做唯一约束
  • 必须保留定时全量/增量拉取作为 Webhook 的兜底
  • 金额字段保持字符串或者 Decimal,不落浮点
  • 时间统一存 UTC,接口层转 ISO 带时区
  • 所有映射表带shop_id维度,不裸用一个 ID
  • 发布上线前,在测试店铺里跑完整链路,包括取消、退款、部分发货
  • 监测限流情况,达到阈值时告警并自动降频

这份清单不光适用于 Shopify,其他电商平台的对接也大同小异,核心思想都是:任何第三方平台的 API 都是不可完全信任的外部系统,你要做的是把它当成一个可能会延迟、会重复、会丢失消息的系统来设计。

我在实际操作中还有一个习惯:每次对接完成后,我会把店铺后台真实跑出来的订单和 ERP 里的单据做一次抽样比对,检查金额、SKU、数量、地址是否完全一致。别小看这一步,它能帮你发现那些只会在真实支付完成后才出现的差异,比如币种换算偏差、税费归集方式不同、折扣平摊规则变化。把这些差异在联调阶段就处理掉,比上线后线上补救要划算一百倍。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询