platform-auth-version:固定写死 v3
platform-auth-timestamp:服务器时间戳,毫秒数
platform-auth-key-id:秘钥keyId,第三方平台由GSC平台统一进行分配; 产品接入以平台的productId+localeId进行替代(如GMT接入);
platform-auth-checksum:请求数据计算后的校验码
校验码即 checkSum
是为了防止双方通信过程中交换的数据被篡改的一种通用校验方式。 由交换数据双方按照某种规则组装生成请求明文数据, 然后追加上当前时间戳和双方协商好的秘钥[需要线下获取] ,生成校验码明文, 再通过对明文进行散列值计算获取到数据指纹即校验码, 请求方把时间戳、校验码版本号、秘钥ID以及校验码放到Header头中发送给服务方,服务方获取后再次按照相同进行计算数据指纹, 通过比较自己生成和请求方传递过来得数据指纹是否一致来确定数据是否合法。
本次请求body体中的数据
{"yyyymm":"202008","localeId":"01"}
假设平台分配的秘钥key-id(秘钥ID)为1001, 当前的毫秒时间戳为:1600422195516, key(秘钥)为:eea2e42511c3294d47b4d2deaf4ea33c
组装后的校验码明文串如下(注意原始数据和时间戳以及密码key之间通过&符号连接):
{"yyyymm":"202008","localeId":"01"}&1600422195516&eea2e42511c3294d47b4d2deaf4ea33c
生成校验码如下
be6f17515783ae719710fd195461f377
注意:此时该请求的header头的四个校验码相关的header值如下
platform-auth-version:v3
platform-auth-timestamp:1600422195516
platform-auth-key-id:1001
platform-auth-checksum:be6f17515783ae719710fd195461f377
校验码即 checkSum
是为了防止双方通信过程中交换的数据被篡改的一种通用校验方式。 由交换双方按照某种顺序把参与校验的数据拼接在一起, 再追加上双方协商好的秘钥
[需要线下获取] ,生成校验码明文
, 再通过对明文进行散列值计算获取到数据指纹
即校验码
, 请求方把原请求参数和校验码一并发送给服务方,服务方获取后再次按照相同顺序进行数据拼接,并追加上协商好的秘钥
,用相同算法再次计算散列值,获取校验码
, 通过比较自己生成和请求方传递过来得校验码是否一致来确定数据是否合法。
接口文档中标注是验签参数
的数据,按其参数key进行字典排序(ASCII码从小到大排序),然后取每个参数的value,进行拼接, 不同参数之间使用英文&
进行分割,最后再追加上协商好的秘钥,得出校验码明文。
校验码散列值算法
:MD5, 注意取32位md5,并转小写。
原参数及值
{
"type":"2",
"gameServerId":"1",
"gameServerName":"未来之城",
"roleId":"5f438152-258d-47ff-82bf-c7ba314a4fce",
"roleName":"doublinglee_微信",
"roleLevel":"0",
"roleVipLevel":""
}
假设约定秘钥如下
b306ab1d0421ad3c73ad2c409621669c
生成校验码明文如下
1&未来之城&5f438152-258d-47ff-82bf-c7ba314a4fce&0&doublinglee_微信&&2&b306ab1d0421ad3c73ad2c409621669c
生成校验码如下
67dcc59acaa6220214c81d6aa43bf9cf
上海中清龙图软件有限公司