支付签名生成算法
以查询游戏币余额的接口为例
原始请求信息
- 支付秘钥
key: da8d182e1cashjkulkof6ae22a4a918457
- HTTP 请求方式:
POST
- 请求的 URI:
/api/apps/game/wallet/get_balance
签名算法
- 参与签名请求参数
{
"openid":"fge35vh5h3f2",
"appid":"tthdch45hd2df",
"zone_id":"1",
"access_token":"hds2rt6bhgh5wfg5nf4gdh6",
"ts":1507530737,
"pf":"android"
}
- 对参与签名的参数按照
key=value
的格式,并按照参数名ASCII字典序升序排序如下:
stringA="access_token=hds2rt6bhgh5wfg5nf4gdh6&appid=tthdch45hd2df&openid=fge35vh5h3f2&pf=android&ts=1507530737&zone_id=1"
- 拼接
uri
、method
:
stringB=stringA+"&org_loc=/api/apps/game/wallet/get_balance&method=POST"
- 把支付秘钥作为key,使用HMAC-SHA256得到签名
sig=hmac_sha256(key,stringB)
。
sig=hmac_sha256(key,stringB)
="4317496a530d0593fa4365ca87714a12c9e6edd4df1fea5fe1f5e5d6a1781a78"