sign生成规则
支付sign 生成规则
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appid | String | 必填 | 应用ID |
app_order | String | 必填 | 应用服务器订单号 |
amount | Integer | 必填 | 订单金额,单位为分,最小为 200 |
goods_name | String | 必填 | 商品名 |
user_data | String | 必填 | 透传数据,长度不超过128的字符串(无格式,仅包含数字和字母);或者长度为零字符串; |
ts | Integer | 必填 | h5服务器时间戳 |
sign | String | 必填 | 校验的 sign |
sign 字段生成规则
- 将上表中除 sign 外的非空字段按照 ASCII 码排序
- 用 = 和& 进行拼接
- 再拼接 &key=api secret
- 最后MD5大写,生成 sign 的值
支付sign 例子
字段 | 值 | 说明 |
---|---|---|
appid | ee1884a9ec0f7f50a7e39636c0d7106f | 应用ID, 从 后台获取 |
api_secret | cf9cab9b922b43dc26252ac25b42829b | api 加密串,从后台获取 |
amount | 1000 | |
app_order | Test_1535428860481 | |
goods_name | 斗地主 | |
ts | 1535699595 | 透传数据 |
user_data | test | 透传数据 |
将 appid, amount, app_order, goods_name, ts, user_data这几个字段排序拼接得到字符串:
amount=1000&app_order=Test_1535428860481&appid=ee1884a9ec0f7f50a7e39636c0d7106f&goods_name=斗地主&ts=1535699595&user_data=test
最后添加上 &key=cf9cab9b922b43dc26252ac25b42829b 得到字符串:
amount=1000&app_order=Test_1535428860481&appid=ee1884a9ec0f7f50a7e39636c0d7106f&goods_name=斗地主&ts=1535699595&user_data=test&key=cf9cab9b922b43dc26252ac25b42829b
对上述字符串进行MD5 加密然后转大写得到 F2DF76B030BDAC12B198268EFDC52973
字符串.
注: 上述的 appid 和 api secret 为测试用的应用ID 和通信加密串
let md5 = require('md5') // npm install md5
let sign = signMake(paramMake())
function paramMake() {
return {
amount: 1000,
app_order: 'Test_1535428860481',
appid: 'ee1884a9ec0f7f50a7e39636c0d7106f',
goods_name: '斗地主',
ts: 1535699595,
user_data: 'test',
}
}
function signMake(param) {
let api_secret = 'cf9cab9b922b43dc26252ac25b42829b'
let keys = Object.keys(param).sort((a,b)=>a.localeCompare(b))
let pairs = keys.map(e=>`${e}=${param[e]}`).concat(`key=${api_secret}`)
let s1 = pairs.join('&')
let sign = md5(s1).toUpperCase()
return sign
}
登录sign 生成规则
字段 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appid | String | 必填 | 应用ID |
ts | String | 必填 | 时间戳 |
sign | String | 必填 | 校验的 sign |
sign 字段生成规则
- 将上表中除 sign 外的非空字段按照 ASCII 码排序
- 用 = 和& 进行拼接
- 再拼接 &key=api secret
- 最后MD5大写,生成 sign 的值
例子
字段 | 值 | 说明 |
---|---|---|
appid | ee1884a9ec0f7f50a7e39636c0d7106f | 应用ID, 从 后台获取 |
ts | 1535698503 | 时间戳 |
将 appid, ts这几个字段排序拼接得到字符串:
appid=ee1884a9ec0f7f50a7e39636c0d7106f&ts=1535698503
最后添加上 &key=cf9cab9b922b43dc26252ac25b42829b 得到字符串:
appid=ee1884a9ec0f7f50a7e39636c0d7106f&ts=1535698503&key=cf9cab9b922b43dc26252ac25b42829b
对上述字符串进行MD5 加密然后转大写得到 C44CEC4953AB1723665F3AAD1CFC1735 字符串.
注: 上述的 appid 和 api secret 为测试用的应用ID 和通信加密串