格物 开放 API鉴权与签名

REST API · 接入准备

鉴权与签名

每个请求都带 x-app-key。按接口性质分三档:

  • 免鉴权:健康检查。
  • 用户态:下单、售后、地址、额度等。必须签名,并用 x-open-user 声明「这次是哪个用户在操作」。
  • 服务端签名(仅员工福利、企业采购):查自己的企业、绑定 / 解绑员工。由你的服务端以接入方身份调用,必须签名,不带 x-open-user。

HMAC 签名(v2)

配置 app_secret 后,该 appKey 的所有请求都要签名,带 x-timestamp(Unix 秒,±300 秒内有效)、x-nonce(每次请求一个随机串)、x-sign-version: 2 与 x-signature。签名串是下面八段用换行连接:

OCP-SIGN-V2(固定字符串)
时间戳
nonce
请求方法(大写)
纯路径(不含域名与 query)
规范化 query:解码后按 key、value 升序,各自 encodeURIComponent,用 & 连接;没有则为空串
sha256(请求体原文),无请求体时取空串的 sha256
x-open-user 的值,不带则为空串

x-signature = HMAC-SHA256(app_secret, 签名串) 的十六进制。不带 x-sign-version 的请求暂按旧版(v1)校验, 过渡期结束后只接受 v2,新接入请直接用 v2。

密钥只放你自己的服务端:小程序和 App 的包可以被解出来,前端请走你的后端中转。

1curl -X POST "https://api.gowu.net/v1/lm/pay/web-prepare" \2  -H "x-app-key: $GOWU_APP_KEY" \3  -H "x-timestamp: $TS" \4  -H "x-nonce: $NONCE" \5  -H "x-sign-version: 2" \6  -H "x-signature: $SIG" \7  -H "x-open-user: u-001" \8  -H "content-type: application/json" \9  -d '{"items":[{"productId":"…","skuId":"…","quantity":1}],"receiver":{"receiver":"张三","receiverPhone":"138…","divisionCode":"330106","townDivisionCode":"330106001","addressDetail":"…"},"idempotencyKey":"your-order-20261015-0001","device":"pc","returnUrl":"https://your-domain.example.com/pay/done"}'