支付管理 API

提供支付渠道查询、支付单创建、查询、取消以及获取支付凭证 (OpenID) 等功能。

支付管理

处理合同签署或其他业务场景中的支付流程,包括查询可用渠道、创建支付单、查询状态、取消以及获取 JSAPI 支付所需的 OpenID。

重要提示: 调用本分类下所有接口时,请务必在 HTTP 请求 Header 中携带有效的 appId, accessToken, userId (操作人ID), 和 source (来源标识) 作为通用认证参数。关于 source 参数的详细说明和取值,请参考快速开始章节。文档中的请求示例将仅展示放入 Body 中的业务参数。

POST /pay/payChannel/queryCorpHasPayChannel 查询企业是否配置了支付渠道

检查指定的企业是否已经配置了任何可用的支付渠道。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID

请求参数 (Body - 查询企业是否有支付渠道参数)

参数名类型必填描述
corpIdinteger (int64)需要查询的企业ID (目标企业)

请求示例

CURL
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
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "code": "200", // 注意:JSON 定义是 "200",但示例是 "0",以 JSON 定义为准
  "msg": "成功",
  "data": true // true 表示已配置,false 表示未配置
}
									

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如 corpId 无效)
401未授权 (Token无效/过期)
403禁止访问 (权限不足)
404企业不存在
500服务器内部错误
POST /pay/payChannel/queryChannelList 查询流程支付渠道列表

根据流程ID(通常是合同签署流程ID)和来源标识查询可用于该流程支付的渠道列表。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID

请求参数 (Body - 查询流程支付渠道列表请求参数)

参数名类型必填描述
flowIdinteger (int64)流程ID (例如合同ID)
sourcestring来源标识 (wx, h5, alih5, pc, wxh5 等)

请求示例

CURL
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"
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "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"
    }
    // ... 其他可用渠道
  ]
}
									

成功响应参数 (data 字段内数组元素的结构 - 支付渠道基本信息)

参数名类型描述
idinteger (int64)支付渠道ID
corpIdinteger (int64)企业ID (商户主体)
providerCodestring支付服务商代码 (alipay, wxpay)
providerNamestring支付服务商名称
payTypeCodestring支付方式代码 (SCAN_CODE, JSAPI, NATIVE, ...)
appIdstring支付渠道关联的应用ID (支付宝/微信的AppID)

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如flowId无效, source无效)
401未授权 (Token无效/过期)
403禁止访问 (权限不足)
404流程不存在或没有可用支付渠道
500服务器内部错误
POST /pay/payOrder/add 创建支付单

为特定业务(如合同签署、购买服务等)创建一个支付单,并返回用于调起支付所需的信息(如支付链接、二维码内容或JSAPI参数)。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID (通常也是付款人)

请求参数 (Body - 支付单创建参数)

参数名类型必填描述
channelIdinteger (int64)选择的支付通道ID (来自查询渠道列表接口)
signerIdinteger (int64)合同参与方记录ID (关联支付与哪个签署方/业务环节)
openIdstring微信/支付宝小程序的 `openId` (JSAPI/小程序支付方式必需)
returnUrlstring支付完成后跳转的页面地址 (对需要页面跳转的支付方式有效)
sourcestring来源标识 (wx, h5, alih5, pc, wxh5 等)

请求示例

CURL
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"
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "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参数)
  }
}
									

成功响应参数 (data 字段内 - 支付链接基本信息)

参数名类型描述
idinteger (int64)支付单ID
orderCodestring支付单编码
payTypeCodestring支付类型代码 (SCAN_CODE, JSAPI, H5, NATIVE 等)
merchantAccountstring商户收款账户
merchantTypeinteger (int32)商户类型 (0:服务商, 1:二级, 2:普通)
businessOrderNostring业务单号
statusinteger (int32)支付状态 (0:生成, 1:支付中, 2:成功, 3:失败, 4:退款)
goodsTypeinteger (int32)商品类型 (0:套餐, 1:单签, 2:收款, 3:出证)
goodsNamestring商品名称
amountnumber支付金额
payUrlstring支付链接/调起参数 (根据 payTypeCode 不同,内容不同)

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如channelId无效, signerId无效, JSAPI缺少openId/source)
401未授权 (Token无效/过期)
403禁止访问 (权限不足)
404关联的合同、参与方或支付渠道不存在
500服务器内部错误 (创建支付单失败等)
110X具体业务错误 (如支付金额计算错误、支付渠道配置错误、重复创建等)
POST /pay/payOrder/listByPage 支付单列表查询

分页查询支付单列表,支持多种条件筛选。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID

请求参数 (Body - 查询支付单列表请求参数)

