webAPI组包规则 - webAPI
公共提交参数,每个命令都需要提交以下公共参数
请求地址:管理后台-软件列表中获取对应软件API地址
请求类型:post
提交参数:data=URL编码后密文&sign=sign
参数名 参数说明
sid 软件SID,后台添加软件后获得
uuid 通用唯一识别码,每次必须变动,用于校验数据合法性方案之一.
t 客户端10位时间戳
m1 临时封包token(sid+key+t 拼接后取MD5值)
m2 当前程序MD5值,如果开启校验MD5,则此值必填,可于程序运行时动态读取自身MD5值.
m3 moduleMd5,购买授权后获得,如使用dll文件,请传入DLLMD5值,同时在"后台-系统-系统设置"中填写.
mcode 客户端机器码(自行获取机器码,若机器码变动则会提示转绑[如果开启"绑定机器码"])
clientid 客户端运行ID,此ID在软件退出之前不可变动,也就是每次启动都生成一个新的clientid,软件退出即作废.
webkey 通用秘钥(webKey),购买授权后获得.

公共返回参数,每个命令都按如下格式返回
参数名 参数说明
status success为正常 error为错误
code 200为正常,其它为错误,请参照错误码表
msg 错误内容明文,请参照错误码表
token 返回封包token(提交封包中的m1+返回封包中t,拼接后取MD5值)
t 封包时间
uuid 提交封包的UUID
result 数据主体,每个函数返回的数据不同,具体请参照对应函数说明.
result_token 数据主体token,将数据以ASCII首字母递增排序,拼接键名与键值,拼接完毕后加上通信秘钥一起取MD5值.

只需按规则拼接参数后加密传送即可.

首先,封包内参数分为公共参数函数参数:

1.公共参数为所有命令均需要提交的参数

2.函数参数根据不同函数说明决定提交哪个参数.

最上方显示的就是公共参数,无论你调用哪个函数,上方公共参数都需要提交.


参数拼接规则:


1.首先,所有参数以标准JSON格式初始化

{

    "sid":"d6fadd40-7267-4178-9b35-4c8ff61e0c07",

    "uuid":"自行获取UUID",

    "t":"1581773805",

    "m1":"sid+key+t 拼接后取MD5值,key为通讯秘钥,后台添加软件后获得",

    "m2":"当前执行文件的MD5值",

    "m3":"静态模块MD5值,购买授权时获得",

    "mcode":"客户端机器码,自行获取",

    "clientid":"客户端运行ID"

    "webKey","通用秘钥(webKey),购买授权时获得",

    "函数参数1":"根据不同函数要求提交不同参数",

    "函数参数N":"根据不同函数要求提交不同参数",  

}

假设以上参数便是完整需要提交的明文


2.将明文通过UTF-8编码,得到一串经过编码的byte数组.


3.使用DES-CBC算法为编码后字符串进行加密并返回base64编码的加密结果.

    加密密码为通讯秘钥前8位(共8字符),IV向量为通讯秘钥后8位(共8字符)

    例:通信秘钥为:9d8af871e74f5629639544a314adab96  

    则:加密密码为:9d8af871,IV向量为:14adab96

    PS.部分语言可选择加密结果输出类型,此种语言可直接选择返回base64编码的加密结果,部分语言直接返回byte数组,需要额外进行一次base64编码.


4.计算sign值

    sign值可保证数据在通信过程不被篡改,相当于给这段数据签名,服务器将校验这段签名来确定封包是否由客户端发出.

    sign算法自定义:首先在管理后台编辑软件,其中的"客户端sign算法"即为自定义算法,[data]为密文原文,[key]为通讯秘钥.

    sign算法计算:

    假设"客户端sign算法"为:[data]abc[key]123

    假设密文为:hNRQqu9677H1JLU0m8ycBNT+K4uIpL02

    假设通信秘钥为:9d8af871e74f5629639544a314adab96

    那么,"客户端sing算法"中套用最终数据

    hNRQqu9677H1JLU0m8ycBNT+K4uIpL02abc9d8af871e74f5629639544a314adab96123

    则sign取其MD5值为:ad831e853c22c18992f2a47bc104bf70


5.拼接最终封包

    封包在拼接过程中,需要将密文经过URL编码,以保证特殊字符不会再传递过程中丢失

    数据格式为:data=URL编码后密文&sign=sign值

    那么第4部中的数据,最终提交封包为:

    data=hNRQqu9677H1JLU0m8ycBNT%2bK4uIpL02&sign=ad831e853c22c18992f2a47bc104bf70

    由于原密文中只有一个特殊符号+,所以编码后被替换成了%2b或%2B,不区分大小写.

    此时,将获得最终传输封包,只需将这段数据通过POST方法传送到API接口即可.  


工作流程图:


Copyright © 2019-2059 HuWeiDun.Cn All rights reserved.
登记号:2019SR0828127 软著登字第4248884号 冀ICP备19021017号