Appearance
统一支付接口 ¶
提示
业务系统通过下单接口发起收款,网关会根据系统中的配置和业务系统传输的参数,选择的对应的支付通道和支付方式发起下单请求。 同时网关根据不同的支付方式返回对应发起支付使用的参数,业务系统使用该参数参数来调起支付。
接口说明 ¶
参数 | 说明 |
---|---|
请求URL | /unipay/pay |
请求方式 | POST |
请求类型 | application/json |
请求参数 ¶
业务参数 ¶
提示
设置参数时,不要忘了设置公共请求参数调用说明,未做特殊说明所有接口都需要传输
字段名 | 变量名 | 必填 | 类型 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|---|
商户订单号 | bizOrderNo | 是 | String | 100 | 123 | 支付时客户系统传输的业务单号,需要保证唯一,可以为字符文字组合,不要包含特殊符号,订单号不可重复 |
支付标题 | title | 是 | String | 100 | 测试支付 | |
支付描述 | description | 否 | String | 500 | 测试支付的描述 | |
开启分账 | allocation | 否 | Boolean | true | 订单是否允许分账,不传输为不开启 | |
开启自动分账 | autoAllocation | 否 | Boolean | false | 是否自动对支付订单进行分账,需要开启分账字段为true才会生效 | |
过期时间 | expiredTime | 否 | Long | 2024-10-24 12:00:00 | 订单过期时间,格式为yyyy-MM-dd HH:mm:ss,不传输为默认值,默认为当前时间往后加24小时。 | |
支付通道 | channel | 是 | String | 32 | ali_pay | 要进行支付的通道编码,如微信支付、支付宝支付等。见常量和状态表支付通道相关的描述 |
支付方式 | method | 是 | String | 32 | qrcode | 进行支付的方式编码,如扫码支付、条码支付等。见常量和状态表支付方式相关的描述 |
其他支付方式 | otherMethod | 否 | String | 128 | wx_pub | 只有在 支付方式为其他支付(other)时才会生效,传输各种三四方通道自定义的支付方式。见常量和状态表其他支付方式相关的描述 |
限制用户支付类型 | limitPay | 否 | String | 128 | no_credit | 限制用户支付类型, 目前支持限制信用卡,部分通道才会有效 |
支付金额 | amount | 是 | BigDecimal | 8,2 | 10.12 | 要进行支付的金额,单位为元,保留两位小数,小数buff末尾不可为0 |
用户标识 | openId | 否 | String | 128 | wxgj22ed144df11 | 主要用于Jsapi、小程序支付等需要用户标识才可以支付的场合 |
付款码 | authCode | 否 | String | 128 | 6117665200152 | 被扫支付方式所需要传输的参数 |
终端设备编码 | terminalNo | 否 | String | 128 | Hvbvdfg | 使用被扫支付方式,部分通道要求传输扫码终端号,此处的设备为在Daxpay中管理并进行报备的终端 |
附加支付参数 | extraParam | 否 | String | 2048 | 主要用于传输各通道特有的参数数据 | |
商户扩展参数 | attach | 否 | String | 500 | id=123332 | 商户扩展参数,回调时会原样返回 |
同步请求地址 | returnUrl | 否 | String | 200 | http://abc.cn/returnCallback | 支付完成后,会自动跳转到设置的页面,部分场景下才会生效 |
退出地址 | quitUrl | 否 | String | 200 | http://abc.com/quit | 用户付款中途退出返回商户网站的地址(部分支付场景中可用) |
异步通知地址 | notifyUrl | 否 | String | 200 | http://abc.cn/noticeCallback | 异步通知地址,用于商户系统接收回调消息通知 |
响应结果 ¶
业务响应参数 ¶
提示
业务数据在公共响应参数
中的data
字段,在code
为0
时才会有返回数据,见调用说明。
字段名 | 变量名 | 必传 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户订单号 | bizOrderNo | 是 | String | 1753370980523384832 | 发起支付时传输的商户订单号 |
订单号 | orderNo | 是 | String | true | 支付系统生成的支付订单号 |
支付状态 | status | 否 | String | pay_success | 见常量和状态表相关的描述 |
支付参数体 | payBody | 否 | String | weixin://wxpay/bizpayurl?pr=QimHZC7zz | 用于用户终端发起支付请求数据, 需要根据不同的支付通道和支付方式进行处理, 见通道说明 |
HTTP请求示例 ¶
请求参数 ¶
普通支付
json
{
"bizOrderNo" : "SDK_1744186016845",
"title" : "测试微信扫码支付",
"description" : "这是支付备注",
"allocation" : false,
"channel" : "wechat_pay",
"method" : "qrcode",
"amount" : 0.01,
"attach" : "{回调参数}",
"returnUrl" : "https://abc.com/returnurl",
"notifyUrl" : "http://127.0.0.1:10880/test/callback/notify",
"mchNo" : "M1723635576766",
"appId" : "M8207639754663343",
"clientIp" : "127.0.0.1",
"sign" : "bb83e7cb4553edcebdc57f16de13a580",
"reqTime" : "2025-04-09 16:06:56"
}
其他支付方式
json
{
"bizOrderNo" : "SDK_1744259982878",
"title" : "测试汇付的其他支付方式",
"description" : "这是汇付支付宝小程序支付",
"allocation" : false,
"channel" : "ada_pay",
"method" : "other",
"otherMethod" : "alipay_lite",
"amount" : 1.52,
"extraParam" : "{\"openId\":\"9021000135649359\"}",
"attach" : "{回调参数}",
"returnUrl" : "https://abc.com/returnurl",
"notifyUrl" : "http://127.0.0.1:10880/test/callback/notify",
"mchNo" : "M1723635576766",
"appId" : "M8207639754663343",
"clientIp" : "127.0.0.1",
"sign" : "79060b13ad0b66cb83ba7afa197a9d00",
"reqTime" : "2025-04-10 12:39:42"
}
响应参数(成功) ¶
json
{
"code": 0,
"msg": "success",
"data": {
"bizOrderNo": "SDK_1744185809447",
"orderNo": "DEV_P2025040916033370000024",
"status": "progress",
"payBody": "weixin://wxpay/bizpayurl?pr=4njI7C5z1"
},
"sign": "4a1308f097398c01c06a84ef11fc6eba",
"resTime": "2025-04-09 16:03:35",
"traceId": "foX7glq8rSMg"
}
响应参数(失败) ¶
json
{
"code" : 20044,
"msg" : "订单号重复,请重新发起支付",
"sign" : "82ae371267c176fb9f89499e4c6ff592",
"resTime" : "2025-04-09 16:08:38",
"traceId" : "mrfa4lKAVGtC"
}
SDK请求示例 ¶
提示
使用SDK可以简化接入支付的速度
java
/**
* 普通支付类型
*/
public void wxQrPay() {
PayParam param = new PayParam();
param.setClientIp("127.0.0.1");
param.setBizOrderNo("SDK_"+ System.currentTimeMillis());
param.setTitle("测试微信扫码支付");
param.setDescription("这是支付备注");
param.setAmount(BigDecimal.valueOf(0.01));
param.setChannel(ChannelEnum.WECHAT.getCode());
param.setMethod(PayMethodEnum.QRCODE.getCode());
param.setAttach("{回调参数}");
param.setAllocation(false);
param.setReturnUrl("https://abc.com/returnurl");
param.setNotifyUrl("http://127.0.0.1:10880/test/callback/notify");
DaxPayResult<PayResult> execute = DaxPayKit.execute(param);
// 验签
System.out.println("验签结果: " + DaxPayKit.verifySign(execute));
System.out.println(JsonUtil.toJsonStr(execute));
}
/**
* 三方平台的其他类型支付
*/
public void otherPay() {
PayParam param = new PayParam();
param.setClientIp("127.0.0.1");
param.setBizOrderNo("SDK_"+ System.currentTimeMillis());
param.setTitle("测试汇付的其他支付方式");
param.setDescription("这是汇付支付宝小程序支付");
param.setAmount(BigDecimal.valueOf(1.52));
param.setChannel(ChannelEnum.ADA_PAY.getCode());
param.setMethod(PayMethodEnum.OTHER.getCode());
// 使用支付宝小程序支付类型
param.setOtherMethod("alipay_lite");
param.setAttach("{回调参数}");
param.setAllocation(false);
AdaPayParam adaPayParam = new AdaPayParam();
adaPayParam.setOpenId("9021000135649359");
param.setExtraParam(JsonUtil.toJsonStr(adaPayParam));
param.setReturnUrl("https://abc.com/returnurl");
param.setNotifyUrl("http://127.0.0.1:10880/test/callback/notify");
DaxPayResult<PayResult> execute = DaxPayKit.execute(param);
System.out.println(JsonUtil.toJsonStr(execute));
}
回调消息通知 ¶
如果设置了异步通知地址,则订单将会在发生变动后给该地址发送通知消息,数据格式见回调和订阅消息接收, 业务数据格式与查询支付订单中的数据格式一致
通知示例 ¶
json
{
"mchNo": "M1723635576766",
"appId": "M8207639754663343",
"code": 0,
"msg": "success",
"data": {
"bizOrderNo": "PAY_39713088951744515312379",
"orderNo": "DEV_P2025041311351570000003",
"outOrderNo": "2025041322001404211438174344",
"title": "测试支付",
"allocation": false,
"autoAllocation": false,
"channel": "ali_pay",
"method": "qrcode",
"amount": 0.01,
"refundableBalance": 0.01,
"status": "success",
"refundStatus": "no_refund",
"payTime": "2025-04-13 11:35:37",
"expiredTime": "2025-04-13 15:46:57"
},
"sign": "8f30f3414ead24d51f4560cf59fedc93",
"resTime": "2025-04-13 11:36:17",
"traceId": "yP730vb3yv74"
}
同步跳转通知 ¶
实现中