参数名类型必填描述
idinteger (int64)支付单ID (精确查询)
orderCodestring支付单编码 (精确查询)
businessOrderNostring业务单号 (精确查询)
psnIdinteger (int64)支付人ID
psnNamestring支付人名称 (模糊查询)
goodsNamestring商品名称 (模糊查询)
goodsTypeinteger (int32)商品类型 (0-套餐, 1-单签, 2-收款, 3-出证)
statusinteger (int32)支付状态 (0-生成, 1-支付中, 2-成功, 3-失败, 4-退款)
payTypeCodestring支付类型代码
providerCodestring支付服务商代码
orderTypeinteger (int32)订单类型 (0-个人, 1-企业)
beginTimestring (date-time)创建时间范围 - 开始 (YYYY-MM-DD HH:mm:ss)
endTimestring (date-time)创建时间范围 - 结束 (YYYY-MM-DD HH:mm:ss)
listPageNointeger (int32)页码 (默认1)
listPageSizeinteger (int32)每页数量 (默认10或20)

请求示例

CURL
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
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "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 定义中明确,以上字段仅为常见示例。

成功响应参数 (data 字段内数组元素的结构 - 支付单基本信息)

参数名类型描述
idinteger (int64)支付单ID
orderTypeinteger (int32)订单类型 (0:个人, 1:企业)
orderCodestring支付单编码
corpId, corpNameinteger(int64) / string企业ID/名称 (商户主体)
psnId, psnNameinteger(int64) / string支付人ID/名称
channelModelIdinteger (int64)通道方式ID
providerCodestring支付服务商 (alipay, wxpay)
payTypeCodestring支付类型代码 (SCAN_CODE, JSAPI, ...)
businessOrderNostring业务单号
goodsTypeinteger (int32)商品类型 (0, 1, 2, 3)
goodsName, goodsBodystring商品名称/描述
amountnumber支付金额
statusinteger (int32)支付状态 (0-4)
expiredTime, successTime, createTimestring (date-time)有效/成功/创建时间
refundTimesinteger (int32)退款次数
refundAmountnumber退款金额
remarkstring备注

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如日期格式错误)
401未授权
403禁止访问
500服务器内部错误
POST /pay/payOrder/query 支付单查询

根据支付单ID查询单个支付单的详细信息。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID

请求参数 (Body - 查询支付单请求参数)

参数名类型必填描述
idinteger (int64)需要查询的支付单ID

请求示例

CURL
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
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "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服务器内部错误
POST /pay/payOrder/cancel 支付单取消

取消一个尚未支付的支付单。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)操作人用户ID

请求参数 (Body - 查询支付单请求参数)

参数名类型必填描述
idinteger (int64)需要取消的支付单ID

请求示例

CURL
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
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "code": "200",
  "msg": "成功",
  "data": {} // 通常成功取消不返回具体数据
}
									

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如id无效)
401未授权 (Token无效/过期)
403禁止访问 (权限不足)
404支付单不存在
11XX业务错误 (如订单状态不允许取消)
500服务器内部错误
POST /pay/payChannel/getPayOpenId 获取用户的openId

重要说明: 此接口主要用于配合微信或支付宝的 **JSAPI/小程序** 支付方式。在用户通过微信或支付宝前端授权流程后,使用授权返回的 `authCode` 调用此接口,以换取用户在该支付渠道下的 `openId`。这个 `openId` 是后续调用 创建支付单 接口并发起 JSAPI/小程序支付时必需的参数。

获取用户在特定支付渠道(如微信、支付宝)下的 `openId`。

请求 Header (通用认证参数)

参数名类型必填描述
appIdstring您的应用ID
accessTokenstring有效访问令牌
userIdinteger (int64)需要获取 OpenID 的目标用户ID

请求参数 (Body - 获取用户的openId参数)

参数名类型必填描述
channelModelIdinteger (int64)支付渠道ID (指明是哪个渠道,如微信JSAPI渠道)
authCodestring用户通过微信/支付宝前端授权后获得的授权码 (code)
sourcestring来源标识 (wx, alih5, wxh5 等,需与前端授权流程对应)

请求示例

CURL
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" // 假设来自微信小程序
}'
									

响应

成功响应 (200 OK)
错误响应
{
  "code": "200",
  "msg": "成功",
  "data": "wxopenid_for_target_user" // 返回的 openId
}
									

错误码

HTTP状态码/业务码描述
200成功
400请求参数错误 (如authCode无效或已过期, channelModelId无效, source不匹配)
401未授权 (Token无效/过期)
403禁止访问 (权限不足)
404支付渠道或用户不存在
500服务器内部错误 (调用微信/支付宝接口失败等)