OPEN_API接口文档
  1. 文档
OPEN_API接口文档
  • 文档
    • 接口文档
    • 云函数最佳使用
    • CLI使用教程
    • 普通请求
    • 加密请求
    • 接口管理-接口拓展
    • 常见问题
      • 通用解答
      • 功能答疑
  • 单码接口
    • 获取单码信息接口
      GET
    • 单码登出
      GET
    • 单码心跳接口
      GET
    • 单码登录
      GET
    • 单码解绑
      GET
  • 会员接口
    • 用户登录
      GET
    • 获取会员信息(已登录)
      GET
    • 用户注册
      GET
    • 用户登出
      GET
    • 用户心跳
      GET
    • 获取会员信息(未登录)
      GET
    • 用户解绑
      GET
    • 用户充值
      GET
    • 修改密码(已登录)
      GET
    • 修改密码(未登录)
      GET
    • 修改昵称
      GET
    • 查询工单类型
      GET
    • 添加新的反馈主题
      GET
    • 获取已登录用户的所有反馈主题
      GET
    • 获取反馈主题下的聊天记录
      GET
    • 发送聊天消息
      GET
  • 通用接口
    • 获取程序变量
    • 获取程序版本列表
    • 获取最新版本
    • 云函数
    • 设置私有数据
    • 获取私有数据
  1. 文档

加密请求

前言#

在查阅加密对接前,您应该已经熟悉普通对接,且可以完成接口对接
您应当对以下知识有基本概念
加密算法
保护数据安全,通过将明文转为字节码,通过算法对字节码进行偏移和计算变为新的字节码组
编码
将加密后的字节码组通过16进制等编码方式重新编码为字符串
数字签名
数字签名是利用签名摘要算法(MD5、SHA1、SHA256等)不可逆算法,将字符串计算为一串定长的新字符串,且不同的字符串计算出来的新字符串一定不同(排除哈希碰撞)

加密规则配置#

接下来我们将带您完整的利用接口安全进行一个接口的加密演示
本文将不涉及代码,由JSON的格式向您直观的查看加密流程
假设后台配置的加密方式为
加密方式:AES加密
加密编码方式:16进制编码
请求加密方式:全部加密
响应加密方式:全部加密
随机数防劫持:开
签名方式:MD5
服务端签名验证时间差:5000
签名计算规则:方式二

假定我们要请求单码登录接口#

1、获取公共参数#

{
  "appId": 1,
  "timestamp": "1712386078465",
  "safeCode": "8731897398274"
}
以上参数中
appId为您的应用编号
timestamp为当前时间的时间戳(13位)
safeCode位您生成的随机数

2、拼接专属参数#

通过查看接口文档
接口列表 -> 单码登录接口后的查看按钮 -> 请求参数
可知专属参数为card
将card拼接到上述的公共参数中
变为
{
  "appId": 1,
  "timestamp": "1712386078465",
  "safeCode": "8731897398274",
  "card": "此处是用户输入的单码"
}

3、对请求参数签名#

您需要根据您的签名规则来计算签名
方式一:当前时间戳+APP密钥
即 上面json中的 1712386078465ZVNH8HUW5K3VQZKK
注意,此处的 ZVNH8HUW5K3VQZKK 为APP密钥(从后台获取)
方式二:字典排序法
首先将json变为get请求的参数拼接方式即
appId=1&timestamp=1712386078465&safeCode=8731897398274&card=此处是用户输入的单码
去除appId 即变为
timestamp=1712386078465&safeCode=8731897398274&card=此处是用户输入的单码
然后使用字典排序法即 将参数对 a-z 的方式改变顺序
card=此处是用户输入的单码&safeCode=8731897398274&timestamp=1712386078465
获取到将被签名的字符串后根据您选定的签名摘要算法(MD5、SHA1、SHA256)对其进行签名计算得到新的字符串 aklwhdpia567whfpaow475hf7978ahjl

4、组装签名#

在上一步中已经计算出了签名 aklwhdpia567whfpaow475hf7978ahjl 即为签名值,将其拼接在 signature 后
原本的json
{
  "appId": 1,
  "timestamp": "1712386078465",
  "safeCode": "8731897398274",
  "card": "此处是用户输入的单码"
}
将签名拼接进去变为
{
  "appId": 1,
  "timestamp": "1712386078465",
  "safeCode": "8731897398274",
  "card": "此处是用户输入的单码",
  "signature": "aklwhdpia567whfpaow475hf7978ahjl"
}

5、整体加密#

将上一步骤中得到的json 提取出appId 即 将原本的json变为
{
  "timestamp": "1712386078465",
  "safeCode": "8731897398274",
  "card": "此处是用户输入的单码",
  "signature": "aklwhdpia567whfpaow475hf7978ahjl"
}
接下来将这个json继续拼接为get请求参数拼接的方式即变为(无需排序)
下方将代码换行方便教程展示,实际上并没有换行
timestamp=1712386078465&
safeCode=8731897398274&
card=此处是用户输入的单码&
signature=aklwhdpia567whfpaow475hf7978ahjl
将上述字符串使用您选定的加密算法加密变为
78091768932852983659726350982175982635832gy5f2u3528375892375982365798235ft32d5g23d5uy2f35ui
至此加密完毕

最后一步,拼接请求参数#

构建一个新的json,将第五步中提取出的appId放入变为
{
  "appId": "1"
}
再将第五步中加密完成后的字符串拼接在params后放在json中,则json变为
{
  "appId": "1",
  "params": "78091768932852983659726350982175982635832gy5f2u3528375892375982365798235ft32d5g23d5uy2f35ui"
}

响应#

响应同加密,拿到响应值后直接对其进行解密后即可
您可以根据您自己的需求来对代码进行更高强度的验证
例如:对响应进行验签/验证随机数防止被劫持/验证时间戳等
上一页
普通请求
下一页
接口管理-接口拓展
Built with