Skip to content

C端对接网关及签名说明

deathearth edited this page Mar 5, 2019 · 2 revisions

C端对接网关及签名说明


一、获取请求地址

C端人员登入管理台,依次打开 网关接口 -> 接口管理 -> 接口详情 普通接口信息

2-1

回调接口信息

2-2

接口地址,就是可以调用的请求地址了。 需要注意的几个方面

  1. 接口的请求类型
  2. 接口是否需要鉴权
  3. 接口是否需要登录
  4. API请求参数信息
  5. Api请求示例|响应参数一览
  6. 接口的类型是普通,还是回调。请求地址url是不一样的

如果不知道怎样请求,可以从接口列表点击测试,进入如下页面 2-3 按照这个配置信息去调用。类似模拟postman请求调用

二、参数的三种传递形式说明:

1.url固定参数

/api?&client=android&clientversion=1.0.0&apiName=ucenter.login

client:       客户端类型,取值范围ios、android、wap、web
clientversion: 客户端版本,是指app版本
apiName:      接口名称
 

2.Header参数

appKey: app的唯一标识 【必须设置】
sign: 根据签名算法算出的sign值【如果接口需要授权必须设置】
auth: 登录态签名【如果接口需要登录才能访问,需要设置此参数】
userId: 用户登录的userId【如果接口需要登录必须设置】
deviceId: 设备id(服务端生成,如果有必须设置)
t: 接口访问的时间戳(格式系统毫秒数)
 

3.Body参数 

json对象一般是对于普通接口而言。   回调接口可能存在一些特殊情况,如:xml格式,string字符串格式等。

 

三、签名规则

举例说明:例如请求的接口为uic.userquery.baseinfo名称的api,请求的url为:
http://127.0.0.1:8080/api?client=wap&clientVersion=1.0.0.1&apiName=uic.userquery.baseinfo
header参数为:
appKey= 84A22D9C7966C358CCF9FD0A94E443EA
sign=9DE03CD8AB0D0D6D626FB353DF7629FC
auth=9DE03CD8AB0D0D6D626FB353DF762456
userId=10C42A702E68OI90H050840AF2423811
deviceId=123456
t=15422334455

先按照顺序进行排名:apiName、appKey、client、clientVersion、deviceId、t、userId

然后MD5计算
sign=md5(k1=v1&k2=v2...&appSecret=xx&contentLength=xx) 去掉其中的连接符&
GET:contentLength=-1  (经过测试,如果body中没有内容,java中request.getContentLength是-1)
POST:contentLength=body长度

这里的k1、k2等表示url和head里面的参数,并且是按照字母序进行排序,示例如下
sign=md5(urlencode(apiName=uic.userquery.baseinfoappKey=84A22D9C7966C358CCF9FD0A94E443EAclient=iosclientversion=1.0.0deviceId=123456t=15422334455userId=10C42A702E68OI90H050840AF2423811appSecret=xxcontentLength=xx))

已登录
auth=md5(sign+token)
举例:
假设 sign=111111 token=aaaaaa,则auth=md5(111111aaaaaa)

其他说明
  • md5和urlencode编码是utf8
  • 如果header 或 url 参数值是null或空串,不参与生成签名
  • 最终的sign和auth签名字符串,都是小写英文字母, 如:cf7009a1ea4de30bb4eeefcb1488e83b
  • 回调类型的接口不参与签名计算
Clone this wiki locally