对接 · 开放接口

开放接口

平台开出一家店,就把这家店作为对接租户。外部系统和商家后台、平台 ERP 使用同一套商品与库存。小程序下单扣的也是这份规格库存。

密钥放在哪里

位置做什么
平台店铺列表店铺行上的「开放接口」,生成或重置 AppKey、AppSecret
商家后台仓储user/goods/stock/index 页「对外开放」,查看同一把店铺密钥
AppKey 放在请求头里,用来认出是哪家店。
AppSecret 只留在对接方服务器上,用来计算签名。不要放进请求、日志或前端页面。

签名

请求头:

头说明
X-App-Key店铺 AppKey
X-TimestampUnix 秒,与服务器相差不超过 5 分钟
X-Nonce8 到 64 位字母或数字,5 分钟内不可重复
X-SignHMAC-SHA256 的十六进制小写字符串

待签名字符串为三行,用换行符连接:时间戳、随机串、原始请求体。GET 没有请求体时第三行为空。密钥是 AppSecret。

sign = HMAC_SHA256(AppSecret, timestamp + "\n" + nonce + "\n" + rawBody)

商家范围:不传 mch_id 时操作该店的平台自营商品(mch_id=0)。传入商家 ID 时,必须是这家店下的商家,操作该商家的商品和单据。

已开放的接口

基础地址:/web/index.php?r=api/open/erp/动作。先在对应商家或平台自营商品上开启 ERP 仓储,库存单据才会写入。

动作方法作用
pingGET核对密钥,返回店铺名称、mch_id、ERP 是否已开启
goodsGET商品列表。可选 q 按名称搜索,最多 50 条
skusGET某商品规格与当前库存。参数 goods_id
billsGET最近单据。可选 type:in、out、check
stockPOST提交入库、出库或盘点。JSON 请求体

库存单据请求体

{
  "mch_id": 0,
  "bill_type": "in",
  "remark": "采购到货",
  "post_now": "1",
  "lines": [
    { "goods_id": 12, "attr_id_list": [3, 8], "qty": 10, "remark": "" }
  ]
}

bill_type:in 入库,out 出库,check 盘点(qty 为实盘数量)。post_now 为 0 时只存草稿,不改可售库存;缺省或 1 时立即过账。过账后小程序看到的可售数量会变化。

相关文档