通过 OpenAPI 获取业务数据

接口授权的获取

登录到 Elven 系统,在需要使用 API 接入业务数据的 Entity 中,进入 Journals 页面,点击 Journals 页面右上角的 Integrations

在弹出的 Integrations 管理窗口中,点击 Add new integration 按钮

为新的数据类型进行命名,然后点击 Add 按钮

当完成了数据类型的添加之后,就可以添加新数据了。点击 Add data 按钮,在下拉菜单中选择“OpenAPI Integration”

在弹出的 API Key/Secret 管理窗口中,点击 Create 按钮

在下一个窗口中,为新创建的 API Key 命名

点击 Create 按钮,完成新 API Key 的创建。

您可以点击每一个 Key/Secret 后面的复制图标,将 Key/Secret 的内容复制到剪贴板中进行使用。

接口授权的使用

在请求头中提供以下参数

elven-api-key  获取到的授权 apiKey
elven-api-sign  base64格式的签名, 例如 LVT5aXA9064gpgZrPXPLJB/Aq9r45yMF10sTZQTteyE=
elven-api-timestamp 以毫秒格式的时间戳, 例如 1721209655047,过期时间是30秒

其他sign的算法如下, 把 时间戳, 请求方式, 请求路由拼在一起, 使用secret进行 HMAC SHA256的加密

// crypto 采用了 https://github.com/nodejs/node/blob/v16.9.0/lib/crypto.js 库
  /**
   * 生成签名
   * apiSecret: BjGiqCWfHGCrl065dlEBWFO5vLj7Hqiexxx,
   * timestamp: 1721205912758
   * method POST
   *  path  /open/v3/businessData
   */
  buildSign(apiSecret: string, timestamp: number, method: string, path: string) {
    const str = `${timestamp}${method}${path}`
    return crypto.createHmac('sha256', apiSecret).update(str).digest('base64')
  }

示例效果

[
  'D7JLJ3awwrTdNXtSrPI1GlYE', // key
  'BjGiqCWfHGCrl065dlEBWFO5vLj7Hqie', // secret
  'POST', // method 一定是大写的
  '/open/v3/businessData' // 不能带域名, 只能以 '/' 开始的的path部分
]
{
  'elven-api-key': 'D7JLJ3awwrTdNXtSrPI1GlYE',
  'elven-api-sign': 'LVT5aXA9064gpgZrPXPLJB/Aq9r45yMF10sTZQTteyE=',
  'elven-api-timestamp': 1721209655047
}

上传业务数据

// 接口使用 application/json 的方式传输数据,数据体的大小为 100KB
// 如果超出100KB需要控制传输数据条数, 或者与Elven联系解决

POST https://openapi.elven.com/open/v3/businessData

header
{
  elven-api-key: aaaa
  elven-api-sign: bbbbbbbbbbbb
  elven-api-timestamp: 22222222
}

body
{
       businessDataTypeName: 'Settlement', // 已经在产品中创建好了
       businessDataSourceName: 'Settlement-2024-07',// 没创建或者已创建的openapi类型的
       businessDataList: [
               {"a": 100, "b": "buy", "c": "2024-07-01 22:33:44"},
               {"a": 100, "b": "sell", "c": "2024-07-01 23:33:44"},
               {"a": 100, "b": "buy", "c": "2024-07-02 06:33:44"},
       ]
}

最后更新于