JSAPI 测试收银台

服务端完成 HMAC-SHA256 签名后转发到平台开放 API
这是真实资金测试:被选中的商户号收多少,钱就进那个主体的对公账户。 建议先用 0.01 元验证链路。
签名为什么在服务端:开放 API 的 X-Signature 是 HMAC-SHA256(appSecret, 原文)。appSecret 一旦出现在前端代码里, 任何打开这个页面的人都能读到它,然后以该商户身份伪造下单。 所以本页只把参数发给本机的签名服务(cashier_signer.py), secret 只从服务器 env 读,不落盘、不回显、不进日志。

下单参数

签名口径(与后端逐字对齐)

签名原文 = method + path + timestamp + nonce + body

  method    固定 "POST"
  path      "/open/orders"
  timestamp 秒级 Unix 时间戳字符串
  nonce     16 位随机十六进制
  body      JSON 序列化后的请求体(无分隔符紧凑格式)

X-App-Id     应用 ID
X-Timestamp  时间戳(与签名原文里用的是同一个值)
X-Nonce      随机串
X-Signature  Base64(HMAC-SHA256(appSecret, 签名原文))

注意:签名用的 body 与实际发出的 body 必须是同一份字节。
两个地方若用了不同的序列化结果,一定对不上,且报错只说「签名错误」。