🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 接口加密 ### **流程** > step1:客户端加密。包括head加密和请求参数加密,其中参数加密会依赖head加密,两者客户端都有封装方法,详情请参考客户端文档。 > step2:服务端验证head加密是否正确。结果正确:放行继续执行,结果错误:返回 ~~~ echo json_encode([ 'code'=>551, 'data'=>[], 'msg'=>"签名验证失败", 'tmcode'=>1 ]); ~~~ > step3:调用服务端解密函数(tmDecrypt($data=""))解密客户端加密的参数。 > step4:业务操作.... > step5:调用服务端加密函数(tmEncrypt($data = ""))加密需要加密的返回参数。 > step6:客户端接收返回参数并调用客户端解密函数(详情方法见客户端文档)解密服务端加密过的返回参数。 ### **特别说明** > 1:具体加密的内容由开发者决定。 > 2:内容的加解密都依赖于head加密,因此需要用到加密解密方法,必须传客户端封装的head内容。 > 3:request和response两者可以同时都加密也可以只加密其中的一个,具体情况有开发者自己决定。 ### **解密功能方法** > 1.直接使用tmDecrypt($data="")函数,该方法已经写在common函数库中 > 2: 入参:待解密字符串 > 出参:解密后的字符串 > 注意:该解密函数只能解密天马客户端或天马web前端提供的加密函数加密的数据,并且客户端发送请求的head中必 须加入客户端封装得head参数 ### **加密公共函数** > 1.直接使用tmEncrypt($data = "")函数,该方法已经写在common函数库中 > 2: 入参:待加密字符串,如果想对数组加密可以先转成json字符串再传进来 > 出参:加密后的字符串 > 注意:加密后的数据可以通过天马客户端或天马web前端提供的解密方法解密,并且客户端发送请求的head中必须加入客户端封装得head参数 ### **服务端发送加解密url请求公共类** > 1.使用:use app\\extend\\server\\Encrypt; > 2: 该类中包含加解密方法,发送请求方法,需要结合使用。 > 3:调动demo:app\\api\\controller\\Serverencryptdemo ## 接口协议和规则 **1.文档描述** 本文档主要用于在天马项目提供的一些基础服务接口 **2.接口统一约定** 2.1 通信协议 所有接口均采用HTTP协议,并且都采用HTTP POST/GET/PUT/DELETE的方式来调用。详情见下方请求示例。 **** 2.2 HTTPHeaders公共参数 | 参数 | 含义 | 类型 | | --- | --- | --- | | token | 用户token | string | | tmencrypt | 是否加密(0:否 1:是) | string | | tmtimestamp |时间戳(秒) | string | | tmrandomnum |随机字符串 | string | **** 2.3 数据类型 数据格式采用JSON格式数据包装,并且返回的数据编码均为UTF-8格式。对于不同的接口,所返回的JSON格式的数据会有所不同,在之后的示例中会给出。 **** 2.4 编码格式 接受UTF-8编码格式的编码信息。传入的参数和返回的结果都是UTF-8格式的。需要注意的是如果采用HTTP GET 请求传递参数时,请求的参数URL需要进行 URL Encode 之后,再进行传递。否则会造成乱码。 **** 2.5 错误码定义 针对于不同的接口,正确的返回结果会在每个接口的返回结果中单独定义,如果在请求和相应的过程中发生错误,那么错误的返回则是统一的格式。 **** | code | msg | | --- | --- | | 200 | 成功 | | 500 | 调用失败原因描述 | **** >### *其他约定* >通过HTTP传给接口的参数区分大小写。严禁使用测试接口地址,做线上业务应用。