格物 开放 API通用约定

文档 · 通用规则

通用约定

  • 地址:REST 接口 https://api.gowu.net/v1/…,MCP https://api.gowu.net/mcp;请求与响应都是 JSON(content-type: application/json)。
  • 终端用户由你自己的账号体系管理,把你那边稳定的用户 ID 放进 x-open-user:员工福利与企业采购是员工在你系统里的 ID,消费者购物是每个用户的 open-id。 平台按「appKey + 用户 ID」隔离数据,同一个 ID 在不同 appKey 下是不同的人。
  • 订单号、售后单号、商品 ID 都是不透明字符串,原样保存、原样回传,不要解析格式。
  • 下单请带 idempotencyKey(消费者购物为必填),建议用你系统的订单号或支付单号:响应丢了就用同一个 key 重试,不会重复建单。

x-open-user 必须取自你服务端的登录态,不能直接透传前端传来的值—— 平台只能验证签名,验证不了这个值是不是当前登录的人。

1// ✅ 从你服务端的登录态里取2  app.post("/api/order", requireLogin, async (req, res) => {3    const openUser = req.session.userId;   // 你自己系统里的用户 ID4    const headers = gowuHeaders({ appKey, appSecret, method: "POST",5                              path: "/v1/lm/pay/web-prepare", body, openUser });6    // ...7  });8 9  // ❌ 不要直接用前端传上来的用户 ID10  const openUser = req.body.userId;

限流

  • 只读接口:每个 appKey 每分钟 300 次。
  • 交易类接口(下单、售后、企业管理等用户态接口):每个 appKey 每分钟 60 次。
  • 自助申请沙箱 key:同一 IP 每天 3 次。
  • MCP:工具调用计入同一个 appKey 的上述额度;MCP 连接本身(初始化、列工具等)另有每分钟 600 次的上限。

超限返回 429,按 Retry-After 头等待后重试。正式上线前可以联系我们按业务量调整额度。

1HTTP/1.1 429 Too Many Requests2Retry-After: 123 4{ "code": "RATE_LIMITED", "message": "请求过于频繁" }

状态码与错误

错误统一返回 { "code": "...", "message": "..." },HTTP 状态码同时表意。

状态常见 code含义适用
400BAD_REQUEST参数不合法,message 会说明哪一项通用
401UNAUTHORIZEDappKey 无效或停用、签名错误、时间戳超出 ±300 秒通用
403FORBIDDEN该路径不在这个 appKey 的权限白名单里通用
404NOT_FOUND资源不存在,或不归属你的 appKey通用
429RATE_LIMITED超出限流通用
403NOT_ORG_MEMBER / NOT_ORG_ADMIN这个用户没绑到企业 / 不是企业管理员福利 / 采购
403ORG_NOT_ACTIVE / ORDER_NOT_ALLOWED企业未激活或已停用 / 员工没有采购权限福利 / 采购
400ORG_EGP_NOT_READY企业的企业购交易尚未开通,联系平台福利 / 采购
409ALREADY_BOUND / ORG_EXISTS用户已属于别的企业 / 该信用代码已在平台注册福利 / 采购
409IDEMPOTENCY_CONFLICT平台收款:同一 idempotencyKey 已用于商品或地址不同的订单,换新 key消费者
409ALREADY_PAID / PAY_CLOSED平台收款:这个 key 的订单已支付 / 已超时关闭,响应带 outTradeNo消费者
400PAY_EXPIRED / BAD_RETURN_URL平台收款:支付链接已过付款截止 / returnUrl 不是你登记的域名消费者

经 MCP 调用时,工具返回 isError: true,内容就是上表的 { code, message };连接级的错误见「MCP 常见问题」。

1HTTP/1.1 403 Forbidden2 3{4  "ok": false,5  "code": "FORBIDDEN",6  "message": "该路径不在当前 appKey 的权限内"7}