> For the complete documentation index, see [llms.txt](https://platformv2docs.chainup.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://platformv2docs.chainup.com/zhi-fu.md).

# 支付

## 第一步

## 创建支付订单

<mark style="color:green;">`POST`</mark> `https://service.xxx.com/platformapi/chainup/open/opay/createThirdOrder`

需要将参数表格中的数据包装成json字符串 利用rsa 进行参数加密和签名 作为body中的data和sign

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Content-Type	<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                      | Type   | Description                  |
| ----------------------------------------- | ------ | ---------------------------- |
| app\_id<mark style="color:red;">\*</mark> | String | 商家唯一app\_id                  |
| time                                      | String | 请求时间                         |
| sign                                      | String | 用rsa\_third\_pri对query中的数据签名 |
| data                                      | String | rsa\_saas\_pub加密query中数据     |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": "", //返回code	
    "msg": "", //成功或失败提示信息	
    "data": "",
    "sign": ""
}

data 中解密后的结构体
{
  "orderNum":"xxxx",  //订单编号		
}
```

{% endtab %}
{% endtabs %}

以下为参与rsa加密的参数:

<table><thead><tr><th>名称</th><th>类型</th><th>是否必需</th><th width="250">例子</th><th>描述</th></tr></thead><tbody><tr><td>appOrderId</td><td>String</td><td>YES</td><td>11321</td><td>商家端订单id</td></tr><tr><td>openId</td><td>String</td><td>YES</td><td>2ae04ed9165624419bad68e9e0f3f29fbd</td><td>付款用户的唯一id</td></tr><tr><td>userId</td><td>String</td><td>YES</td><td>22033390</td><td>付款用户uid(与openid必须存在一个) ||同时存在优先取openid</td></tr><tr><td>orderAmount</td><td>String</td><td>YES</td><td>10</td><td>金额</td></tr><tr><td>orderSceneType</td><td>String</td><td>NO</td><td>1000011</td><td>订单的场景类型，数字枚举</td></tr><tr><td>payCoinSymbol</td><td>String</td><td>YES</td><td>BTC</td><td>支付币种，大写如BTCappKey</td></tr><tr><td>returnPage</td><td>String</td><td>YES</td><td>https://www.google.com</td><td>前台跳转商家的页面</td></tr><tr><td>notifyPage</td><td>String</td><td>YES</td><td>https://www.google.com</td><td>后台通知商家的地址</td></tr><tr><td>token</td><td>String</td><td>NO</td><td>2ae04ed9165624419bad68e9e0f3f29fbd</td><td>授权的token</td></tr><tr><td>goods</td><td>String</td><td>NO</td><td>商品描述信息，可不传，传入必须为合法的json格式，否则订单创建失败 ；json中的子字段为 name : 商品名称 desc:商品描述 例：[{"name":"商品1","desc":"商品信息123balabala"},{"name":"商品2","desc":"商品信息23balabala"},{"name":"商品3","desc":"商品信息33balabala"}]</td><td></td></tr></tbody></table>

## 第二步

## 支付页面

<mark style="color:blue;">`GET`</mark> `https://service.xxx.com/platform/pay.html`

