软猫引擎API开放平台
  1. 接口安全API(必看)
软猫引擎API开放平台
  • 接口安全API(必看)
    • 重要说明
    • 数据签名与验签方式
    • 获取AccessToken
      POST
  • 用户基础API
    • 获取永久用户标识
      • 获取永久用户标识UserId(根据临时用户标识userCode)
      • 获取永久用户标识UserId(根据已注册的手机号码)
    • 用户登录/退出
      • 发送短信验证码(用户登录)
      • 用户登录(通过短信验证码)
      • 用户登录(通过密码)
      • 用户退出登录
    • 用户注册
      • 发送短信验证码(用户注册)
      • 上传用户头像(用户注册)
      • 用户注册
    • 修改用户登录密码
      • 发送短信验证码(修改用户登录密码)
      • 修改用户登录密码
    • 修改用户安全密码
      • 发送短信验证码(修改用户安全密码)
      • 修改用户安全密码
    • 修改用户手机号码
      • 发送短信验证码(修改用户手机号码-新手机号码)
      • 发送短信验证码(修改用户手机号码-原手机号码)
      • 修改用户手机号码
    • 用户资料
      • 获取用户资料
      • 获取用户等级
      • 获取用户职称
      • 设置用户头像
      • 设置用户昵称
      • 设置用户性别
      • 设置用户所在地
    • 用户配置
      • 配置Key说明
      • 读取用户配置
      • 批量读取用户配置
      • 修改用户配置
  • 用户收件地址API
    • 获取用户的收件地址列表
      POST
    • 获取用户的收件地址(根据id获取)
      POST
    • 添加用户收件地址
      POST
    • 修改用户收件地址
      POST
    • 删除用户收件地址
      POST
    • 设置默认用户收件地址
      POST
  • 用户资产API
    • 余额配置
    • 积分配置
    • 代币配置
    • 用户银行卡
      • 获取支持的银行列表
      • 验证银行卡号是否正确
      • 绑定用户银行卡
      • 解绑用户银行卡
      • 获取已绑定的用户银行卡列表
  • 文件API
    • 上传临时图片文件
      POST
    • 上传临时视频文件
      POST
    • 上传临时音频文件
      POST
  • 系统功能API
    • 功能Key说明
    • 获取所有已开通的功能列表
    • 验证是否已开通指定功能
  • 行政区划API
    • 获取省市区树
    • 获取省份列表(一级行政区划)
    • 获取城市列表(二级行政区划)
    • 获取区/县/镇列表(三级行政区划)
  • 收银台API
    • 获取订单支付句柄(用于发起支付)
    • 发起余额支付
    • 发起积分支付
    • 发起代币支付
    • 判断是否已开通微信支付
    • 发起微信支付
    • 判断(微信支付)订单是否已付款
    • 判断订单是否已付款
  • 数据模型
    • 标准响应模型
    • 用户银行卡数据模型
    • 用户收件地址数据模型
    • 标准响应模型 Copy
  1. 接口安全API(必看)

数据签名与验签方式

为了防止数据被劫持修改,本系统的数据采用以下签名与验签方式:#

1.假设要签名的JSON数据对象如下:
{
  "code": 1,
  "codeEn": "Success",
  "msg": "请求成功",
  "randStr": "5YCy-9L6b5VD4vNO_7UVq1",
  "requestId": "5438695a-4f53-4971-a64f-b3bb01210731",
  "sign": null,
  "time": 1766424739444,
  "paramNullTest":null,
  "data": {
    "param1": 1382832,
    "param2": 1766426122236,
    "param3": "1234567890",
    "param4": null
  }
}
2.取出json数据对象的一级且属性值非null且属性名非sign的属性名key和属性值value进行key=value格式拼接,并根据属性名key进行ASCII字典序(升序)排序,具体如下:
code=1

codeEn=Success

data={"param1": 1382832,"param2": 1766426122236,"param3": "1234567890","param4": null}

msg=请求成功

randStr=5YCy-9L6b5VD4vNO_7UVq1

requestId=5438695a-4f53-4971-a64f-b3bb01210731

time=1766424739444
3.然后将上述获得的字符串用字符&连接起来,得到待签名字符串①
code=1&codeEn=Success&data={"param1": 1382832,"param2": 1766426122236,"param3": "1234567890","param4": null}&msg=请求成功&randStr=5YCy-9L6b5VD4vNO_7UVq1&requestId=5438695a-4f53-4971-a64f-b3bb01210731&time=1766424739444
4.再将APP秘钥(AppSecret)拼接到字符串最后,拼接字符串为&appSecret=APP秘钥:
假设APP秘钥(AppSecret)为
eDBMGX9R6AcXcIjc7mN66IMzKUD3KnzodN+7tzwAAO53EFN
则对待签名字符串①拼接得到待签名字符串②,如下:
code=1&codeEn=Success&data={"param1": 1382832,"param2": 1766426122236,"param3": "1234567890","param4": null}&msg=请求成功&randStr=5YCy-9L6b5VD4vNO_7UVq1&requestId=5438695a-4f53-4971-a64f-b3bb01210731&time=1766424739444&appSecret=eDBMGX9R6AcXcIjc7mN66IMzKUD3KnzodN+7tzwAAO53EFN
5.最后将待签名字符串②进行求MD5,获得32位小写MD5值,就是签名值:
868c4ad016a567a0070a0e92afe7a07e
6.将签名值写入到JSON数据对象中的sign属性,得到最终JSON数据对象,如下:
{
  "code": 1,
  "codeEn": "Success",
  "msg": "请求成功",
  "randStr": "5YCy-9L6b5VD4vNO_7UVq1",
  "requestId": "5438695a-4f53-4971-a64f-b3bb01210731",
  "sign": "868c4ad016a567a0070a0e92afe7a07e",
  "time": 1766424739444,
  "paramNullTest":null,
  "data": {
    "param1": 1382832,
    "param2": 1766426122236,
    "param3": "1234567890",
    "param4": null
  }
}
7.验签流程与签名流程完全相同,只需判断签名值sign是否正确即可。
修改于 2025-12-22 10:00:40
上一页
重要说明
下一页
获取AccessToken
Built with