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"}'