最后支付页瓶装完成后为:\
[**https://service.xxx.com/**](https://platform.xxx.com/pay.html?appKey=xxx\&openId=xxx\&token=xxx\&orderNum=xxx)[**platform**](http://platform.apple.com/?appKey=apple_6746\&redirectUrl=https://www.chainup.com)**/**[**pay.html?appKey=xxx\&openId=xxx\&token=xxx\&orderNum=xxx**](https://platform.xxx.com/pay.html?appKey=xxx\&openId=xxx\&token=xxx\&orderNum=xxx)

#### Query Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| appKey                                  | String |                           |
| orderNum                                | String | 平台编号支付人 openId，必须是订单创建人   |
| openId                                  | String | 支付人 openId，必须是订单创建人       |
| userId                                  | String | 付款用户 uid(与 openid 必须存在一个) |
| token<mark style="color:red;">\*</mark> | String | 授权的 token                 |

参数:

uid 与 openid 二选一必填

<table><thead><tr><th>名称</th><th>类型</th><th>是否必需</th><th width="250">例子</th><th>描述</th></tr></thead><tbody><tr><td>appKey</td><td>String</td><td>YES</td><td>xxx_xxx</td><td>商家唯一appKey</td></tr><tr><td>orderNum</td><td>String</td><td>YES</td><td>1000000009</td><td>平台编号支付人 openId，必须是订单创建人</td></tr><tr><td>openId</td><td>String</td><td>NO</td><td>2ae04ed9165624419bad68e9e0f3f29fbd</td><td>付款用户的唯一id</td></tr><tr><td>userId</td><td>String</td><td>NO</td><td>2023203</td><td>付款用户 uid</td></tr><tr><td>token</td><td>String</td><td>NO</td><td>2ae04ed9165624419bad68e9e0f3f29fbd</td><td>授权的token</td></tr></tbody></table>

## 第三步

## 支付结果回调接口

<mark style="color:green;">`POST`</mark> `https://service.xxx.com/notifyPage`

该接口URL由对接商户提供，第一步创建订单时传出的参数：notifyPage\
支付完成后，支付结果会通过notifyPage对应的URL进行通知

需要将参数表格中的数据包装成json字符串 利用rsa 进行参数加密和签名 作为body中的data和sign

#### Headers

| Name                                           | Type   | Description      |
| ---------------------------------------------- | ------ | ---------------- |
| Content-Type<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                      | Type   | Description                  |
| ----------------------------------------- | ------ | ---------------------------- |
| app\_id<mark style="color:red;">\*</mark> | String | 商家唯一app\_id                  |
| time                                      | String | 请求时间                         |
| sign                                      | String | 用rsa\_third\_pri对query中的数据签名 |
| data                                      | String | rsa\_saas\_pub加密query中数据     |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": "", //返回code	
    "msg": "", //成功或失败提示信息 客户端收到请求后返回success，代表已收到请求	
    "data": "",
    "sign": ""
}
```

{% endtab %}
{% endtabs %}

以下为参与rsa加密的参数:

<table><thead><tr><th>名称</th><th width="124">类型</th><th>是否必需</th><th width="250">例子</th><th>描述</th></tr></thead><tbody><tr><td>outOrderId</td><td>String</td><td>YES</td><td>1000000009</td><td>商家端订单号</td></tr><tr><td>orderNum</td><td>String</td><td>YES</td><td>10000000002</td><td>开放平台订单编号</td></tr><tr><td>orderStatus</td><td>String</td><td>YES</td><td>1</td><td>订单状态(1 待支付； 2 支付失败；3 支付成功； 0 已关闭)</td></tr><tr><td>payAmount</td><td>String</td><td>YES</td><td>200</td><td>订单金额</td></tr><tr><td>returnUrl</td><td>String</td><td>YES</td><td>https://www.google.com</td><td>同步通知页面(下单接口传入)</td></tr></tbody></table>

## 查询支付订单

## 查询支付订单

<mark style="color:green;">`POST`</mark> `https://service.xxx.com/platformapi/chainup/open/opay/orderDetail`

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Content-Type	<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                       | Type   | Description |
| ------------------------------------------ | ------ | ----------- |
| appKey<mark style="color:red;">\*</mark>   | String | 商家唯一app\_id |
| orderNum<mark style="color:red;">\*</mark> | String | 平台方订单编号     |
| token                                      | String | 授权的token    |

{% tabs %}
{% tab title="200: OK " %}

```javascript

{
    "totalAccount": [ //商户支持的所有账户list	
      {
        "accountName": "nostrud qui", //账户名称(下拉菜单中显示)	
        "accountType": -88610101, //账户类型(id)需要回传给后端的相当于id字段	
        "accountBalance": 24283812.991745576 //支付用户该账户的余额
      },
      {
        "accountName": "consequat tempor nulla ullamco",
        "accountType": 57824482,
        "accountBalance": -38228228.129181474
      }
    ],
    "googleStatus": -93156512.86876366, //是否开启google验证；0-未开启,1-开启
    "appOrderId": "non aute ut", //商家订单id
    "sign": "est aliqua non eu", //签名
    "orderNum": "magna laborum dolore proident", //订单编号
    "orderStatus": "voluptate do eu Lorem", //订单状态(1 待支付； 2 支付失败；3 支付成功； 0 已关闭)
    "userId": 8957369, //用户id	
    "isOpenMobileCheck": "do consequat", //是否开启手机短信效验；0-未开启,1-开启
    "orderAmount": "aute enim ut", //订单金额
    "payCoinSymbol": "nulla", //支付币种	
    "ctime": "id ad conse",
    "appKey": "in aute",
    "showPrecision": "voluptate occaecat reprehenderit" //显示的精度
}
```

{% endtab %}
{% endtabs %}

参数:

<table><thead><tr><th>名称</th><th width="124">类型</th><th>是否必需</th><th width="250">例子</th><th>描述</th></tr></thead><tbody><tr><td>app_id</td><td>String</td><td>YES</td><td>xxx_xxx</td><td>商家唯一appKey</td></tr><tr><td>orderNum</td><td>String</td><td>YES</td><td>10000000002</td><td>开放平台订单编号</td></tr><tr><td>token</td><td>String</td><td>NO</td><td>2ae04ed9165624419bad68e9e0f3f29fbd</td><td>授权的token</td></tr></tbody></table>

