支付签名生成算法

以查询游戏币余额的接口为例

原始请求信息

  1. 支付秘钥 key: da8d182e1cashjkulkof6ae22a4a918457
  2. HTTP 请求方式: POST
  3. 请求的 URI: /api/apps/game/wallet/get_balance

签名算法

  1. 参与签名请求参数
{
    "openid":"fge35vh5h3f2",
    "appid":"tthdch45hd2df",
    "zone_id":"1",
    "access_token":"hds2rt6bhgh5wfg5nf4gdh6",
    "ts":1507530737,
    "pf":"android"
}

  1. 对参与签名的参数按照key=value的格式,并按照参数名ASCII字典序升序排序如下:
stringA="access_token=hds2rt6bhgh5wfg5nf4gdh6&appid=tthdch45hd2df&openid=fge35vh5h3f2&pf=android&ts=1507530737&zone_id=1"
  1. 拼接urimethod
stringB=stringA+"&org_loc=/api/apps/game/wallet/get_balance&method=POST"
  1. 把支付秘钥作为key,使用HMAC-SHA256得到签名sig=hmac_sha256(key,stringB)
sig=hmac_sha256(key,stringB)
   ="4317496a530d0593fa4365ca87714a12c9e6edd4df1fea5fe1f5e5d6a1781a78"