提供支付渠道查询、支付单创建、查询、取消以及获取支付凭证 (OpenID) 等功能。
处理合同签署或其他业务场景中的支付流程,包括查询可用渠道、创建支付单、查询状态、取消以及获取 JSAPI 支付所需的 OpenID。
重要提示: 调用本分类下所有接口时,请务必在 HTTP 请求 Header 中携带有效的 appId, accessToken, userId (操作人ID), 和 source (来源标识) 作为通用认证参数。关于 source 参数的详细说明和取值,请参考快速开始章节。文档中的请求示例将仅展示放入 Body 中的业务参数。
检查指定的企业是否已经配置了任何可用的支付渠道。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| corpId | integer (int64) | 是 | 需要查询的企业ID (目标企业) |
curl -X POST 'https://your-api-host.com/pay/payChannel/queryCorpHasPayChannel' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: OPERATOR_USER_ID' \
-d '{
"corpId": 10001
}'
{
"code": "200", // 注意:JSON 定义是 "200",但示例是 "0",以 JSON 定义为准
"msg": "成功",
"data": true // true 表示已配置,false 表示未配置
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如 corpId 无效) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 企业不存在 |
| 500 | 服务器内部错误 |
根据流程ID(通常是合同签署流程ID)和来源标识查询可用于该流程支付的渠道列表。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| flowId | integer (int64) | 是 | 流程ID (例如合同ID) |
| source | string | 是 | 来源标识 (wx, h5, alih5, pc, wxh5 等) |
curl -X POST 'https://your-api-host.com/pay/payChannel/queryChannelList' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: OPERATOR_USER_ID' \
-d '{
"flowId": 1234567890,
"source": "pc"
}'
{
"code": "200",
"msg": "成功",
"data": [ // 支付渠道基本信息列表
{
"id": 1, // 支付渠道ID
"corpId": 10001, // 企业ID (商户主体)
"providerCode": "alipay", // 支付服务商代码
"providerName": "支付宝",
"payTypeCode": "SCAN_CODE", // 支付方式代码 (例如扫码支付)
"appId": "alipay_app_id_for_pc" // 支付渠道关联的支付AppID
},
{
"id": 3,
"corpId": 10001,
"providerCode": "wxpay",
"providerName": "微信支付",
"payTypeCode": "NATIVE", // Native 支付 (类似扫码)
"appId": "wxpay_appid_for_pc"
}
// ... 其他可用渠道
]
}
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer (int64) | 支付渠道ID |
| corpId | integer (int64) | 企业ID (商户主体) |
| providerCode | string | 支付服务商代码 (alipay, wxpay) |
| providerName | string | 支付服务商名称 |
| payTypeCode | string | 支付方式代码 (SCAN_CODE, JSAPI, NATIVE, ...) |
| appId | string | 支付渠道关联的应用ID (支付宝/微信的AppID) |
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如flowId无效, source无效) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 流程不存在或没有可用支付渠道 |
| 500 | 服务器内部错误 |
为特定业务(如合同签署、购买服务等)创建一个支付单,并返回用于调起支付所需的信息(如支付链接、二维码内容或JSAPI参数)。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID (通常也是付款人) |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| channelId | integer (int64) | 是 | 选择的支付通道ID (来自查询渠道列表接口) |
| signerId | integer (int64) | 是 | 合同参与方记录ID (关联支付与哪个签署方/业务环节) |
| openId | string | 否 | 微信/支付宝小程序的 `openId` (JSAPI/小程序支付方式必需) |
| returnUrl | string | 否 | 支付完成后跳转的页面地址 (对需要页面跳转的支付方式有效) |
| source | string | 否 | 来源标识 (wx, h5, alih5, pc, wxh5 等) |
curl -X POST 'https://your-api-host.com/pay/payOrder/add' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: PAYER_USER_ID' \
-d '{
"channelId": 1, // 选择上面查询到的支付宝扫码支付渠道
"signerId": 8002, // 假设关联到合同参与方 8002
"returnUrl": "https://your-website.com/payment/success",
"source": "pc"
}'
{
"code": "200",
"msg": "成功",
"data": { // 支付链接基本信息
"id": 9001, // 新创建的支付单ID
"orderCode": "PAY20240110123456789", // 支付单号
"payTypeCode": "SCAN_CODE", // 支付类型代码
"merchantAccount": "seller_alipay_account@example.com",
"merchantType": 2, // 商户类型
"businessOrderNo": "CONTRACT12345_PAY", // 关联的业务单号
"status": 0, // 0: 订单生成 (待支付)
"goodsType": 1, // 1: 单合同签
"goodsName": "合同签署服务费",
"amount": 10.00, // 支付金额
"payUrl": "https://qr.alipay.com/..." // 支付链接 (扫码支付时是二维码内容, H5是跳转链接, JSAPI时可能是调起支付的JSON参数)
}
}
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer (int64) | 支付单ID |
| orderCode | string | 支付单编码 |
| payTypeCode | string | 支付类型代码 (SCAN_CODE, JSAPI, H5, NATIVE 等) |
| merchantAccount | string | 商户收款账户 |
| merchantType | integer (int32) | 商户类型 (0:服务商, 1:二级, 2:普通) |
| businessOrderNo | string | 业务单号 |
| status | integer (int32) | 支付状态 (0:生成, 1:支付中, 2:成功, 3:失败, 4:退款) |
| goodsType | integer (int32) | 商品类型 (0:套餐, 1:单签, 2:收款, 3:出证) |
| goodsName | string | 商品名称 |
| amount | number | 支付金额 |
| payUrl | string | 支付链接/调起参数 (根据 payTypeCode 不同,内容不同) |
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如channelId无效, signerId无效, JSAPI缺少openId/source) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 关联的合同、参与方或支付渠道不存在 |
| 500 | 服务器内部错误 (创建支付单失败等) |
| 110X | 具体业务错误 (如支付金额计算错误、支付渠道配置错误、重复创建等) |
分页查询支付单列表,支持多种条件筛选。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| id | integer (int64) | 否 | 支付单ID (精确查询) |
| orderCode | string | 否 | 支付单编码 (精确查询) |
| businessOrderNo | string | 否 | 业务单号 (精确查询) |
| psnId | integer (int64) | 否 | 支付人ID |
| psnName | string | 否 | 支付人名称 (模糊查询) |
| goodsName | string | 否 | 商品名称 (模糊查询) |
| goodsType | integer (int32) | 否 | 商品类型 (0-套餐, 1-单签, 2-收款, 3-出证) |
| status | integer (int32) | 否 | 支付状态 (0-生成, 1-支付中, 2-成功, 3-失败, 4-退款) |
| payTypeCode | string | 否 | 支付类型代码 |
| providerCode | string | 否 | 支付服务商代码 |
| orderType | integer (int32) | 否 | 订单类型 (0-个人, 1-企业) |
| beginTime | string (date-time) | 否 | 创建时间范围 - 开始 (YYYY-MM-DD HH:mm:ss) |
| endTime | string (date-time) | 否 | 创建时间范围 - 结束 (YYYY-MM-DD HH:mm:ss) |
| listPageNo | integer (int32) | 否 | 页码 (默认1) |
| listPageSize | integer (int32) | 否 | 每页数量 (默认10或20) |
curl -X POST 'https://your-api-host.com/pay/payOrder/listByPage' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: OPERATOR_USER_ID' \
-d '{
"status": 2,
"beginTime": "2024-01-01 00:00:00",
"endTime": "2024-01-10 23:59:59",
"listPageNo": 1,
"listPageSize": 10
}'
{
"code": "200",
"msg": "成功",
// 注意:JSON定义未明确分页结构,以下为推测结构
"listPageNo": 1,
"countInPage": 1,
"listPageCount": 1,
"totalCount": 1,
"data": [ // 支付单基本信息列表 (结构见下方支付单查询接口)
{
"id": 9001,
"orderCode": "PAY20240110123456789",
"businessOrderNo": "CONTRACT12345_PAY",
"amount": 10.00,
"status": 2, // 2:支付成功
"goodsName": "合同签署服务费",
"goodsType": 1,
"payTypeCode": "SCAN_CODE",
"providerCode": "alipay",
"psnId": 20002,
"psnName": "李四",
"corpId": 10001,
"corpName": "示例科技有限公司",
"orderType": 1,
"createTime": "2024-01-10T11:00:00.000+0800",
"successTime": "2024-01-10T11:05:00.000+0800"
// ... 其他字段
}
// ...更多支付单
]
}
注意: 响应体中分页信息的具体结构 (listPageNo, countInPage, listPageCount, totalCount) 未在 OpenAPI 定义中明确,以上字段仅为常见示例。
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | integer (int64) | 支付单ID |
| orderType | integer (int32) | 订单类型 (0:个人, 1:企业) |
| orderCode | string | 支付单编码 |
| corpId, corpName | integer(int64) / string | 企业ID/名称 (商户主体) |
| psnId, psnName | integer(int64) / string | 支付人ID/名称 |
| channelModelId | integer (int64) | 通道方式ID |
| providerCode | string | 支付服务商 (alipay, wxpay) |
| payTypeCode | string | 支付类型代码 (SCAN_CODE, JSAPI, ...) |
| businessOrderNo | string | 业务单号 |
| goodsType | integer (int32) | 商品类型 (0, 1, 2, 3) |
| goodsName, goodsBody | string | 商品名称/描述 |
| amount | number | 支付金额 |
| status | integer (int32) | 支付状态 (0-4) |
| expiredTime, successTime, createTime | string (date-time) | 有效/成功/创建时间 |
| refundTimes | integer (int32) | 退款次数 |
| refundAmount | number | 退款金额 |
| remark | string | 备注 |
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如日期格式错误) |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 500 | 服务器内部错误 |
根据支付单ID查询单个支付单的详细信息。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| id | integer (int64) | 是 | 需要查询的支付单ID |
curl -X POST 'https://your-api-host.com/pay/payOrder/query' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: OPERATOR_USER_ID' \
-d '{
"id": 9001
}'
{
"code": "200",
"msg": "成功",
"data": { // 支付单基本信息
"id": 9001,
"orderCode": "PAY20240110123456789",
"businessOrderNo": "CONTRACT12345_PAY",
"amount": 10.00,
"status": 2, // 2:支付成功
"goodsName": "合同签署服务费",
"goodsType": 1,
"goodsBody": "为合同 CONTRACT12345 支付签署服务费",
"channelModelId": 1, // 关联的通道方式ID
"payTypeCode": "SCAN_CODE",
"providerCode": "alipay",
"psnId": 20002,
"psnName": "李四",
"corpId": 10001,
"corpName": "示例科技有限公司",
"orderType": 1, // 1:企业(发起或支付主体)
"createTime": "2024-01-10T11:00:00.000+0800",
"successTime": "2024-01-10T11:05:00.000+0800",
"expiredTime": "2024-01-10T12:00:00.000+0800",
"refundAmount": 0.00,
"refundTimes": 0,
"remark": "用户扫码支付成功"
// "extendInfo": {} // 扩展信息可能在此处返回
}
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如id无效) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 支付单不存在 |
| 500 | 服务器内部错误 |
取消一个尚未支付的支付单。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 操作人用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| id | integer (int64) | 是 | 需要取消的支付单ID |
curl -X POST 'https://your-api-host.com/pay/payOrder/cancel' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: OPERATOR_USER_ID' \
-d '{
"id": 9002 // 假设要取消支付单 9002
}'
{
"code": "200",
"msg": "成功",
"data": {} // 通常成功取消不返回具体数据
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如id无效) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 支付单不存在 |
| 11XX | 业务错误 (如订单状态不允许取消) |
| 500 | 服务器内部错误 |
重要说明: 此接口主要用于配合微信或支付宝的 **JSAPI/小程序** 支付方式。在用户通过微信或支付宝前端授权流程后,使用授权返回的 `authCode` 调用此接口,以换取用户在该支付渠道下的 `openId`。这个 `openId` 是后续调用 创建支付单 接口并发起 JSAPI/小程序支付时必需的参数。
获取用户在特定支付渠道(如微信、支付宝)下的 `openId`。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 有效访问令牌 |
| userId | integer (int64) | 是 | 需要获取 OpenID 的目标用户ID |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| channelModelId | integer (int64) | 是 | 支付渠道ID (指明是哪个渠道,如微信JSAPI渠道) |
| authCode | string | 是 | 用户通过微信/支付宝前端授权后获得的授权码 (code) |
| source | string | 是 | 来源标识 (wx, alih5, wxh5 等,需与前端授权流程对应) |
curl -X POST 'https://your-api-host.com/pay/payChannel/getPayOpenId' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: USER_ID_TO_GET_OPENID' \
-d '{
"channelModelId": 2, // 假设 2 是微信 JSAPI 渠道
"authCode": "code_from_wechat_oauth",
"source": "wx" // 假设来自微信小程序
}'
{
"code": "200",
"msg": "成功",
"data": "wxopenid_for_target_user" // 返回的 openId
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如authCode无效或已过期, channelModelId无效, source不匹配) |
| 401 | 未授权 (Token无效/过期) |
| 403 | 禁止访问 (权限不足) |
| 404 | 支付渠道或用户不存在 |
| 500 | 服务器内部错误 (调用微信/支付宝接口失败等) |