# 概述

## 欢迎来到我们的API&#x20;

在这里你可以找到所需的文档&#x20;

## 本节说明

{% content-ref url="/pages/-LSTha-1\_witzwNkaGal" %}
[介绍](/architecture/introduce)
{% endcontent-ref %}

{% content-ref url="/pages/-LSTiKXL-YEky7mk\_gxV" %}
[状态流转](/architecture/flow)
{% endcontent-ref %}

## 想更加深入了解我们?

我们供以下API以供使用

## 闪兑

{% content-ref url="/pages/tPq70pdiGgEmljIOpveX" %}
[集成](/integration)
{% endcontent-ref %}


# 介绍

一站式跨链兑换平台，安全、快捷、可靠

OmniBridge 是自 2017 年以来持续运营的跨链兑换平台，支持 50 多条区块链、500 多种加密资产之间的无缝互操作，为用户提供安全、高效、低成本的跨链兑换体验。

已接入合作方包括：\
TokenPocket、Trust Wallet、OKX、SafePal、OneKey、imToken、Bitget Wallet、ELLIPAL、SwapSpace、Ave.ai、Rango、Math Wallet、ONTO Wallet、Radiant、Swapzone 等主流平台和工具。

### 核心优势

* 接入快速：对接周期短，1～2 天即可完成集成
* 技术全面支持：提供全流程技术协助，确保顺利接入
* 全天候客服：7×24 小时在线客服，保障用户和合作方体验
* DApp 可定制化：支持定制 DApp 接入，适配各类去中心化钱包
* 完善的风控机制：多层安全防护，保障用户资产安全

### DAPP

{% embed url="<https://app.omnibridge.pro/#/?sourceFlag=apiweb>" %}


# 跨链协议

公证人模式 + MPC多方签名

### 跨链兑换中的角色

* 发送者（Sender）：与核心跨链系统交互，可以发起跨链兑换的用户；
* 验证者（Verifier）：采用公证人模式，利用MPC多方签名方式，验证用户的存币交易；
* 中继器（Repeater）：根据验证者的成功结果，提交到跨链系统，完成用户兑换；
* 结算者（Settlement）：目标链上的交易执行者；

<figure><img src="/files/AznsxleqkRjZLrOvaPEJ" alt=""><figcaption></figcaption></figure>

### 工作流程

1. OmniBridge是一个无需许可的跨链桥，基于公证人模式+MPC多方签名构建，由Omni团队开发，旨在实现跨链一键兑换；
2. 在源网络上，Sender可以使用我们的前端系统或者使用植入过我们api的去中心化钱包发起跨链交易，然后Verifier将采用公证人模式，验证用户源链的存币交易，使用3/5阈值门限，一旦验证不通过，订单将不会继续执行。但这个情况同时发生概率非常低。我们目前配置了5个节点，分布在web3行业社区，需要3个节点验证通过即可。如果有节点作恶或出故障，也至少需要3个节点同时发生。
3. 源网络的交易验证通过后，Repeater将会收集节点的验证通过信息，提交到我们的核心跨链系统进行兑换，兑换过程非常快速，兑换完成后，将会来到了我们的最后一步验证过程，在目标链上发送代币给用户。
4. 在目标链上，Settlement同样采用多节点验证，对用户的存款和兑换过程进行验证，通过后Sender将在目标链上收到想要换的代币；

### 节点

我们目前使用5台web3社区节点，共同参与验证兑换流程。分别是OmniBridge、Bridgers、MetaPath、MpcWallet、ETHF等社区，目前他们都良好运行。节点运行需要在各个社区部署，并且成为我们的白名单成员才可以参与验证。

* 奖励

成为我们的验证节点，将会定期收到奖励报酬，共同参与交易验证。

* 罚没

当节点恶意验证或者不参与验证，将会触发罚没政策，根据失败验证的数量/成功验证的数量的占比，来对节点进行处罚；触发此行为的节点将会被剔除并罚没。

### 如何保证安全

* 签名分类

单签名公证人‌：中心化节点独立验证（效率高，但风险集中），常见于交易所跨链兑换‌；\
多签名公证人‌：多个公证人组成联盟，需多数签名达成共识，降低单点故障风险‌；\
分布式MPC签名‌：密钥分片存储，通过多方计算（MPC）合并签名，兼顾安全性与去中心化；

* 公证人模式 + MPC多方签名

通过第三方‌公证人‌作为中介，验证跨链交易的真实性并传递交易信息。公证人承担数据收集、验证和交易确认的任务，使两条无法直接互信的链实现间接信任‌；

### 为什么公证人模式 + MPC多方签名是安全的

* 密钥管理：消除单点风险
  * 私钥分布式存储\
    MPC通过秘密共享（如Shamir协议）将完整私钥拆分为多个分片，由不同公证人节点独立保管。任何单节点仅持有无效碎片，无法独自重构私钥或签署交易，彻底消除单点泄露风险。‌
  * 动态签名过程\
    交易签名时，公证人节点通过MPC协议协同计算生成有效签名，全程私钥分片无需拼接为完整密钥，避免传统多签中私钥临时暴露的隐患。‌
* #### 交易验证：双重共识机制
  * ‌公证人集群的链下共识‌\
    公证人节点通过拜占庭容错（BFT）等算法对跨链交易合法性达成共识，确保交易真实性。例如，分布式签名公证人机制要求多数节点验证通过。‌
  * ‌MPC门限签名约束‌\
    设定签名阈值（如3/5规则），仅当足够数量的公证人分片参与计算时才能生成有效签名。攻击者需同时控制超阈值节点才可能作恶，大幅提高攻击成本。‌
* #### 抗攻击与容错能力
  * ‌防御内部串谋‌\
    MPC的密码学设计确保单个公证人无法获知其他节点的私钥分片，即使部分节点勾结，若未达签名阈值仍无法伪造交易。‌
  * ‌节点失效容错‌\
    若部分公证人节点离线或被攻击，剩余活跃节点仍可完成签名（如5节点中2个失效时，3个节点可继续协作）。MPC的容错性保障系统持续运行。‌
* #### **技术互补性增强安全性**

| ‌风险类型‌ | ‌公证人模式应对‌  | ‌MPC多签增强‌                |
| ------ | ---------- | ------------------------ |
| ‌单点故障  | 多节点分散责任    | 私钥分片无完整形态                |
| 协议兼容性‌ | 适配不同链的验证规则 | MPC基于标准加密算法（如ECDSA），跨链通用 |
| 透明度与审计 | 链上交易记录可查   | 签名过程可审计日志，防篡改            |

* 技术互补性增强安全性
  * ‌公证人节点筛选‌\
    采用声誉机制（如知名机构担任节点）或质押经济模型，提高作恶成本。随机轮换节点进一步降低长期串谋可能。‌
  * ‌MPC实现安全性‌\
    依赖经学术验证的密码学方案（如ECDSA）及第三方审计（如NCC Group渗透测试），避免算法实现漏洞。‌
* #### 结论：安全本质源于分层防御

  * 物理层‌：私钥分布式存储，无完整形态；
  * 共识层‌：公证人节点多重验证+MPC门限签名；
  * 算法层‌：密码学协议保障分片隐私与计算合法性。

  该组合兼顾链下效率与链上可信性，尤其适用于高价值跨链资产托管及DAO多签金库等场景。‌


# 状态流转

### 1.兑换时序图

<figure><img src="/files/Nf36TdLmatvP2Sdgk84S" alt=""><figcaption></figcaption></figure>

1. 用户: 查看可兑换币种
2. api服务: 查看支持兑换的币种列表；返回查询结果
3. 用户：看到支持兑换的币种列表
4. 用户：选择兑换的币种，查看对应汇率
5. api服务: 查询对应币种汇率，例:BTC/USDT，返回汇率查询结果
6. 用户：看到对应币种汇率
7. 用户：输入/选择相关信息进行下单，例:数量目标币接收地址
8. 用户：确认输入/选择的相关信息
9. 用户：输入密码
10. api服务: 调用创建订单接口
11. api服务: 返回订单创建结果（若订单收币地址24h内累计兑换额度超过阈值，触发KYC则返回信息）
12. api服务: 返回订单创建结果
13. 用户：转账到创建订单接口返回的临时地址上
14. 用户：查询订单状态
15. api服务：实时刷新订单状态、返回订单状态
16. api服务：检测到用户存币后开始兑换
17. api服务：完成兑换，兑换成功给用户发送目标币，兑换失败给用户遍回原币
18. api服务：触发KYC额度，将导致退币或完成KYC继续兑换
19. 用户：查询订单状态
20. api服务：检测存币并执行兑换
21. api服务：完成兑换并发币

### 2.订单状态流转状态图

&#x20;   **(1)订单详细状态流转**

&#x20;  &#x20;

<figure><img src="/files/LDVQ2wyEajaHhLVsdotO" alt=""><figcaption></figcaption></figure>


# 费用

OmniBridge的费用结构包含两部分：桥接费和目标链Gas费，这种费用结构确保资产转移的快速可靠；

* 桥接费：按转账金额的百分比收取，我们对所有用户将会收取0.3%的桥接费
* 目标链Gas费：用于目标链，我们将代币发送到用户地址所消耗的Gas费；

例如：假如用户想要在源链Ethereum上用1个ETH兑换目标链Bitcoin上的BTC时，桥接费是：\
1 ETH \* 0.003 = 0.003 ETH\
跨链系统将会使用0.997去兑换目标链的BTC，假如实际兑换得到0.1BTC，目标链GAS是 0.001 BTC，那么用户将会收到的BTC数量是：\
0.1 BTC - 0.001 BTC = 0.099 BTC