## 商家日贴对账单

## 商家日贴对账单

<mark style="color:green;">`POST`</mark> `https://service.xxx.com/platformapi/chainup/open/opay/merchantBillingDay`

需要将参数表格中的数据包装成json字符串 利用rsa 进行参数加密和签名 作为body中的data和sign

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Content-Type	<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                      | Type   | Description                  |
| ----------------------------------------- | ------ | ---------------------------- |
| sign<mark style="color:red;">\*</mark>    | String | 用rsa\_third\_pri对query中的数据签名 |
| app\_id<mark style="color:red;">\*</mark> | String | 商家唯一app\_id                  |
| time<mark style="color:red;">\*</mark>    | String | 请求时间                         |
| data<mark style="color:red;">\*</mark>    | String | rsa\_saas\_pub加密query中数据     |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": "", //返回code	
    "msg": "", //成功或失败提示信息	
    "data": "",
    "sign": ""
}

data 中解密后的结构体
{
    "count": 1000, //当日记录总数；  
    "list": [
      {
        "merchantUserId": 23000, //商家收款用户id；
        "appOrderId": "100000019", //商家端订单id；
        "payCoinSymbol": "btc", //支付使用币种； 
        "orderAmount": 10, //订单操作数量；
        "orderType": 1, //订单类型(1、支付订单;11、划转(退款)订单)  
        "userId": 230000, //付款用户id；付款用户id；  
        "openId": "2ae04ed9165624419bad68e9e0f3f29fbd", //付款用户openid；  
        "createTime": "11200321123", //下单时间，到毫秒； 
        "payTime": "320012321" //实际支付完成时间，到毫秒；  
      },
      {
        "merchantUserId": 23000, //商家收款用户id；
        "appOrderId": "100000019", //商家端订单id；
        "payCoinSymbol": "btc", //支付使用币种； 
        "orderAmount": 10, //订单操作数量；
        "orderType": 1, //订单类型(1、支付订单;11、划转(退款)订单)  
        "userId": 230000, //付款用户id；付款用户id；  
        "openId": "2ae04ed9165624419bad68e9e0f3f29fbd", //付款用户openid；  
        "createTime": "11200321123", //下单时间，到毫秒； 
        "payTime": "320012321" //实际支付完成时间，到毫秒； 
      }
    ]
}
```

{% endtab %}
{% endtabs %}

以下为参与rsa加密的参数:

<table><thead><tr><th width="136">名称</th><th width="124">类型</th><th>是否必需</th><th width="214">例子</th><th>描述</th></tr></thead><tbody><tr><td>orderType</td><td>String</td><td>YES</td><td>1</td><td>订单类型（1=支付订单；11=划转订单），不传查询所有订单</td></tr><tr><td>day</td><td>String</td><td>YES</td><td>2099-01-01</td><td>统计的日期，格式：yyyy-MM-dd，不符合格式参数异常；不传查询当日订单</td></tr><tr><td>pageNum</td><td>String</td><td>YES</td><td>1</td><td>查询第几页，同分页逻辑；不传查所有</td></tr><tr><td>pageSize</td><td>String</td><td>YES</td><td>200</td><td>每页大小，同分页逻辑；不传查2000（最大为2000，数据超过2000请分页查询）</td></tr></tbody></table>

## 取消待支付订单

<mark style="color:green;">`POST`</mark> `https://service.xxx.com/opay/cancelOrder`

需要将参数表格中的数据包装成json字符串 利用rsa 进行参数加密和签名 作为body中的data和sign

#### Headers

| Name                                            | Type   | Description      |
| ----------------------------------------------- | ------ | ---------------- |
| Content-Type	<mark style="color:red;">\*</mark> | String | application/json |

#### Request Body

| Name                                      | Type   | Description                  |
| ----------------------------------------- | ------ | ---------------------------- |
| app\_id<mark style="color:red;">\*</mark> | String | 商家唯一app\_id                  |
| time<mark style="color:red;">\*</mark>    | String | 请求时间                         |
| sign<mark style="color:red;">\*</mark>    | String | 用rsa\_third\_pri对query中的数据签名 |
| data<mark style="color:red;">\*</mark>    | String | rsa\_saas\_pub加密query中数据     |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
    "code": "", //返回code	
    "msg": "", //成功或失败提示信息	
    "data": "",
    "sign": ""
}
```

{% endtab %}
{% endtabs %}

以下为参与rsa加密的参数:

<table><thead><tr><th width="136">名称</th><th width="124">类型</th><th>是否必需</th><th width="214">例子</th><th>描述</th></tr></thead><tbody><tr><td>orderNum</td><td>String</td><td>YES</td><td>10000001</td><td>订单编号</td></tr></tbody></table>
