支付签名生成算法

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

原始请求信息

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

签名算法

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