[关闭]
@15311494814 2021-12-28T13:35:23.000000Z 字数 3124 阅读 543

快财学堂WebApi接口文档

live-cloud


 协议

1,使用HTTP协议进行信息交互,字符编码为UTF-8

2,接口地址统一为: http://xxxxxx

3,暂时只支持POST请求

4,Content-Type: application/json;charset=UTF-8 ,返回json格式

请求频率

接口鉴权

1,除了sign之外,所有body请求参数都需要进行URL编码加密

2,系统参数以及签名规则

<1>body公共参数说明
参数 名称 必填 说明
account 商户号 Y 合作方编号
signature 签名 Y 参数经过加密转码之后的HMAC签名,签名规则见#<3>
timestamp 时间戳 Y unix时间戳
<2>接口返回格式
参数 名称 说明
code 状态码 为0表示请求正常,>0表示异常参见状态码
message 提示信息
exception 异常提示信息 请求失败的提示信息
data 请求返回数据 格式具体见接口
<3>签名规则
签名生成规则如下:
  1. 1,将请求body中的所有请求参数,加上请求的时间戳(timestamp),加商户号(account),按照key升序排序
  2. 2,将key和它对应的value拼接成一个字符串。按步骤1中顺序,把所有键值对字符串拼接成一个字符串。
  3. 如: body ->
  4. {"a":"a","b":"b","c":"c","d":"是哒是哒省点钱我的亲戚到青岛去@!#sad","account":"1000","timestamp":1598352333703}
  5. 排序拼接后为:
  6. parm ->
  7. aaaccount1000bbccd是哒是哒省点钱我的亲戚到青岛去@!#sadtimestamp1598352333703
  8. 3,将拼接后的字符串URLEncode编码 :
  9. parm ->
  10. aaaccount1000bbccd%E6%98%AF%E5%93%92%E6%98%AF%E5%93%92%E7%9C%81%E7%82%B9%E9%92%B1%E6%88%91%E7%9A%84%E4%BA%B2%E6%88%9A%E5%88%B0%E9%9D%92%E5%B2%9B%E5%8E%BB%40%EF%BC%81%23sadtimestamp1598352333703
  11. 4, 使用我们给的商户密钥(secretKey) 进行HmacMd5加密,再将二进制转化为大写的十六进制字符串,并大写
对应JAVA demo:
  1. public class HmacMd5Encypter {
  2. /**
  3. * 将请求参数按照HmacMd5加密
  4. * @param params
  5. * @param secretKey
  6. * @return 大写的MD5加密字符串
  7. * @throws IOException
  8. */
  9. public static String encryptRequest(Map<String,Object> params, String secretKey ) throws IOException {
  10. /**1,检查参数是否已经排序*/
  11. String[] keys = params.keySet().toArray(new String[0]);
  12. Arrays.sort(keys);
  13. /**2,把所有参数名和参数值串在一起*/
  14. StringBuilder query = new StringBuilder();
  15. for (String key : keys) {
  16. Object value = params.get(key);
  17. if (!StrUtil.isEmpty(key) && !ObjectUtil.isEmpty(value)) {
  18. query.append(key).append(value);
  19. }
  20. }
  21. Console.log(query.toString());
  22. /**3,URL encode*/
  23. String encode = URLEncoder.encode(query.toString(), "UTF-8");
  24. /**3,HMAC加密*/
  25. byte[] bytes = encryptHMac(encode, secretKey);
  26. // 第四步:把二进制转化为大写的十六进制
  27. return byte2hex(bytes);
  28. }
  29. private static byte[] encryptHMac(String data, String secret) throws IOException {
  30. byte[] bytes;
  31. try {
  32. SecretKey secretKey = new SecretKeySpec(secret.getBytes(StandardCharsets.UTF_8), "HmacMD5");
  33. Mac mac = Mac.getInstance(secretKey.getAlgorithm());
  34. mac.init(secretKey);
  35. bytes = mac.doFinal(data.getBytes(StandardCharsets.UTF_8));
  36. } catch (GeneralSecurityException gse) {
  37. throw new IOException(gse.toString());
  38. }
  39. return bytes;
  40. }
  41. private static String byte2hex(byte[] bytes) {
  42. StringBuilder sign = new StringBuilder();
  43. for (byte aByte : bytes) {
  44. String hex = Integer.toHexString(aByte & 0xFF);
  45. if (hex.length() == 1) {
  46. sign.append("0");
  47. }
  48. sign.append(hex.toUpperCase());
  49. }
  50. return sign.toString();
  51. }
  52. public static void main(String[] args) throws IOException {
  53. String key = "1df44eda149109cce861f061766b1684b26917d7";
  54. JSONObject mao = JSONObject.parseObject("{\n" +
  55. "\t\"a\": \"a\",\n" +
  56. "\t\"account\": \"1000\",\n" +
  57. "\t\"b\": \"b\",\n" +
  58. "\t\"c\": \"c\",\n" +
  59. "\t\"d\": \"是哒是哒省点钱我的亲戚到青岛去@!#sad\",\n" +
  60. "\t\"signature\": \"115A4124C385A4E2C14B76D06FED30D3\",\n" +
  61. "\t\"timestamp\": 1598352333703\n" +
  62. "}");
  63. mao.remove("signature");
  64. Console.log(mao);
  65. Console.log(JSON.toJSONString(mao));
  66. String encryptRequest = encryptRequest(mao, key);
  67. Console.log(encryptRequest);
  68. }
4>生成的签名(signature)放入接口的请求body中,最终接口的请求body参数如下
  1. {
  2. "account": "1000",
  3. "timestamp": 1598352333703,
  4. "signature":"115A4124C385A4E2C14B76D06FED30D3",
  5. "xx":"xxx"...
  6. }

课程管理

获取课程信息

批量获取信息(ids)

获取指定时间段的课程信息


广播

发送事件


用户管理


用户授权

  1. [post] /openApi/vistor/partnerCustomerLogin
  2. body :

聊天信息


获取课程聊天记录(分页)

访客信息

获取课程访客记录(分页)

回调(一个回调接口,不同的key)

创建课程的推送

统计数据

查询在线人数

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注