支付签名生成算法收藏我的收藏
收藏
我的收藏
以获取游戏币余额的接口为例
原始请求信息
- 支付密钥
key: da8d182e1cashjkulkof6ae22a4a918457
- HTTP 请求方式:
POST
- 请求的 URI:
/api/apps/game/wallet/get_balance
- 请求参数
{ "openid": "fge35vh5h3f2", "appid": "tthdch45hd2df", "zone_id": "1", "mp_sig": "d1f0a41272f9b85618361323e1b19cd8cb0213f2", "access_token": "hds2rt6bhgh5wfg5nf4gdh6", "ts": 1507530737, // 时间戳,单位:秒 "pf": "android" }
签名算法
- 参与签名请求参数,注意与请求参数保持一致(不同接口参与签名的参数不同,具体以各接口中请求参数为准,所有请求参数除了mp_sig以外都要参与签名生成)
{ "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
:(不同接口uri不同,请注意自行替换)
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"
Bug & Tip
- Tip: 支付密钥 不可跨小游戏使用,请确认使用的是当前小游戏的密钥。
- Tip: 支付密钥 不是小游戏的 AppSecret,支付密钥 指的是 开发者后台->功能管理->支付->支付设置->签名密钥。
该文档是否有帮助?