外观
签名规则
约 415 字大约 1 分钟
指南快速开始
2026-10-19
为保证接口交互的安全性,我司调用贵司、贵司回调我司,使用同一套签名。
基本约定
- 合作方订单号必须唯一。同一
orderId重复发放只对应一笔权益。 - 不是必传的参数可以不传。空字符串和
null不参与签名。 - 平台提供的
appId、appSecret需妥善保管。 timestamp与接收方时间相差超过 5 分钟时,请求会被拒绝。
签名步骤
取 JSON 第一层字段,去掉
sign,去掉空字符串和null。字段名按 ASCII 升序排列。参数名区分大小写。
值为对象或数组时,对象的 key 递归按 ASCII 排序,再序列化为紧凑 JSON(无空格)。数组保持原顺序。
拼成
k1=v1&k2=v2&appSecret={appSecret}。对拼接串做 HMAC-SHA256,密钥为
appSecret的 UTF-8 字节,结果转小写十六进制。
示例
字段 orderId=O1、productCode=P1,密钥 secret。空的 phone 和 sign 本身不参与签名。
待签名字符串:
orderId=O1&productCode=P1&appSecret=secret签名结果:
c576ece731446806bd7e0d487f2b4fdf0a730251a074a41c250f89b7695c1219对象会先按 key 排序再序列化。例如 benefit 为:
{
"couponCode": "ABCD1234",
"rechargeType": "1",
"cardType": 0
}待签名字符串:
benefit={"cardType":0,"couponCode":"ABCD1234","rechargeType":"1"}&orderId=O1&productCode=P1&appSecret=secret签名结果:
9eb1213ab923dc1f53d3399c5a1f7a22d99386cd8fe078dbbc30525e199f211a特别注意以下重要规则:
- 所有参数名按 ASCII 从小到大排序(字典序)。
- 值为空(
null或空字符串)不参与签名。数值0、布尔false要参与。 - 对象序列化后不能有空格,key 必须已排序。