# 浏览器

为了方便用户查看和追踪交易进度，我们设计了专属OmniBridge的跨链浏览器，你可以在[OmniBridge Explorer](https://explorer.omnibridge.pro/)上查看。

<figure><img src="/files/RCrYjNtiPPv6Ac1PJppL" alt=""><figcaption></figcaption></figure>


# 支持的链

OmniBridge一直在努力并追求支持更多的链，我们致力于链接所有生态的链，目前已经支持的链有这些

| EVM        | UTXO | Other       |
| ---------- | ---- | ----------- |
| ETH        | BTC  | SOL         |
| BSC        | BCH  | TRX         |
| ARB        | DOGE | XRP         |
| Optimism   | LTC  | SUI         |
| POLYGON    | DASH | TON         |
| AVAXC      |      | DOT         |
| ZKSYNC     |      | XLM         |
| BASE       |      | VET         |
| LINEA      |      | ADA         |
| opBNB      |      | ONT         |
| zkEVM      |      | IOST        |
| Unichain   |      | Vaulta(EOS) |
| Moonriver  |      | XVG         |
| SCROLL     |      | KAVA        |
| CRONOS     |      | KASPA       |
| Manta      |      | FLOW        |
| Sonic      |      | THETA       |
| XLayer     |      | HBAR        |
| Blast      |      |             |
| KLAY       |      |             |
| ETC        |      |             |
| CELO       |      |             |
| ETHF       |      |             |
| APE        |      |             |
| HashKey    |      |             |
| WorldChain |      |             |
| ORC        |      |             |
| GRC30      |      |             |
| PLS        |      |             |
| OZO        |      |             |
| CMEMO      |      |             |
| AREA       |      |             |
| LAIKA      |      |             |
| VANA       |      |             |
| BERA       |      |             |
| Qubetics   |      |             |
| XDC        |      |             |


# 常见问题

## 一、**兑换问题**

### 1、**为什么兑换完成没有收到币？** <a href="#id-2-wei-shen-me-dui-huan-wan-cheng-mei-you-shou-dao-bi" id="id-2-wei-shen-me-dui-huan-wan-cheng-mei-you-shou-dao-bi"></a>

请检查您的收币地址是否填写正确，如果地址正确请再去核对您兑换的币种所在的链是否跟您查看的链一 致。 本系统里所有带有 erc20 标识的币均为以太坊链上的代币，trc20 标识的币均为波场链上的代币，HECO 标 识的币均为火币生态链上的代币，BSC 标识的币均为币安智能链上的代币 您兑换的是什么链的币就应该切换到什么链去查看，

举例：您兑换的是 erc20 的币，但是您用的是 HT 钱 包地址来接收的币，需要把钱包切换到以太坊链才能看到代币，如果您使用的是其他去中心化钱包则需把地址导入到以太钱包里才能查看到代币

### 2、**兑换一般需要多久？** <a href="#id-3-dui-huan-yi-ban-xu-yao-duo-jiu" id="id-3-dui-huan-yi-ban-xu-yao-duo-jiu"></a>

一般是2分钟左右，兑换时页面会展示预估兑换时间。如遇链上拥堵可能需要 30 分钟-1 小时，有疑虑请联系网页上的在线客服

### 3、**兑换过程中需要消耗的费用有哪些？** <a href="#id-5-dui-huan-guo-cheng-zhong-xu-yao-xiao-hao-de-fei-yong-you-na-xie" id="id-5-dui-huan-guo-cheng-zhong-xu-yao-xiao-hao-de-fei-yong-you-na-xie"></a>

每次兑换需要消耗的费用有：

1）从公链转出时消耗的矿工费；

2）兑换过程中产生的手续费；

3）发币时消耗的发币费或矿工费。

### 4、**为什么兑换后得到的数量与发起时显示的不一致？** <a href="#id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi" id="id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi"></a>

发起时的数量为系统预估得到的数量，一般会受到兑换数量以及深度、滑点等因素影响，所以可能会与显示数量有些许差距。

### 5、**为什么订单会自动退币？** <a href="#id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi" id="id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi"></a>

订单的兑换数量可能会受到深度,汇率涨幅等影响可能与用户的期待接受数量差距过大,这种情况订单会自动退币

### 6、**为什么订单会一直在待存币状态？** <a href="#id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi" id="id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi"></a>

请检查存入的地址是否和下单返回的地址一致,存入的数量是否和订单的存币数量一致以及存入的币种是否一致,如果以上都没有问题订单仍长时间在待存币状态请联系我们的人工客服

### 7、API 服务对哪些国家或地区有限&#x5236;**？** <a href="#id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi" id="id-6-wei-shen-me-shan-dui-hou-de-dao-de-shu-liang-yu-fa-qi-shi-xian-shi-de-bu-yi-zhi"></a>

出于合规性与司法管辖区的政策要求，我们的 API 服务在特定司法管辖区不可用：受限地区包括但不限于：美国、中国大陆、伊朗、朝鲜、古巴、委内瑞拉、白俄罗斯、俄罗斯、刚果、缅甸、津巴布韦、阿富汗、伊拉克、黎巴嫩、利比亚、索马里、也门、南苏丹、乌克兰、柬埔寨、中非、海地、叙利亚以及乌克兰部分受限制地区\
注：受限地区名单可能会随国际政策动态调整，请以最新公告为准。


# 集成

### 欢迎来到闪兑API

本节中, 您可以了解并使用闪兑相关功能。

### API Endpoint

**`https://api.omnibridge.pro`**

**Request Method: post**\
**Content-Type: application/json**

## 闪兑状态码说明

{% content-ref url="/pages/4fw31PS49UMFPgkWqKkr" %}
[状态码说明](/integration/response-code)
{% endcontent-ref %}

## 闪兑订单相关

{% content-ref url="/pages/-LSZYDHaPQtfgdRX3Rho" %}
[创建订单](/integration/create-order)
{% endcontent-ref %}

{% content-ref url="/pages/-LSZZJigpPZsDbz5kmJG" %}
[查询订单状态](/integration/order-state)
{% endcontent-ref %}

{% content-ref url="/pages/-MYs7vUc7bVTOeiOIqM1" %}
[查询订单记录](/integration/order-record)
{% endcontent-ref %}

{% content-ref url="/pages/DjcVEWX526URoXwHzahS" %}
[批量查询订单状态](/integration/batch-order-state)
{% endcontent-ref %}

## 币种汇率相关

{% content-ref url="/pages/-LSZU\_H7Ge4G9gvS59Mg" %}
[查询币种列表](/integration/coin-list)
{% endcontent-ref %}

{% content-ref url="/pages/-LSZXSIu2EN-E7K27DMO" %}
[查询兑换汇率](/integration/get-base-info)
{% endcontent-ref %}

{% content-ref url="/pages/-LeGrLQgFp4OHTuIglcD" %}
[批量查询兑换汇率](/integration/batch-quote)
{% endcontent-ref %}

## 闪兑其他接口

{% content-ref url="/pages/NEfFkxESgsBUkBZP3wex" %}
[提交存币hash](/integration/submit-hash)
{% endcontent-ref %}

{% content-ref url="/pages/KBAc99bbnDKopg9pMg7t" %}
[批量提交存币hash](/integration/batch-submit-hash)
{% endcontent-ref %}

{% content-ref url="/pages/-M7lOAR4w34VhLoalf9X" %}
[查询目标链GAS费接口](/integration/chain-fee)
{% endcontent-ref %}

{% content-ref url="/pages/CXJ1l4KX1conCBt7DTgl" %}
[免gas兑换](/integration/free-gas-swap)
{% endcontent-ref %}


# 状态码说明

| 状态码  | 说明                                        |
| ---- | ----------------------------------------- |
| 201  | 设备来源不存在                                   |
| 202  | 存币金额小数位数太长                                |
| 203  | 获取存币地址失败                                  |
| 204  | 手续费方式不存在                                  |
| 205  | 手续费方式不能重复设置                               |
| 207  | 地址类型不存在                                   |
| 209  | 目标接收地址不能重复设置                              |
| 210  | 退原币地址不能重复设置                               |
| 212  | 地址类型设置不正确                                 |
| 213  | 非法请求                                      |
| 214  | 币种不存在                                     |
| 215  | 地址不合法                                     |
| 216  | 金额数量不合法                                   |
| 217  | 账户余额不足                                    |
| 218  | 该币种不支持兑换，请重新选择                            |
| 266  | 金额小数点后不能超过两位数字                            |
| 270  | 金额小数点后不能超过4位                              |
| 271  | 金额只能为整数                                   |
| 279  | 小数点后不能超过三位数字                              |
| 311  | 当天交易额度达到上限                                |
| 800  | 成功                                        |
| 900  | 服务器错误                                     |
| 901  | 请求参数不全                                    |
| 902  | 系统启动中                                     |
| 903  | 认证失败                                      |
| 904  | 报文解密失败                                    |
| 905  | 报文处理错误                                    |
| 906  | 系统处理异常                                    |
| 907  | 必填字段为空                                    |
| 908  | 发送报文出错                                    |
| 909  | 报文验密失败                                    |
| 910  | 接收成功                                      |
| 911  | 系统处理错误                                    |
| 912  | 系统无此订单数据                                  |
| 913  | 存入货币币种不存在                                 |
| 914  | 接收货币币种不存在                                 |
| 915  | 存入货币和接收货币不能相同                             |
| 916  | 目标地址不合法                                   |
| 917  | 退款地址不合法                                   |
| 918  | 目标地址和退款地址不能相同                             |
| 919  | 存币金额不合法                                   |
| 920  | 接收币金额不合法                                  |
| 921  | 存币金额不在范围内                                 |
| 972  | <p>操作频繁，请稍后再试<br>eg: 同数量币种连续下单不存币会被拦截</p> |
| 1145 | 目标地址,退款地址或IP存在风险,请换其他地址和IP进行兑换            |
| 1146 | XRP地址未激活该代币                               |
| 1147 | CUBE每日兑换总额度已达上限，暂时无法兑换                    |
| 1154 | 流动性不足                                     |


# 查询币种列表

> 提供币种列表展示给用户，告诉用户哪些币可以进行兑换&#x20;

**1. 接口调用：**

```
https://{host}/api/v1/queryCoinList
```

**2. 请求参数示例**

<table><thead><tr><th>参数</th><th width="104.3333740234375">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>supportType</td><td>否</td><td>advanced：返回只支持跨链兑换的币种，不传或传其他值返回所有币种</td></tr><tr><td>mainNetwork</td><td>否</td><td>根据币种主网查询</td></tr><tr><td>sourceFlag</td><td>是</td><td>渠道名称</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "supportType":"advanced",
    "mainNetwork":"ETH",
    "sourceFlag": "xxx"
}
```

**4.返回结果示例**

```
{
    "data": [
        {
            "coinAllCode": "Bitcoin",
            "coinCode": "BTC",
            "coinImageUrl": "/static/image/coins/bitcoin.png",
            "coinName": "比特币",
            "contact": "",
            "isSupportAdvanced": "Y",
            "mainNetwork": "",
            "noSupportCoin": "BCC,SAN,ICX,EET,ETDM,BCC,GZRO,DTO,UCTT"
        },
        {
            "coinAllCode": "Ether",
            "coinCode": "ETH",
            "coinImageUrl": "/static/image/coins/ether.png",
            "coinName": "以太币",
            "contact": "",
            "isSupportAdvanced": "Y",
            "mainNetwork": "",
            "noSupportCoin": "BCC,SAN,ICX,EET,ETDM,BCC,GZRO,DTO,UCTT"
        }
    ],
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

[](<https://{host}/api/v1/queryCoinList&#xD;&#xA;>)

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="149">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>币种全称</td><td>coinAllCode</td><td>String</td><td>Bitcoin</td></tr><tr><td>币种码</td><td>coinCode</td><td>String</td><td>BTC</td></tr><tr><td>币种精度</td><td>coinDecimal</td><td>String</td><td>8</td></tr><tr><td>合约地址</td><td>contact</td><td>String</td><td>合约地址</td></tr><tr><td>是否支持兑换     </td><td>isSupportAdvanced </td><td>String</td><td>Y：支持、N:不支持</td></tr><tr><td>是否支持memo</td><td>isSupportMemo</td><td>String</td><td>Y：支持、N:不支持</td></tr><tr><td>代币所属主网(主网简称)</td><td>mainNetwork</td><td>String</td><td>比如USDC是ETH链上上的币，则mainNetwork为ETH；BNB(BSC)属于BSC链上的币，则mainNetwork为BSC；</td></tr><tr><td>不支持兑换的币种</td><td>noSupportCoin</td><td>String</td><td>如有多个不支持币种，用‘，’隔开。 例如："noSupportCoin":"TKT,SHE,AIDOC"</td></tr></tbody></table>

**6.Postman示例**

![](/files/LATmIwvIsmrQlwF66l4D)

**7.返回结果注意事项**

> 我们平台上支持的一些代币，有时可能会和对接方平台支持的币种名称有冲突或有多个相同名称的币，为了避免发币时，发错币种，这里可根据字段`mainNetwork`  和 `contact` 来判定,目前平台主要支持的代币有**ETH、波场、BSC、HECO、MATIC、OEC、EOS、XLM（Stellar）、XRP、Waves** 等主网上的代币


# 查询兑换汇率

> 提供两个币种之间兑换的汇率，汇率更新频率为：4\~6s     &#x20;

**1. 接口调用：**

```
https://{host}/api/v1/getBaseInfo
```

**2. 请求参数示例**

| 参数              | 是否必须 | 说明            |
| --------------- | ---- | ------------- |
| depositCoinCode | 是    | BTC           |
| receiveCoinCode | 是    | ETH           |
| depositCoinAmt  | 是    | 原币数量          |
| sourceFlag      | 是    | 渠道名称          |
| fixedRate       | 否    | 是否使用固定汇率(Y/N) |

**3.请求参数示例**

```ada
{
    "depositCoinCode":"ETH",
    "receiveCoinCode":"BNB(BSC)",
    "depositCoinAmt":"1.5",
    "sourceFlag": "xxx",
    "fixedRate": "N"
}
```

**4.返回结果示例**

```
{
    "data": {
        "chainFee": "0.001",//兑换完成后发币网络手续费
        "depositCoinFeeRate": "0.002",//兑换手续费率，兑换手续费 = 存币数量 * depositCoinFeeRate
        "depositMax": "14",//最大存币范围
        "depositMin": "0.038603",//最小存币范围
        "instantRate": "6.875775974236",//当前汇率
        "burnRate": "0"//燃烧率
        "isSupportNoGas": true //是否支持免 gas 兑换,
        "isSupport": true //该币对是否支持兑换
        "difference": "0.1" //回兑差值
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="131">字段名称</th><th width="122">字段</th><th width="135">数据类型</th><th>备注</th></tr></thead><tbody><tr><td>即时汇率</td><td>instantRate</td><td>String</td><td>"精确到小数点后十位 接收货币/存入货币的汇率"</td></tr><tr><td>最低存储额</td><td>depositMin</td><td>String</td><td>精确到小数点后六位</td></tr><tr><td>最高存储额</td><td>depositMax   </td><td>String</td><td>精确到小数点后六位</td></tr><tr><td>兑换手续费     </td><td>depositCoinFeeRate</td><td>String</td><td>精确到小数点后六位</td></tr><tr><td>发币手续费 </td><td>chainFee </td><td>String </td><td>精确到小数点后六位</td></tr><tr><td>燃烧率</td><td>burnRate</td><td>String</td><td>燃烧率 默认为0</td></tr><tr><td>是否支持免 gas 兑换</td><td>isSupportNoGas</td><td>Boolean</td><td>true/false</td></tr><tr><td>是否支持兑换</td><td>isSupport</td><td>Boolean</td><td>true/false</td></tr><tr><td>回兑差值</td><td>difference</td><td>String</td><td>回兑差值(以小数返回)</td></tr></tbody></table>

**6.Postman示例**

![](/files/Se6gwU8bMYbumcYipx13)

**7.特殊字段说明**

|         字段         | 说明                                                                                                        |
| :----------------: | --------------------------------------------------------------------------------------------------------- |
|      minerFee      | 该值用于**中心化兑换**                                                                                             |
| depositCoinFeeRate | 该值为兑换手续费率，兑换手续费 = 存币数量 \* depositCoinFeeRate                                                              |
|      chainFee      | 该值用于**去中心化兑换，**&#x540C;receiveCoinFee，兑换成功后发币时扣取的网络手续费，单位为接收币币种，可用于提前计算用户大致接收到的币的数量，或用于显示用户即将扣除发币网络手续费的数量 |

**8.注意事项**

> **对于去中心化兑换**，用户的手续费方式为原币，因此可以忽略minerFee字段，手续费固定收取存入原币的千分之三（即：存入0.1btc，实际会扣取0.0003btc作为兑换的手续费，实际兑换时，只拿0.0997btc去做兑换）

**9.计算用户兑换实际到账数量**

实际到账数量 = （用户存币数量 - 兑换手续费数量）\* 汇率 -  链上发币网络手续费

\= （depositCoinAmt - depositCoinAmt \* depositCoinFeeRate） *\** instantRate - chainFee


# 创建订单

> 创建订单,提供订单信息&#x20;

**1. 接口调用：**

```
https://{host}/api/v2/accountExchange
```

**2. 请求参数示例**

<table data-search="false"><thead><tr><th width="160.3333740234375">参数</th><th width="105.0001220703125">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>depositCoinCode</td><td>是</td><td>eg：ETH</td></tr><tr><td>receiveCoinCode</td><td>是</td><td>eg：BTC</td></tr><tr><td>depositCoinAmt</td><td>是</td><td>eg：0.01</td></tr><tr><td>receiveCoinAmt</td><td>是</td><td>期待接收数量</td></tr><tr><td>destinationAddr</td><td>是</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY </p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>refundAddr</td><td>是</td><td><p>eg：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY </p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>equipmentNo</td><td>是</td><td>设备唯一编号（序列号），如果无法获取到，可以填写退币地址。该字段在查询订单状态和查询订单记录接口中会用到，需要对应当前下单的查询</td></tr><tr><td>sourceType</td><td>是</td><td>只能填写ANDROID或IOS或H5，请根据自己应用填写，该字段在查询订单状态和查询订单记录接口中会用到</td></tr><tr><td>sourceFlag</td><td>是</td><td>用于标识是哪个平台创建的订单，请联系我们沟通</td></tr><tr><td>slippage</td><td>否</td><td>滑点 输入小数 (系统默认0.05)<br>0.01 = 1%</td></tr><tr><td>fixedRate</td><td>否</td><td>使用固定汇率下单(下单后接收数量不会改变)(Y/N)</td></tr></tbody></table>

**3.请求参数示例**

```ada
{
    "depositCoinCode": "ETHF",
    "receiveCoinCode": "USDT(BSC)",
    "depositCoinAmt": "42.207403",
    "receiveCoinAmt": "46.367529",
    "destinationAddr": "0x19b9918f...f85ad08ba0",
    "refundAddr": "0x19b9918f...f85ad08ba0",
    "equipmentNo":"zfgryh918f93a19fdg6918a68cf5",
    "sourceType": "H5",
    "sourceFlag":"widget",
    "slippage": "0.02",
    "fixedRate": "N"
}
```

**4.返回结果示例**

```
{
    "data": {
        "chainFee": "0.001",//兑换完成后发币旷工费
        "createTime": "2022-03-10 18:44:21",
        "dealFinishTime": null,
        "depositCoinAmt": "2",
        "depositCoinCode": "ETH",
        "depositCoinFeeAmt": "0.004",//兑换手续费
        "depositCoinFeeRate": "0.002",//兑换手续费率
        "depositCoinState": "wait_send",
        "depositFeeRate": "0.002",
        "depositTxid": "",
        "destinationAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//用户接收币种地址
        "detailState": "wait_deposit_send",//订单状态（详见高级兑换接口）
        "instantRate": "6.856554564172",//汇率
        "kycUrl": "",//超过当日限额的kyc路径（详见高级兑换接口）
        "orderId": "f94e631b-d99b-4dd5-98f7-09bf99d16d94",//订单号
        "orderState": "wait_deposits",
        "platformAddr": "0x3181af4f7cc7251a6a4eda75526c8abe10106db8",//存币地址（用户创建订单后需向此地址转币，转币币种depositCoinCode，转币数量depositCoinAmt）
        "receiveCoinAmt": "13.713109",
        "receiveCoinCode": "BNB(BSC)",
        "refundAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//退币地址（兑换失败退回存币币种到此地址）
        "refundCoinAmt": "",//兑换失败时的退币数量
        "refundDepositTxid": "",//兑换失败时的退币哈希
        "transactionId": "",//发币哈希
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="112">字段名称</th><th width="176.6666259765625">字段</th><th>备注</th></tr></thead><tbody><tr><td>订单号</td><td>orderId</td><td>eg：d47e8b9b-c17f-432b-9285-a46c0a3ceb9a</td></tr><tr><td>存币币种</td><td>depositCoinCode</td><td>eg：ETH</td></tr><tr><td>接收币币种</td><td>receiveCoinCode</td><td>eg：BTC</td></tr><tr><td>存币数量</td><td>depositCoinAmt</td><td>eg：1</td></tr><tr><td>接收币数量</td><td>receiveCoinAmt</td><td>eg：0.1</td></tr><tr><td>存币地址</td><td>platformAddr</td><td>eg：123123123-232-1231232</td></tr><tr><td>目标币接收地址</td><td>destinationAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY</p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>退原币的地址</td><td>refundAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY </p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>存币的手续费率</td><td>depositCoinFeeRate</td><td>eg：手续费率</td></tr><tr><td>存币的手续费金额</td><td>depositCoinFeeAmt</td><td>eg：手续费收取的原币的数量</td></tr><tr><td>退币金额</td><td>refundCoinAmt</td><td>eg: 0.98</td></tr><tr><td>兑换成功交易id</td><td>transactionId</td><td>链上交易id，在兑换完成并已发币之后，该字段才会有值</td></tr><tr><td>兑换失败交易id</td><td>refundDepositTxid</td><td>链上交易id，在兑换失败退币情况下，已退币之后，该字段才会有值</td></tr><tr><td>订单状态</td><td>detailState</td><td><p>(1)wait_deposit_send:等待存币发送 </p><p>(2)timeout:超时</p><p>(3)wait_exchange_push:等待交换信息推送(4)wait_exchange_return:等待交换信息返回</p><p>(5.1)</p><p>wait_receive_send:等待接收币种发送</p><p>wait_receive_confirm:等待接收币种确认</p><p>receive_complete:接收币种确认完成</p><p>(5.2)</p><p>wait_refund_send:等待退原币币种发送wait_refund_confirm:等待退原币币种确认</p><p>refund_complete:退原币币种确认完成</p><p>(6)ERROR/error:正在处理的订单 </p><p>(7)WAIT_KYC: 等待进行KYC或联系客服提供链接</p></td></tr><tr><td>kyc的路径</td><td>kycUrl</td><td>当返回码是311时,需要跳转到该链接。<br>{host}<a href="https://swap.swftcoin.com/swft-v3/swft-v3-m/kyc/kyc.html?lang=cn&#x26;equipmentNo=pls_input_your_real_equipmentno_ok">/swft-v3/swft-v3-m/kyc/kyc.html?lang=cn&#x26;equipmentNo=pls_input_your_real_equipmentno_ok<br></a>请更新equipmentNo的值用户的设备号（公共请求参数），lang取值：cn、en</td></tr></tbody></table>

**6.Postman示例**

![](/files/oDPbkEQXXcExykMUcBTP)


# 提交存币hash

> 给订单提供存币hash

**1. 接口调用：**

```
 https://{host}/api/v2/modifyTxId
```

**2. 请求参数实例**

| 参数          | 是否必须 | 说明      |
| ----------- | ---- | ------- |
| orderId     | 是    | 交易订单号   |
| depositTxid | 是    | 交易hash值 |

**3.请求参数示例**

```
{
    "orderId": "33120af8-1866-4cb6-99a8-2c303f490c2c",           
    "depositTxid": "0x123"      
}
```

**4.返回结果示例**

```
{
    "resCode": "800",
    "resMsg": "成功",
    "data": "SUCCESS"
}
```


# 批量提交存币hash

> 为多笔订单提供存币hash

**1. 接口调用：**

```
https://{host}/api/v2/batchModifyTxId
```

**2. 请求参数实例**

| 参数             | 是否必须 | 说明               |
| -------------- | ---- | ---------------- |
| modifyTxIdList | 是    | 交易信息集合(数量最多1000) |
| orderId        | 是    | 交易订单号            |
| depositTxid    | 是    | 交易hash值          |

**3.请求参数示例**

```
{
  "modifyTxIdList": [
    {
      "orderId": "33434232-1556-yt6g-99a8-2c303f490c2c",
      "depositTxid": "0x643ccccccccccccccc4c4"
    },
    {
      "orderId": "33120af8-1866-4cb6-99a8-2c303f490c2c",
      "depositTxid": "0x123aaaaaaaaaaaaaaaaa6"
    }
  ]
}
```

**4.返回结果示例**

```
{
    "resCode": "800",
    "resMsg": "成功",
    "data": {
        "successNum": 1,    //上传成功的订单数
        "failIds": [        //上传失败的订单id集合,失败原因：订单已有hash、上传的hash不规范
            "1"
        ]
    }
}
```


# 查询订单状态

> 获取订单详情信息

**1. 接口调用：**

<pre><code><strong>https://{host}/api/v2/queryOrderState
</strong></code></pre>

**2. 请求参数实例**

<table><thead><tr><th width="236">参数</th><th>是否必须</th><th>说明</th></tr></thead><tbody><tr><td>equipmentNo</td><td>是</td><td>设备唯一编号</td></tr><tr><td>sourceType</td><td>是</td><td>ANDROID,IOS,H5</td></tr><tr><td>orderId</td><td>是</td><td>eg：1fc8499f-dd6d-4ff3-8b7f-7a0d74c59adc</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "equipmentNo":"SFjeigreEIFegjieFei",
    "sourceType":"H5",
    "orderId":"9d4a577d-fdb1-466c-8da2-a5ad3553260b"
}
```

**4.返回结果示例**

```
{
    "data": {
        "chainFee": "0.001",//兑换完成后发币旷工费
        "changeType": "advanced",//去中心化兑换
        "choiseFeeType": "3", // 手续费类型
        "completeTime": null,
        "createTime": "2022-03-10 18:44:21",
        "dealFinishTime": null,
        "dealReceiveCoinAmt": "",
        "depositCoinAmt": "2",
        "depositCoinCode": "ETH",
        "depositCoinFeeAmt": "0.004",//兑换手续费
        "depositCoinFeeRate": "0.002",//兑换手续费率
        "depositCoinState": "wait_send",
        "depositHashExplore": "https://etherscan.io/tx/null", //存币hash
        "depositTxid": "",
        "destinationAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//用户接收币种地址
        "detailState": "wait_deposit_send",//订单状态（详见查询订单状态接口）
        "instantRate": "6.874588522739",//汇率
        "isDiscount": "N",
        "isNft": "",
        "kycUrl": "",//超过当日限额的kyc路径（详见查询订单状态接口）
        "nftUrl": "",
        "orderId": "f94e631b-d99b-4dd5-98f7-09bf99d16d94",//订单号
        "payTokenUrl": "",
        "platformAddr": "0x3181af4f7cc7251a6a4eda75526c8abe10106db8",//存币地址（用户创建订单后需向此地址转币，转币币种depositCoinCode，转币数量depositCoinAmt）
        "receiveCoinAmt": "13.713109",
        "receiveCoinCode": "BNB(BSC)",
        "receiveHashExplore": "https://bscscan.com/tx/",
        "receiveSwftAmt": "2416.89",
        "refundAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//退币地址（兑换失败退回存币币种到此地址）
        "refundCoinAmt": "",//兑换失败时的退币数量
        "refundCoinMinerFee": "",
        "refundDepositTxid": "",//兑换失败时的退币哈希
        "refundHashExplore": "https://etherscan.io/tx/",
        "refundSwftAmt": "",
        "router": {},
        "swftCoinFeeRate": "0.001",
        "swftCoinState": "",
        "swftReceiveAddr": "",
        "swftRefundAddr": "",
        "timeoutShowPlatformAddr": "N", // 是否展示复用地址
        "tradeState": "",
        "transactionId": "",//兑换完成的发币哈希
        "burnRate": "0",//燃烧率
        "refundReason": "" // 退币原因 
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="126.666748046875">字段名称</th><th width="180.6666259765625">字段</th><th>备注</th><th data-hidden>备注</th></tr></thead><tbody><tr><td>订单号</td><td>orderId</td><td>eg：d47e8b9b-c17f-432b-9285-a46c0a3ceb9a</td><td>eg：d47e8b9b-c17f-432b-9285-a46c0a3ceb9a</td></tr><tr><td>存币币种</td><td>depositCoinCode</td><td>eg：ETH</td><td>eg：ETH</td></tr><tr><td>接收币币种</td><td>receiveCoinCode</td><td>eg：BTC</td><td>eg：BTC</td></tr><tr><td>存币数量    </td><td>depositCoinAmt</td><td>eg：1</td><td>eg：1</td></tr><tr><td>接收币数量     </td><td>receiveCoinAmt </td><td>eg：0.1</td><td>eg：0.1</td></tr><tr><td>存币地址</td><td>platformAddr</td><td>eg：123123123-232-1231232</td><td>eg：123123123-232-1231232</td></tr><tr><td>目标币接收地址</td><td>destinationAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY</p><p>如有memo请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td><td>"eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY, 如有memo,请讲memo放到地址后，用#分隔，例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632"</td></tr><tr><td>退原币的地址</td><td>refundAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY </p><p>如有memo,请讲memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td><td>"eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY 如有memo,请讲memo放到地址后，用#分隔，例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632"</td></tr><tr><td>存币的手续费率</td><td>depositCoinFeeRate</td><td>eg：手续费率</td><td>eg：手续费率</td></tr><tr><td>存币的手续费金额     </td><td>depositCoinFeeAmt</td><td>eg：手续费收取的原币的数量</td><td>eg：手续费收取的原币的数量</td></tr><tr><td>退币金额</td><td>refundCoinAmt</td><td>eg: 0.98</td><td>eg: 0.98</td></tr><tr><td>兑换成功交易id</td><td>transactionId</td><td>链上交易id，在兑换完成并已发币之后，该字段才会有值</td><td>链上交易id，在兑换完成并已发币之后，该字段才会有值</td></tr><tr><td>兑换失败交易id</td><td>refundDepositTxid</td><td>链上交易id，在兑换失败退币情况下，已退币之后，该字段才会有值</td><td>链上交易id，在兑换失败退币情况下，已退币之后，该字段才会有值</td></tr><tr><td>订单状态</td><td>detailState</td><td><p>(1)wait_deposit_send:等待存币发送 </p><p>(2)timeout:超时</p><p>(3)wait_exchange_push:等待交换信息推送(4)wait_exchange_return:等待交换信息返回</p><p>(5.1)</p><p>wait_receive_send:等待接收币种发送,wait_receive_confirm:等待接收币种确认receive_complete:接收币种确认完成</p><p>(5.2)</p><p>wait_refund_send:等待退原币币种发送wait_refund_confirm:等待退原币币种确认refund_complete:退原币币种确认完成</p><p>(6)ERROR/error:正在处理的订单 </p><p>(7)WAIT_KYC: 等待进行KYC或联系客服提供链接</p></td><td>"(1)wait_deposit_send:等待存币发送 (2)timeout:超时； (3)wait_exchange_push:等待交换信息推送； (4)wait_exchange_return:等待交换信息返回； (5.1)wait_receive_send:等待接收币种发送, wait_receive_confirm:等待接收币种确认, receive_complete:接收币种确认完成. (5.2)wait_refund_send:等待退原币币种发送, wait_refund_confirm:等待退原币币种确认, refund_complete:退原币币种确认完成； (6)ERROR/error:正在处理的订单 (7)WAIT_KYC: 等待进行KYC或联系客服提供链接"</td></tr><tr><td>实际兑换得到的币的数量</td><td>dealReceiveCoinAmt</td><td>实际兑换得到的数量,在兑换未完成时，该值为空字符串</td><td> 实际兑换得到的数量,在兑换未完成时，该值为空字符串</td></tr><tr><td>订单完成时间</td><td>completeTime</td><td>订单发币或退币完成时的时间（UTC+8）</td><td>订单发币或退币完成时的时间（UTC+8）</td></tr><tr><td>燃烧率</td><td>burnRate</td><td>燃烧率 默认为0</td><td>燃烧率 默认为0</td></tr><tr><td>订单创建时间</td><td>createTime</td><td>订单创建时间</td><td>订单创建时间</td></tr><tr><td>订单完成的时间</td><td>dealFinishTime</td><td>订单完成的时间</td><td>订单完成的时间</td></tr><tr><td>存币的存放状态</td><td>depositCoinState</td><td><p>wait_send:待发送</p><p>wait_confirm:待确认</p><p>already_confirm:已确认</p></td><td>wait_send:待发送、wait_confirm:待确认、already_confirm:已确认</td></tr><tr><td>退手续费交易id</td><td>depositTxid</td><td>退手续费交易id</td><td>退手续费交易id</td></tr><tr><td>速币数量</td><td>receiveSwftAmt</td><td>速币数量</td><td>速币数量</td></tr><tr><td>速币的手续费率</td><td>swftCoinFeeRate</td><td>速币的手续费率</td><td>速币的手续费率</td></tr><tr><td>兑换成功发币矿工费</td><td>chainFee</td><td>兑换成功发币矿工费</td><td>兑换成功发币矿工费</td></tr><tr><td>兑换类型</td><td>changeType</td><td>兑换类型</td><td>兑换类型</td></tr><tr><td>超过当日限额kyc路径</td><td>kycUrl</td><td>超过当日限额kyc路径</td><td>超过当日限额kyc路径</td></tr><tr><td><p>退币原因</p><p></p></td><td>refundReason</td><td><p>返回数字 对应下方信息 </p><p>1 流动性不足(默认) </p><p>2 误差超过阈值 </p><p>3 kyc超额 </p><p>4 地址黑名单 </p><p>5 目标币维护</p><p>6 兑换数量不在范围内 </p><p>7 存币超时 </p><p>8 与风险地址交互</p></td><td><p>返回数字 对应下方信息<br>1  流动性不足(默认)<br>2  误差超过阈值<br>3  kyc超额<br>4  地址黑名单<br>5  目标币维护</p><p>6  兑换数量不在范围内<br>7  存币超时<br>8 与风险地址交互</p></td></tr></tbody></table>

**6.入参注意事项**

<table data-header-hidden><thead><tr><th width="156">入参字段</th><th>说明</th></tr></thead><tbody><tr><td>入参字段</td><td>说明</td></tr><tr><td>equipmentNo</td><td>环境编号，这个可用于查询属于该编号的所有订单信息，请勿泄露,详细查询订单相关信息可以参见<code>queryAllTrade</code> 和 <code>queryOrderState</code>  接口</td></tr></tbody></table>

**7.Postman示例**

![](/files/VAJ96au3vj8XQiJTdOks)


# 批量查询订单状态

> 批量获取订单详情

**1. 接口调用：**

```
https://{host}/api/v2/batchQueryOrderState
```

**2. 请求参数示例**

<table><thead><tr><th width="236">参数</th><th>是否必须</th><th>说明</th></tr></thead><tbody><tr><td>orderIds</td><td>是</td><td>json数组  最大限制200条</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "orderIds": [ //最大限制200条订单号 超出限制只会截取前200条数据
        "655bce95-577e-4930-bb9e-3f82bc6e57e7",
        "33120af8-1866-4cb6-99a8-2c303f490c2c",
        "de746e9c-4e6a-4615-8413-6b224fac439e",
        "9b8ccde9-fd8f-4014-a77b-ed757a3bb25a",
        "2f2e219f-c7af-4fc3-ad01-973a5f10d293",
        "edeafba6-e493-4b7f-9203-71484e444d94"
    ]
}
```

**4.返回结果示例**

```
{
    "data": {
        "chainFee": "0.001",//兑换完成后发币旷工费
        "changeType": "advanced",//去中心化兑换
        "choiseFeeType": "3", // 手续费类型
        "completeTime": null,
        "createTime": "2022-03-10 18:44:21",
        "dealFinishTime": null,
        "dealReceiveCoinAmt": "",
        "depositCoinAmt": "2",
        "depositCoinCode": "ETH",
        "depositCoinFeeAmt": "0.004",//兑换手续费
        "depositCoinFeeRate": "0.002",//兑换手续费率
        "depositCoinState": "wait_send",
        "depositHashExplore": "https://etherscan.io/tx/null", //存币hash
        "depositTxid": "",
        "destinationAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//用户接收币种地址
        "detailState": "wait_deposit_send",//订单状态（详见查询订单状态接口）
        "instantRate": "6.874588522739",//汇率
        "isDiscount": "N",
        "isNft": "",
        "kycUrl": "",//超过当日限额的kyc路径（详见查询订单状态接口）
        "nftUrl": "",
        "orderId": "f94e631b-d99b-4dd5-98f7-09bf99d16d94",//订单号
        "payTokenUrl": "",
        "platformAddr": "0x3181af4f7cc7251a6a4eda75526c8abe10106db8",//存币地址（用户创建订单后需向此地址转币，转币币种depositCoinCode，转币数量depositCoinAmt）
        "receiveCoinAmt": "13.713109",
        "receiveCoinCode": "BNB(BSC)",
        "receiveHashExplore": "https://bscscan.com/tx/",
        "receiveSwftAmt": "2416.89",
        "refundAddr": "0xAE93FA34f728855cE663cf9FcF8e32148F079071",//退币地址（兑换失败退回存币币种到此地址）
        "refundCoinAmt": "",//兑换失败时的退币数量
        "refundCoinMinerFee": "",
        "refundDepositTxid": "",//兑换失败时的退币哈希
        "refundHashExplore": "https://etherscan.io/tx/",
        "refundSwftAmt": "",
        "router": {},
        "swftCoinFeeRate": "0.001",
        "swftCoinState": "",
        "swftReceiveAddr": "",
        "swftRefundAddr": "",
        "timeoutShowPlatformAddr": "N", // 是否展示复用地址
        "tradeState": "",
        "transactionId": "",//兑换完成的发币哈希
        "burnRate": "0",//燃烧率
        "refundReason": "" // 退币原因 
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="126.666748046875">字段名称</th><th width="180.6666259765625">字段</th><th>备注</th></tr></thead><tbody><tr><td>订单号</td><td>orderId</td><td>eg：d47e8b9b-c17f-432b-9285-a46c0a3ceb9a</td></tr><tr><td>存币币种</td><td>depositCoinCode</td><td>eg：ETH</td></tr><tr><td>接收币币种</td><td>receiveCoinCode</td><td>eg：BTC</td></tr><tr><td>存币数量    </td><td>depositCoinAmt</td><td>eg：1</td></tr><tr><td>接收币数量     </td><td>receiveCoinAmt </td><td>eg：0.1</td></tr><tr><td>存币地址</td><td>platformAddr</td><td>eg：123123123-232-1231232</td></tr><tr><td>目标币接收地址</td><td>destinationAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY</p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>退原币的地址</td><td>refundAddr</td><td><p>eg: 18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY</p><p>如有memo,请将memo放到地址后，用#分隔</p><p>例如：18orDLFMp3fGoy5Uk93LDGTGbxWEm7b7FY#1927632</p></td></tr><tr><td>存币的手续费率</td><td>depositCoinFeeRate</td><td>eg：手续费率</td></tr><tr><td>存币的手续费金额     </td><td>depositCoinFeeAmt</td><td>eg：手续费收取的原币的数量</td></tr><tr><td>退币金额</td><td>refundCoinAmt</td><td>eg: 0.98</td></tr><tr><td>兑换成功交易id</td><td>transactionId</td><td>链上交易id，在兑换完成并已发币之后，该字段才会有值</td></tr><tr><td>兑换失败交易id</td><td>refundDepositTxid</td><td>链上交易id，在兑换失败退币情况下，已退币之后，该字段才会有值</td></tr><tr><td>订单状态</td><td>detailState</td><td><p>(1)wait_deposit_send:等待存币发送 </p><p>(2)timeout:超时</p><p>(3)wait_exchange_push:等待交换信息推送(4)wait_exchange_return:等待交换信息返回</p><p>(5.1)</p><p>wait_receive_send:等待接收币种发送wait_receive_confirm:等待接收币种确认receive_complete:接收币种确认完成</p><p>(5.2)</p><p>wait_refund_send:等待退原币币种发送wait_refund_confirm:等待退原币币种确认refund_complete:退原币币种确认完成</p><p>(6)ERROR/error:正在处理的订单 </p><p>(7)WAIT_KYC: 等待进行KYC或联系客服提供链接</p></td></tr><tr><td>实际兑换得到的币的数量</td><td>dealReceiveCoinAmt</td><td> 实际兑换得到的数量,在兑换未完成时，该值为空字符串</td></tr><tr><td>订单完成时间</td><td>completeTime</td><td>订单发币或退币完成时的时间（UTC+8）</td></tr><tr><td>燃烧率</td><td>burnRate</td><td>燃烧率 默认为0</td></tr><tr><td>订单创建时间</td><td>createTime</td><td>订单创建时间</td></tr><tr><td>订单完成的时间</td><td>dealFinishTime</td><td>订单完成的时间</td></tr><tr><td>存币的存放状态</td><td>depositCoinState</td><td>wait_send:待发送、wait_confirm:待确认、already_confirm:已确认</td></tr><tr><td>退手续费交易id</td><td>depositTxid</td><td>退手续费交易id</td></tr><tr><td>速币数量</td><td>receiveSwftAmt</td><td>速币数量</td></tr><tr><td>速币的手续费率</td><td>swftCoinFeeRate</td><td>速币的手续费率</td></tr><tr><td>兑换成功发币矿工费</td><td>chainFee</td><td>兑换成功发币矿工费</td></tr><tr><td>兑换类型</td><td>changeType</td><td>兑换类型</td></tr><tr><td>超过当日限额kyc路径</td><td>kycUrl</td><td>超过当日限额kyc路径</td></tr><tr><td>退币原因</td><td>refundReason</td><td><p>返回数字 对应下方信息<br>1  流动性不足(默认)<br>2  误差超过阈值<br>3  kyc超额<br>4  地址黑名单<br>5  目标币维护 </p><p>6  兑换数量不在范围内<br>7  存币超时<br>8 与风险地址交互</p></td></tr></tbody></table>


# 查询订单记录

> 分页获取订单详情

**1. 接口调用：**

```
https://{host}/api/v2/queryAllTrade
```

**2. 请求参数示例**

| 参数          | 是否必须 | 说明              |
| ----------- | ---- | --------------- |
| equipmentNo | 是    | 设备唯一编号          |
| sourceType  | 是    | ANDROID,IOS,H5  |
| pageNo      | 否    | eg：1，默认1每页显示记录数 |
| pageSize    | 否    | eg：10，默认10      |

**3.请求参数示例**

```
{
    "equipmentNo":"SFjeigreEIFegjieFei",
    "sourceType":"H5",
    "pageNo":"1",
    "pageSize":"10"
}
```

**4.返回结果示例**

```
{
    "data": {
        "pageContent": [
            {
                "beginDate": "2022-03-10 18:44:21",
                "chainFee": "0.001",
                "changeType": "advanced",
                "depositFeeRate": "0.002",
                "detailState": "timeout",
                "feeCoinAmt": "0.004",
                "feeCoinCode": "ETH",
                "fromCoinAmt": "2",
                "fromCoinCode": "ETH",
                "instantRate": "6.923076923076",
                "isNft": "",
                "nftUrl": "",
                "orderId": "f94e631b-d99b-4dd5-98f7-09bf99d16d94",
                "payTokenUrl": "",
                "percentChange": "",
                "router": {},
                "toCoinAmt": "13.713109",
                "toCoinCode": "BNB(BSC)",
                "tradeFlag": "",
                "tradeState": "timeout"
            },
            {
                "beginDate": "2022-03-10 18:30:36",
                "chainFee": "0.001",
                "changeType": "advanced",
                "depositFeeRate": "0.002",
                "detailState": "timeout",
                "feeCoinAmt": "0.002",
                "feeCoinCode": "ETH",
                "fromCoinAmt": "1",
                "fromCoinCode": "ETH",
                "instantRate": "6.923076923076",
                "isNft": "",
                "nftUrl": "",
                "orderId": "864ca993-8fb8-4715-aab6-cd2e87b625cb",
                "payTokenUrl": "",
                "percentChange": "",
                "router": {},
                "toCoinAmt": "6.865979",
                "toCoinCode": "BNB(BSC)",
                "tradeFlag": "",
                "tradeState": "timeout"
            }
        ],
        "pageNo": 1,
        "pageSize": 10,
        "totalCount": 2,
        "totalPage": 1
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="122">字段名称</th><th width="194">字段</th><th>备注</th></tr></thead><tbody><tr><td>当前页  </td><td>pageNo </td><td>eg：1</td></tr><tr><td>每页显示记录数 </td><td>pageSize</td><td>eg：10</td></tr><tr><td>总页数</td><td>totalPage</td><td>eg：10</td></tr><tr><td>总记录数    </td><td>totalCount</td><td>eg：100</td></tr><tr><td>数据结果</td><td>pageContent </td><td>eg：[{name1:value1},{name1:value1},{name1:value1}]</td></tr><tr><td>原币币种 </td><td>fromCoinCode</td><td>eg：ETH</td></tr><tr><td>目标币币种     </td><td>toCoinCode</td><td>eg：BTC</td></tr><tr><td>原币数量 </td><td>fromCoinAmt </td><td>eg：0.0</td></tr><tr><td>目标币数量</td><td>toCoinAmt</td><td>eg：0.14</td></tr><tr><td>兑换开始日期 </td><td>beginDate </td><td>eg：2017-09-08</td></tr><tr><td>手续费币种 </td><td>feeCoinCode</td><td>eg：ETH</td></tr><tr><td>手续费数量</td><td>feeCoinAmt</td><td>eg：0.0003</td></tr><tr><td>订单号 </td><td>orderId </td><td>eg：d47e8b9b-c17f-432b-9285-a46c0a3ceb9a</td></tr><tr><td>兑换状态</td><td>tradeState</td><td><p>wait_deposits：待存币</p><p>exchange：交换中 </p><p>complete：完成（兑换成功） </p><p>timeout：超时</p><p>wait_refund：兑换失败，待退币</p><p>refund_complete：已退币</p></td></tr></tbody></table>

**6.Postman示例**

![](/files/wInFDadL4AhbmaCxXbMb)


# 批量查询兑换汇率

> 批量获取兑换汇率基本信息接口，汇率更新频率为：4\~6s      (目前参数限制为10个交易对)

**1. 接口调用：**

```
https://{host}/api/v1/getInfo
```

**2. 请求参数示例**

| 参数              | 是否必须 | 说明                                                          |
| --------------- | ---- | ----------------------------------------------------------- |
| transactionPair | 是    | 要查询的交易对信息,币种和币种之间用"to"隔开,多个交易对之间用","隔开,例如DOGEtoBTC,BTCtoETH |

**3.请求参数示例**

```
{
    "transactionPair":"DOGEtoBTC,BTCtoETH"
}
```

**4.返回结果示例**

```
{
    "data": {
        "DOGEtoBTC": {
            "depositMax": "21458291499499.955262",
            "depositMin": "0.081593",
            "instantRate": "0.001",
            "minerFee": "164.629310344827586207",
            "receiveCoinFee": "0.02"//兑换完成发币要扣除的网络手续费0.02HT(HECO)
        },
        "BTCtoETH": {
            "depositMax": "6000000",
            "depositMin": "45041.394252",
            "instantRate": "10000",
            "minerFee": "0.001",
            "receiveCoinFee": "0.0007"//兑换完成发币要扣除的网络手续费0.0007BTC
        }
    },
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5.返回参数说明**

<table><thead><tr><th width="118">字段名称</th><th width="250">字段</th><th width="100">数据类型</th><th>备注</th></tr></thead><tbody><tr><td>即时汇率</td><td>instantRate</td><td>String</td><td>"精确到小数点后十位 接收货币/存入货币的汇率"</td></tr><tr><td>最低存储额 </td><td>depositMin </td><td>String </td><td>精确到小数点后六位</td></tr><tr><td>最高存储额 </td><td>depositMax </td><td>String </td><td>精确到小数点后六位</td></tr><tr><td>兑换手续费 </td><td>depositCoinFeeRate</td><td>String </td><td>精确到小数点后六位</td></tr><tr><td>发币手续费</td><td>chainFee</td><td>String</td><td>精确到小数点后六位</td></tr></tbody></table>

### **注意事项**

> 因为**去中心化兑换**，用户的手续费方式为原币，手续费固定收取存入原币的千分之三（即：存入0.1btc，实际会扣取0.0003btc作为兑换的手续费，实际兑换时，只拿0.0997btc去做兑换）

### 计算用户兑换实际到账数量

实际到账数量 = （用户存币数量 - 兑换手续费数量）\* 汇率 -  发币网络手续费

receiveCoinAmt = （depositCoinAmt - depositCoinAmt \* 兑换手续费率） *\** instantRate - receiveCoinFee


# 查询目标链GAS费接口

> 根据币种获取对应链的gas费用

**1. 接口调用：**

```
https://{host}/api/v1/chainFeeList
```

**2. 请求参数示例**

| 参数       | 是否必须 | 说明                        |
| -------- | ---- | ------------------------- |
| coinCode | 是    | <p>币种简称（例如ETH)</p><p></p> |

**3. 请求参数示例**

```
{
    "coinCode": "BNB(BSC)"
}
```

**4. 返回参数示例**

```
{
    "data": [
        {
            "chainFee": "0.001",//兑换完成发币需扣除的网络手续费
            "coinCode": "BNB(BSC)"
        }
    ],
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```

**5. 返回参数说明**

<table><thead><tr><th>字段名称</th><th>字段</th><th width="250">数据类型</th><th>备注</th></tr></thead><tbody><tr><td>手续费用</td><td>chianFee</td><td>String</td><td>兑换完成发币需扣除的网络手续费</td></tr><tr><td>币种简称</td><td>coinCode</td><td>String</td><td>币种简称</td></tr></tbody></table>

### 调用示例

#### Postman示例

![](/files/xtwZYx9vUwBUL5gBRSvA)

#### 返回结果示例

```
{
    "data": [
        {
            "chainFee": "0.001",//兑换完成发币需扣除的网络手续费
            "coinCode": "BNB(BSC)"
        }
    ],
    "resCode": "800",
    "resMsg": "成功",
    "resMsgEn": ""
}
```


# 免gas兑换

### 接口**调用图**

![](/files/ePsL0ciysmJOaHeCcnuS)

### 时序图

![](/files/2jxDM1PyvbRaWAebRdDn)

### 说明

1. **调用 "**[**获取币种汇率接口**](/integration/get-base-info)**", 获取返回值isSupportNoGas, 为 Y 表示支持免 gas 兑换**
2. **调用 "**[**创建订单接口**](/integration/create-order)**", 并传递isSupportNoGas字段, 成功后会返回noGasTxInfo 字段, 为待签名的 call\_data**
3. **对 call\_data 进行签名,获取r,s,v,rawTransaction等签名后的数据**
4. **调用 "**[**上传免gas兑换订单接口**](/integration/free-gas-swap)**", 传递r,s,v,rawTransaction和 "**[**创建订单接口**](/integration/create-order)**"返回的 orderId即可**

**步骤 3 示例代码**

```javascript
 const privateKey = ''; // private key
 const transactionData = '{
  gasLimit: 100000,
  data: '0xaxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  chainId: 56,
  to: '0x0000000000000xxxxx',
  nonce: 50,
  gasPrice: '3150000000'
}'
 const account = web3.eth.accounts.privateKeyToAccount(privateKey);
 const signedTx = await account.signTransaction(transactionData);
 const r = signedTx.r;
 const s = signedTx.s;
 const v = signedTx.v;
 const rawTransaction = signedTx.rawTransaction;
```

**1. 接口调用：**\
https\://{host}/gt/swap/v1/noGasSwap

**2. 请求参数示例**

| 参数             | 是否必须 | 说明                                      |
| -------------- | ---- | --------------------------------------- |
| orderId        | 是    | eg：5d3b383f-5b58-4a35-87b6-2de8d23a492e |
| r              | 是    | eg：0xxxxxxx                             |
| s              | 是    | eg：0xxxxxxx                             |
| v              | 是    | eg: 0xxx                                |
| rawTransaction | 是    | eg: 0xxxxxxx                            |

**3.请求参数示例**

```

{
    //订单号
    "orderId": "5d3b383f-xxxx-xxxx-xxxx-2de8d23a492e",
    "r": "0xxxx",
    "s": "0xxxxx",
    "v": "0xxx",
    "rawTransaction": "0xxxxxxxxx"
}

```

**4.返回结果示例**

```
{
    "orderId": "5d3b383f-xxxx-xxxx-xxxx-2de8d23a492e",
    "transactionHash": "0xxxxxxxxxxxxxx"
}
```

**5.返回参数说明**

| 字段名称    | 字段              | 数据类型   | 备注      |
| ------- | --------------- | ------ | ------- |
| 订单号     | orderId         | String | 订单号     |
| 交易 hash | transactionHash | String | 交易 hash |

### **代码示例**

**java代码示例**

````
```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"orderId\": \"5d3b383f-xxx-xxx-87b6-xxx\",\n    \"r\": \"0xxxx\",\n    \"s\": \"0xxxx\",\n    \"v\": \"0xxxx\",\n    \"rawTransaction\": \"0xxxx\"\n}");
Request request = new Request.Builder()
  .url("{host}/gt/swap/v1/noGasSwap")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();
```
````

&#x20;**curl示例**

````
```powershell
curl --location '{host}/gt/swap/v1/noGasSwap' \
--header 'Content-Type: application/json' \
--data '{
    "orderId": "5d3b383f-xxx-xxx-87b6-xxx",
    "r": "0xxxx",
    "s": "0xxxx",
    "v": "0xxxx",
    "rawTransaction": "0xxxx"
}'
```
````

#### Postman示例

<figure><img src="/files/vvni8mipIIUPZSqsLY2g" alt=""><figcaption></figcaption></figure>

###


# 技能


# 跨链闪兑技能

OmniBridge 跨链闪兑 是一个基于 OmniBridge API 的高效跨链资产交换工具。它可以帮你打破公链壁垒，轻松实现不同区块链网络间的资产转换。\
✨ 核心功能：

• 💱 实时查汇率： 随时获取任意代币组合的最新汇率、预估到账金额和手续费。\
• 🌉 一键跨链互转： 轻松发起跨链兑换（例如将 TRX 换成 TRC20-USDT，或将 ETH 跨链至 BSC）。\
• 🔍 订单追踪： 实时查询跨链订单的处理状态和进度。<br>

```
npx skills add https://github.com/OmniBridgeCloud/omnibridge-swap-skill
```


# 意图交易


# 介绍

意图交易是一种用户声明期望结果而非指定执行步骤的指令。传统的桥接方式要求用户指定确切的路径：在此处锁定代币，在彼处铸造代币，等待最终确认。意图颠覆了这种模式——用户只需说“我想要 100 个 USDT 的 BSC 代币”，然后由一个竞争性的求解器网络来找出实现这一目标的最佳方法。

对于用户而言 ：无需了解桥接、最终性或路由。只需声明结果，即可在数秒内获得结果。

<figure><img src="/files/zWenz9KvHTGIZSAZYhvO" alt=""><figcaption></figcaption></figure>


# 集成

集成意图交易和一般集成OmniBrider接口一样，只是部分接口增加入参，其他接口参考上面集成的那个标签里的接口。

### <sub>**1.查询兑换汇率接口**</sub>

```
https://{host}/api/v1/getBaseInfo
```

请求参数增加参数

| 参数        | 是否必须 | 说明     |
| --------- | ---- | ------ |
| protocols | 是    | intent |

返回参数不变

### 2.创建订单接口

```
https://{host}/api/v2/accountExchange
```

请求参数增加参数

| 参数        | 是否必须 | 说明     |
| --------- | ---- | ------ |
| protocols | 是    | intent |

返回参数不变


# solver接入

### 1.简介

Solver 是负责报价和执行兑换的服务节点。

平台会同时向多个 Solver 发起询价，选择最优报价对应的 Solver，之后该订单由该 Solver 独立完成兑换。

### 2.接入流程

一个 Solver 需要实现以下四个接口：

| 接口           | 调用方向        |
| ------------ | ----------- |
| Solver询价接口   | 平台 → Solver |
| Solver下单接口   | 平台 → Solver |
| Solver订单通知接口 | 平台 → Solver |
| Solver收款通知接口 | 平台 → Solver |

同时需要调用平台提供的两个接口：

| 接口           | 调用方向        |
| ------------ | ----------- |
| Solver提交订单接口 | Solver → 平台 |
| Solver查询订单接口 | Solver → 平台 |

### 3.流程说明

```
平台
 │
 ├──► 向多个Solver询价
 │
 ├──► 选择最优Solver
 │
 ├──► 创建订单
 │
 ├──► 通知Solver创建订单
 │
 ▼
用户存币
 │
 ▼
平台确认收款
 │
 ├──► 通知Solver开始执行
 │
 ▼
Solver发币给用户
 │
 ├──► 提交交易Hash
 │
 ▼
平台验证交易
 │
 ▼
平台结算给Solver
```

### 4.身份认证

所有 Solver 调用平台接口时，都必须携带以下参数（solverCode和solverSecret需要联系我们获取）：

| 参数           | 说明       |
| ------------ | -------- |
| solverCode   | Solver编号 |
| solverSecret | Solver密钥 |
| timestamp    | 当前毫秒时间戳  |


# Solver询价接口

平台会同时请求多个 Solver 获取报价。

**1. 接口调用，POST接口，solver提供。**

**2. 请求参数示例**

<table><thead><tr><th>参数</th><th width="104.3333740234375">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>fromAmt</td><td>是</td><td>用户兑换数量</td></tr><tr><td>fromCoin</td><td>是</td><td>用户存币币种</td></tr><tr><td>toCoin</td><td>是</td><td>用户收币币种</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "fromAmt":"1000000",
    "fromCoin":"USDT(BASE)",
    "toCoin":"USDT(ETH)"
}
```

**4.返回结果示例**

```
{
    "data":{
        "toAmt":"999800"
    }
}
```

[](<https://{host}/api/v1/queryCoinList&#xD;&#xA;>)

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="149">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>收币数量</td><td>toAmt</td><td>String</td><td>用户实际收到数量</td></tr></tbody></table>


# Solver下单接口

当用户确认兑换后，平台调用此接口创建订单。

**1. 接口调用，POST接口，solver提供。**

**2. 请求参数示例**

<table><thead><tr><th>参数</th><th width="104.3333740234375">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>intentId</td><td>是</td><td>solver订单号</td></tr><tr><td>fromAmt</td><td>是</td><td>用户存币数量</td></tr><tr><td>fromCoin</td><td>是</td><td>原币</td></tr><tr><td>toCoin</td><td>是</td><td>目标币</td></tr><tr><td>toAmt</td><td>是</td><td>用户应收到数量</td></tr><tr><td>destinationAddr</td><td>是</td><td>用户收币地址</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "intentId":"123456",
    "fromAmt":"1000000",
    "fromCoin":"USDT(BASE)",
    "toCoin":"USDT(ETH)",
    "toAmt":"999800",
    "destinationAddr":"0x123456"
}
```

**4.返回结果示例**

```
{
    "data":{
        "result":"success"
    }
}
```

[](<https://{host}/api/v1/queryCoinList&#xD;&#xA;>)

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="149">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>状态</td><td>result</td><td>String</td><td>成功返回 success</td></tr></tbody></table>


# Solver订单通知接口

平台确认用户存币成功后调用。

**1. 接口调用，POST接口，solver提供。**

**2. 请求参数示例**

<table><thead><tr><th>参数</th><th width="104.3333740234375">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>intentId</td><td>是</td><td>solver订单号</td></tr><tr><td>status</td><td>是</td><td>订单状态（success 成功，timeout 超时）</td></tr><tr><td>fromCoin</td><td>是</td><td>原币</td></tr><tr><td>toCoin</td><td>是</td><td>目标币</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "intentId":"123456",
    "status":"success",
    "fromCoin":"USDT(BASE)",
    "toCoin":"USDT(ETH)"
}
```

**4.返回结果示例**

```
{
    "data":{
        "result":"success"
    }
}
```

[](<https://{host}/api/v1/queryCoinList&#xD;&#xA;>)

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="149">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>状态</td><td>result</td><td>String</td><td>成功返回 success</td></tr></tbody></table>


# Solver收款通知接口

平台完成结算后通知 Solver。

**1. 接口调用，POST接口，solver提供。**

**2. 请求参数示例**

<table><thead><tr><th>参数</th><th width="104.3333740234375">是否必须</th><th>说明</th></tr></thead><tbody><tr><td>intentId</td><td>是</td><td>solver订单号</td></tr><tr><td>hash</td><td>是</td><td>平台转账给 Solver 的交易Hash</td></tr><tr><td>address</td><td>是</td><td>Solver收款地址</td></tr></tbody></table>

**3.请求参数示例**

```
{
    "intentId":"10001",
    "hash":"0x123456789",
    "address":"0x123456"
}
```

**4.返回结果示例**

```
{
    "data":{
        "result":"success"
    }
}
```

[](<https://{host}/api/v1/queryCoinList&#xD;&#xA;>)

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="149">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>状态</td><td>result</td><td>String</td><td>成功返回 success</td></tr></tbody></table>


# Solver提交订单接口

当 Solver 完成发币后，应立即通知平台。

**1. 接口调用：**

```
https://{host}/gt/swap/intent/submitOrder
```

**2. 请求参数示例**

| 参数            | 是否必须 | 说明          |
| ------------- | ---- | ----------- |
| intentId      | 是    | solver的订单号  |
| dstTxHash     | 是    | 发币交易Hash    |
| solverAddress | 是    | solver的存币地址 |
| solverCode    | 是    | Solver编号    |
| solverSecret  | 是    | Solver密钥    |
| timestamp     | 是    | 时间戳（毫秒）     |

**3.请求参数示例**

```ada
{
    "intentId":"10001",
    "dstTxHash":"0x123456789",
    "solverAddress":"0x123456",
    "solverSecret":"asdfg",
    "timestamp":1785822731000,
    "solverCode":"test"
}
```

**4.返回结果示例**

```
{
    "resCode":"800",
    "resMsg":"成功",
    "data":"10001"
}
```


# Solver查询订单接口

用于查询已提交订单状态。

**1. 接口调用：**

```
https://{host}/gt/swap/intent/queryOrder
```

**2. 请求参数示例**

| 参数           | 是否必须 | 说明       |
| ------------ | ---- | -------- |
| pageNo       | 否    | 页码       |
| pageSize     | 否    | 单页最大数    |
| solverCode   | 是    | Solver编号 |
| solverSecret | 是    | Solver密钥 |
| timestamp    | 是    | 时间戳（毫秒）  |

**3.请求参数示例**

```ada
{
    "pageNo":"1",
    "pageSize":"30",
    "solverSecret":"asdfg",
    "timestamp":1785822731000,
    "solverCode":"test"
}
```

**4.返回结果示例**

```
{
  "resCode": "800",
  "resMsg": "成功",
  "data": {
    "totalCount": 4,
    "pageSize": 3,
    "pageNo": 1,
    "totalPage": 2,
    "pageContent": [
      {
        "intentId": "111",
        "solverCode": "aaa",
        "solverAddress": "asdf",
        "sendCoinAmt": "8",
        "sendCoinCode": "USDC(ETH)",
        "dstTxHash": "0xe4cb9590006fa1bd99bcdf85d5546998766b4db1002ea2c67d22daf268bd9460",
        "sendTxHash": null,
        "status": "submitted",
        "createTime": "2026-06-29 19:04:04"
      },
      {
        "intentId": "112",
        "solverCode": "aaa",
        "solverAddress": "asdf",
        "sendCoinAmt": "6",
        "sendCoinCode": "USDC(ARB)",
        "dstTxHash": "0xe4cb9590006fa1bd99bcdf85d5546998766b4db1002ea2c67d22daf268bd9460",
        "sendTxHash": "0xe4cb9590006fa1bd99bcdf85d5546998766b4db1002ea2c67d22daf268bd9460",
        "status": "success",
        "createTime": "2026-06-29 19:04:04"
      }
    ]
  }
}
```

**5.返回参数说明**

<table data-header-hidden><thead><tr><th width="192.2000732421875">字段名称</th><th width="184">字段</th><th width="100">数据类型</th><th width="319">备注</th></tr></thead><tbody><tr><td>solver订单号</td><td>intentId</td><td>String</td><td>eg：111</td></tr><tr><td>solver编码</td><td>solverCode</td><td>String</td><td>eg：aaa</td></tr><tr><td>solver地址</td><td>solverAddress</td><td>String</td><td>eg：0x123456</td></tr><tr><td>发用户的金额</td><td>sendCoinAmt</td><td>String</td><td>eg：20</td></tr><tr><td>发用户的币种     </td><td>sendCoinCode</td><td>String</td><td>eg：USDC(ARB)</td></tr><tr><td>Solver发给用户的hash</td><td>dstTxHash</td><td>String</td><td>eg：0x123456789</td></tr><tr><td>发送Solver的hash</td><td>sendTxHash</td><td>String</td><td>eg：0x123456789</td></tr><tr><td>订单状态</td><td>status</td><td>String</td><td><p>wait_deposits：待存币</p><p>submitted：solver已提交发币Hash</p><p>complete：完成（兑换成功）</p><p>timeout：超时</p><p>locked：用户已存币</p><p>confirm：给solver发送代币待链上确认</p></td></tr></tbody></table>


# 支持


# 邮箱

support\@omnibridge.pro


