# 支付

## 第一步

## 创建支付订单

<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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://platformv2docs.chainup.com/zhi-fu.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
