Skip to content

统一支付

更新时间:2026/7/26 21:23:52

接口说明

商户系统通过该接口发起支付请求,系统根据支付产品和方式返回对应的支付参数体(payBody),商户前端据此调起支付或展示二维码。

适用于商户后端已确定通道与支付方式的「直连支付」场景;若需由平台收银台/聚合页选择支付方式,请使用 网关预下单

请求地址

POST /unipay/pay

  • 认证:RSA 签名(@PaymentVerify
  • 响应:DaxResult<NormalPayResult>

请求参数

基础参数(所有 /unipay/* 接口通用)

继承自 PaymentCommonParam / MerchantPaymentCommonParam

参数类型必填最大长度描述
mchNostring32商户号
appIdstring32应用 ID
channelMchNostring32通道商户号(调试或直接指定通道时传入,正常路由场景留空)
reqIdstring64请求唯一标识
nonceStrstring32随机字符串
signstring1024RSA 签名(Base64)
reqTimestring请求时间(yyyy-MM-dd HH:mm:ss,GMT+8)
clientIpstring64客户端 IP

业务参数

参数类型必填最大长度描述
bizOrderNostring100商户订单号,商户系统唯一
titlestring100订单标题
descriptionstring50订单描述
amountlong订单金额,单位分(最小 1,最大 9999999999)
productstring32支付产品编码(为空时由路由引擎自动选择)
methodstring32支付方式,如 wechat_qralipay_pc(见下方码表)
capabilitystring32支付能力编码(直接指定通道时作为输入参与校验)
openIdstring128用户标识(微信 jsapi/mini 场景必填)
channelAppIdstring128通道应用 ID(非空则强制使用,须预先配置)
authCodestring128授权码(付款码/被扫支付必填)
limitPaystring[]10限制支付的支付方式列表(如 no_credit 禁用信用卡)
extraParamstring2048通道扩展参数(JSON)
goodsDetailobject[]50订单商品明细列表(用于单品营销、电子发票等)
notifyUrlstring200异步通知地址
returnUrlstring200同步跳转地址
attachstring500附加数据,回调时原样返回
expiredTimestring订单过期时间(yyyy-MM-dd HH:mm:ss,GMT+8,空则默认 30 分钟)
terminalobject终端信息(线下 POS/收银台场景)

method 的必填性

跟随通道路由时一般必填;被扫场景可仅传 authCode(平台按前缀识别回填);已直接指定 channelMchNo + capability 时可空(按能力反推)。

请求示例

json
{
  "mchNo": "M200000001",
  "appId": "APP001",
  "reqId": "REQ20241201001",
  "nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS",
  "reqTime": "2024-12-01 12:00:00",
  "sign": "Base64签名值",
  "bizOrderNo": "ORDER20241201001",
  "title": "测试商品",
  "amount": 100,
  "method": "wechat_qr",
  "notifyUrl": "https://your-domain.com/notify",
  "returnUrl": "https://your-domain.com/return"
}

响应参数

DaxResult<NormalPayResult>data 字段结构:

参数类型描述
orderIdlong订单 ID
bizOrderNostring商户订单号
orderNostring平台业务单号
tradeNostring资金交易号
statusstring支付状态(PayStatusEnum
payBodystring支付参数体(二维码内容、调起参数或跳转地址)
payBodyTypestring支付参数体类型(PayBodyTypeEnum

payBodyType 取值

对应后端枚举 PayBodyTypeEnum

类型说明payBody 示例
link支付链接(跳转)https://open.weixin.qq.com/...
jsapiJSAPI 调起参数对象JSON 字符串,前端直接用于调起 SDK
from表单数据(自动提交表单 HTML)<form action="...">...</form>
identifier标识码(如付款码场景的标识)通道返回的纯标识字符串
qr_code二维码内容(前端渲染成二维码图片)weixin://wxpay/bizpayurl?pr=xxxxx
jsonJSON 对象(通道自定义结构)通道约定的 JSON 字符串

与旧文档差异

旧版文档曾使用 code_url / pay_info / redirect_url这些不是真实枚举值。请以上表为准。

响应示例

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "orderId": 1853123456789012345,
    "bizOrderNo": "ORDER20241201001",
    "orderNo": "P2024120112345700001",
    "tradeNo": "T2024120112345700001",
    "status": "progress",
    "payBody": "weixin://wxpay/bizpayurl?pr=xxxxx",
    "payBodyType": "qr_code"
  },
  "sign": "Base64签名值",
  "resTime": "2024-12-01T04:00:00Z",
  "reqId": "REQ20241201001"
}

支付方式(method)

method 字段对应 PayMethodEnum,按渠道分组:

微信支付

method说明
wechat_qr微信扫码支付(Native)
wechat_jsapi微信 JSAPI 支付(公众号)
wechat_mini微信小程序支付
wechat_h5微信 H5 支付
wechat_app微信 APP 支付
wechat_barcode微信付款码支付(被扫)
wechat_cashier微信收银台支付

支付宝

method说明
alipay_qr支付宝扫码支付
alipay_jsapi支付宝生活号支付(含小程序)
alipay_pc支付宝 PC 网站支付
alipay_h5支付宝 H5 支付
alipay_app支付宝 APP 支付
alipay_barcode支付宝付款码支付(被扫)

银联

method说明
union_qr银联扫码支付
union_jsapi银联 JSAPI 支付
union_h5银联 H5 支付
union_barcode银联付款码支付(被扫)

抖音支付

method说明
douyin_qr抖音扫码支付
douyin_jsapi抖音 JSAPI 支付
douyin_h5抖音 H5 支付
douyin_app抖音 APP 支付

聚合支付

method说明
aggregate_pay_qrcode聚合扫码支付(通道原生一码多付)

境外卡(预留)

method说明
visa_card_gatewayVisa 网关支付
visa_card_presentVisa 刷卡支付
mastercard_card_gatewayMastercard 网关支付
mastercard_card_presentMastercard 刷卡支付

支付状态(PayStatusEnum)

status说明
wait等待中(未指定通道和支付方式)
progress处理中(已发起通道调用)
success支付成功
close已关闭
cancel已撤销
fail支付失败
timeout已超时

基于 GNU LGPL v3.0 协议开源