接入指南

系统关系

证书签名系统与业务系统的关系见下图。签发资料由业务方通过api方式提交。

系统关系


Server端接口请求规范

输入参数字符集必须是UTF-8,参数为Json格式。 输入固定上下文信息(参数信息)。它包含的属性:

  1. timestamp时间戳,当前访问客户端系统时间戳明文,必填 ,例如14656332256。
  2. signInfo签名信息,使用固定算法对数据与授权码等信息进行加密后的密文,必填(请参看签名算法)。
  3. bussNo交易流水,该笔交易如果存在流水号,系统将记录,选填。
  4. app_id应用id,由云签平台分配, 必填。
  5. data交易数据,数据格式为base64(jsonStr), 选填,详细请看每个方法输入参数描述。 示例:
    {
    timestamp:14656332256 ,
    signInfo:"",
    bussNo:"",
    app_id:"",
    data:""
    }
    


Server端接口返回规范

返回值是http status code=200服务器相应,由服务器返回的数据,该数据是固定参数json格式Messge,Messge格式如下:

{
  code:0 ,//数字,信息码,如果是0,说明是正常,其他说明错误
  message :”注册成功”,//字符串,具体信息。
  content:{id:0,name:”张三”}  //任意json格式数据或者字符串
}


api参数签名算法

参与签名参数(所有参数大小敏感)如:app_id(渠道码)、timestamp(时间戳)、bussNo(流水号)、data(业务数据)。对所有待签名参数按照参数名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2...)拼接成字符串string1。String1再使用URL键值对的格式加上app_secret(应用密钥--非传输参数)拼接成字符串string2。这里需要注意的是对string2作sha256加密,参数名和参数值都采用原始值,不进行URL转义。即 signInfo=sha256(string2).

示例:


app_id=Wcdd4F5cEdjl6E

timestamp=14656332256

bussNo=20170315009

data=base64(‘{param1:value1,param2:value2}’)=”e3BhcmFtMTp2YWx1ZTEscGFyYW0yOnZhbHVlMn0=”

app_secret=pjaeKm8ESzzAEbbcHFm7GMu3F9LGKpyM


步骤1. 对签名字段排序

对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:app_id=Wcdd4F5cEdjl6E&bussNo=20170315009&data=e3BhcmFtMTp2YWx1ZTEscGFyYW0yOnZhbHVlMn0=&timestamp=14656332256

步骤2. 对签名字段排序后值加入校验密钥

在string1后使用URL键值对的格式拼接成字符串string2:app_id=Wcdd4F5cEdjl6E&bussNo=20170315009&data=e3BhcmFtMTp2YWx1ZTEscGFyYW0yOnZhbHVlMn0=&timestamp=14656332256&app_secret=pjaeKm8ESzzAEbbcHFm7GMu3F9LGKpyM

步骤3. 计算哈希

对string2进行sha256签名,得到signInfo:000dde85d3f1bb3cc0acb269e9ee9d837c165e6607f1e1a49ba9023f00120821

注意事项
1. app_secret是云签分配的密钥,只作数据签名使用
2. 参数为空(null或空字符串)不参与签名


签名验证


步骤1:计算哈希

通过上文的 签名算法 计算出哈希值

步骤2:比较哈希

比较计算所得哈希值与signInfo值是否一致,若不一致说明数据被篡改


实例demo所需jar包下载

签名示例jar(右键另存为)
HttpsClientUtil.java(右键另存为)

其中HttpsClientUtil依赖httpclient,如果没有,maven可以使用一下的依赖引入:

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpcore</artifactId>
    <version>4.4.1</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.4.1</version>
</dependency>


results matching ""

    No results matching ""