MultiMarkets API Docs
HomeGitHubReferenceLanguage
  • 概览
  • 快速开始
    • 服务状态
  • CLIENT API
    • 概述
    • 接入说明
      • 签名
      • 请求
      • 限速
      • 错误码
      • API地址
      • API代码
    • 授权访问
      • 人机校验
    • 客户管理
      • 客户注册
      • 更换令牌
      • API管理
        • 申请API
        • 设置权限
        • 删除API
    • 报价接口
      • 接入说明
      • 限制说明
      • 错误码说明
      • 订阅接口
        • 实时报价订阅
        • 盘口成交订阅
        • 取消报价订阅
      • 查询接口
        • 心跳
        • K线获取
    • Open API
      • 说明
        • 签名
        • 请求
        • 错误码
        • API地址
      • 下单流程
      • 基础数据
        • 产品简要数据
      • 客户资料
        • 客户基础信息
      • 交易接口
        • 合约下单
      • 消息接口
        • 获取消息Token
        • 消息订阅说明
      • 更多接口
    • Auth2 API
      • 说明
      • 获取授权码
      • 获取访问令牌
      • 获取用户信息
      • 刷新访问令牌
    • 更多...
  • Manager API
    • 概述
    • 接入说明
      • 签名
      • 请求
      • 限速
      • 错误码
      • API地址
      • API代码
    • 授权访问
    • 基础数据
      • 获取通用字典列表
      • 获取公司币种权限
    • 产品列表
      • 产品信息列表
    • 客户管理
      • 客户列表
      • 客户注册
      • 客户详情
      • 客户组列表
      • 账户信息
    • 资金管理
      • 额度调整
      • 余额查询
    • 数据推送
    • 更多...
  • BRIDGE API
    • 概述
    • 接入说明
      • 说明
      • 签名
      • 请求
      • 限速
      • 错误码
      • 产品清单
    • 基础数据
      • 获取通用字典列表
      • 获取公司币种权限
    • 产品数据
      • 产品信息列表
      • 产品规则列表
    • 客户管理
      • 客户注册
      • 客户列表
      • 客户详情
      • 客户销户
    • 账户管理
      • 添加账户
      • 更新账户
      • 查询账户
      • 删除账户
    • 交易接口
      • 查询余额
      • 查询入金记录
      • 查询出金记录
      • 查询划转记录
      • 下单
      • 查询订单
      • 订单列表
      • 成交记录
      • 当前挂单
      • 撤单
    • 消息订阅
      • 通知消息说明
      • Webhook订阅
      • 信息回调通知
  • Webhook API
    • 概述
    • 查询用户账户余额
    • 执行外部系统调额
    • 取消外部系统调额
  • Message API
    • 概述
    • 自定义消息API
  • WEB IFRAME
    • 介绍
    • 流程说明
  • FAQ
    • 接口如何申请apikey?
    • 公钥的用途是什么?
    • 接口请求超时时间是多少?
    • 支持的开发语言?
    • API调用限制有哪一些?
    • 如何更安全使用API?
  • API Reference
    • Manager API
    • Client API
  • CHANGELOGS
    • API
Powered by GitBook
On this page
  • 流程描述
  • 交互流程图
  • 注册绑定账户
  • 获取一次性令牌
  • 打开交易页面
  • 换取有效令牌
  1. WEB IFRAME

流程说明

Previous介绍Next接口如何申请apikey?

Last updated 9 months ago

流程描述

  1. HG 调用 Headline 后端 API 注册和绑定用户

  2. HG 用户点击打开Headline时,需要请求Headline API获取这个特定用户的一次性令牌。这个一次性令牌可以用于验证用户的身份并授权其访问Headline的相关内容。

  3. HG 在获取到用户的一次性令牌后,可以在其页面中使用 iframe 元素嵌入Headline网站。在嵌入的URL中附加用户的一次性令牌,这样用户在访问该iframe时将自动进行登录过程,而无需手动输入用户名和密码。

交互流程图

注册绑定账户

HG业务系统注册用户时,需要调用HL交易系统接口进行用户注册和绑定。

通过ManagerApi进行创建用户和绑定操作,接口地址如下:

调用示例

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType,
"{\"phone\":\"{{mock_phone}}\",\"pwd\":\"dc483e80a7a0bd9ef71d8cf973673924\",\"country\":\"{{national_code}}\",\"registerSource\":1,\"customerGroupId\":1,\"tradeTypeCurrencyList\":[{\"allCurrency\":\"USDT\",\"tradeType\":\"1\"}],\"phoneArea\":\"+86\"}");
Request request = new Request.Builder()
  .url("https://web.headline.net/openapi-b/global/customer.admin.WhiteCustomerAdminApiService.addCusAndOpenAccountAndKyc")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
{
  "msg": "Success",
  "fail": false,
  "trace": "t-h2jv9x-4to64-9mp4wd7-793nv-1661227305",
  "code": "0",
  "data": "86021976",
  "bizCode": "",
  "tm": 236026513,
  "msgParams": null,
  "ok": true
}

获取一次性令牌

在HG中打开Headline交易页面时,需要通过Headline后端接口获取一次有效令牌。

根据已经绑定的用户客户编号以及对应密码进行请求一次有效令牌,接口地址如下:

OkHttpClient client = new OkHttpClient();

MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, 
"{\"type\":2,\"device\":1,\"loginName\":\"13429837442\",\"isThird\":false,\"thirdSource\":\"\",\"bindThirdUserId\":\"\",\"loginPwd\":\"dc483e80a7a0bd9ef71d8cf973673924\"}");
Request request = new Request.Builder()
  .url("https://web.headline.net/api/login/customer.app.CustomerWebApiService.login")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
{
  "msg": "Success",
  "fail": false,
  "trace": "x-31z6g86n-kr01ct-4g1u-ci45-1678377046",
  "code": "0",
  "data": {
    "token": "a541f9d5-2507-42b3-b790-59e1f755c380app",
    "customerNo": "86001175",
    "customerGroupId": 1,
    "thirdUserId": null,
    "googleId": -1,
    "lastName": null,
    "country": "CN",
    "kycStatus": 1,
    "companyKycStatus": 2,
    "assertPassStatus": "2",
    "idCard": null,
    "thirdLoginSource": null,
    "payPassStatus": "2",
    "source": "H5",
    "type": 0,
    "registerSource": 1,
    "loginPassStatus": "2",
    "idCardType": null,
    "loginTime": 1678360534200,
    "associationCompanyId": null,
    "id": 1176,
    "activateStatus": null,
    "email": "22**@qq.com",
    "openAccountType": 0,
    "accountRemark": null,
    "companyType": "real",
    "registerTime": 1648777706117,
    "activateTime": null,
    "kycAuditStatus": 2,
    "optional": 1,
    "isFund": 0,
    "firstName": null,
    "companyId": 360,
    "thirdIntactMsg": null,
    "createTime": 1648777706117,
    "phone": "135******9561",
    "relationCustomerId": 0,
    "accountList": [],
    "name": null,
    "phoneArea": "+86",
    "deposit": 1,
    "rToken": "291e08e4e0af86b3d8af85f2947a02125a1c1746db58b303b06cc1aba389f4cd",
    "thirdServerCode": "",
    "status": 2,
    "withdraw": 1
  },
  "bizCode": "",
  "tm": 82650853,
  "msgParams": null,
  "ok": true
}

📘 重点说明:

返回结果中Token作为一次有效令牌,用于Headline页面的打开参数

打开交易页面

根据一次有效令牌,拼接成iframe 的url地址,如下格式:

📘 拼接参数格式:

其中token是有效令牌参数

换取有效令牌

Headline交易UI需要修改,增加有效令牌换取真实access token的逻辑

Headline交易UI根据url中的tsource参数主动调用接口换取真实access token,接口地址如下:

调用方式与结果:

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://web.headline.net/api/global/thirdExt/randomKey")
  .post(null)
  .addHeader("accept", "application/json")
  .addHeader("content-type", "application/json")
  .build();

Response response = client.newCall(request).execute();
{
  "msg": "Success",
  "fail": false,
  "trace": "x-qfx13-8z5850-mf4l657-gkqbn-1677563999",
  "code": "0",
  "data": "qfx13-8z5850-mf4l657-gkqbn-167756399",
  "bizCode": "",
  "tm": 955,
  "msgParams": null,
  "ok": true
}

交易UI获取真实access token后写入浏览器本地缓存(local storage),用于后续交易访问令牌

详细交互图:

https://www.processon.com/view/link/662d1a0858531d4d72e2acac
https://docs.multimarkets.org/manager-api/customer/customer-registration
https://docs.multimarkets.org/client-api/login
https://www.headline.net/zh-CN/home?tsource=10e87b3b-1278-43f3-a0cb-16cfba88ca4aapp
https://www.headline.net/zh-CN/home?tsource=${token}
https://multimarkets-c-api-en.apidocumentation.com/reference#tag/customerauth/post/global/thirdExt/randomKey