> For the complete documentation index, see [llms.txt](https://docs.cn.omnibridge.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cn.omnibridge.pro/integration/free-gas-swap.md).

# 免gas兑换

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

![](/files/ePsL0ciysmJOaHeCcnuS)

### 时序图

![](/files/2jxDM1PyvbRaWAebRdDn)

### 说明

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

###
