Appearance
统一支付接口 ¶
提示
业务系统通过下单接口发起收款,网关会根据系统中的配置和业务系统传输的参数,选择的对应的支付通道和支付方式发起下单请求。 同时网关根据不同的支付方式返回对应发起支付使用的参数,业务系统使用该参数参数来调起支付。
同样的商户订单号可以重复提交,但重复提交时只有
支付通道
、支付方式
、商户扩展参数
、同步请求地址
、异步通知地址
、用户IP
、签名值
、请求时间
字段可以传输不同的值,其他参数需要与首次下单的数值一致,传输不同的值也不会生效。
接口说明 ¶
参数 | 说明 |
---|---|
请求URL | /unipay/pay |
请求方式 | POST |
请求类型 | application/json |
请求参数 ¶
公共参数 ¶
字段名 | 变量名 | 必填 | 类型 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|---|
应用号 | appId | 否 | String | 32 | A112544225541 | 此次操作所要使用的支付应用号 |
用户IP | clientIp | 否 | String | 64 | 127.0.0.1 | 支持V4和V6,部分支付方式要求必填,如调用微信支付方式时 |
随机数值 | nonceStr | 否 | String | 32 | d112892e382a7093 | |
签名值 | sign | 否 | String | 64 | 072695d112892e382a7093b81e6a52af | |
请求时间 | reqTime | 是 | String | 2024-10-24 12:00:00 | 请求时间和当前时间误差不要超过五分钟,时间格式 yyyy-MM-dd HH:mm:ss |
业务参数 ¶
字段名 | 变量名 | 必填 | 类型 | 长度 | 示例值 | 描述 |
---|---|---|---|---|---|---|
商户订单号 | 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 | 20 | ali_pay | 要进行支付的通道编码,如微信支付、支付宝支付等。见常量和状态表支付通道相关的描述 |
支付方式 | method | 是 | String | 20 | qrcode | 进行支付的方式编码,如扫码支付、条码支付等。见常量和状态表支付方式相关的描述 |
支付金额 | amount | 是 | BigDecimal | 8,2 | 10.12 | 要进行支付的金额,单位为元,保留两位小数 |
附加支付参数 | extraParam | 否 | ChannelParam具体实现类 | 2048 | 见下方支付ChannelParam参数说明,没用到这个参数可以不用传 | |
商户扩展参数 | 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 | 异步通知地址 |
ChannelParam参数 ¶
TIP
支付时有一些支付方式需要额外传输一些参数,例如条码支付时就需要传输条码值,微信相关的支付需要传输OpenId
等,所以对这些格式不确定的参数, 通过ChannelParam
参数项进行传输。目前提供下面三种参数,其他类型的见扩展包文档。
AliPayParam(支付宝参数) ¶
参数 | 类型 | 描述 |
---|---|---|
authCode | String | 授权码,条码支付时主动扫描用户的付款码 |
WeChatPayParam(微信支付参数) ¶
参数 | 类型 | 描述 |
---|---|---|
openId | String | 微信openId,微信公众号支付或者小程序支付时需要进行传入 |
authCode | String | 授权码,条码支付时主动扫描用户的付款码 |
UnionPayParam(云闪付支付参数) ¶
参数 | 类型 | 描述 |
---|---|---|
authCode | String | 授权码,条码支付时主动扫描用户的付款码 |
响应结果 ¶
通用响应参数 ¶
WARNING
状态码返回0只代表受理业务成功,业务是否成功需要看具体业务的返回信息,不为0表示受理失败,具体响应吗可以参考返回状态码
名称 | 字段 | 类型 | 示例值 | 描述 |
---|---|---|---|---|
状态码 | code | Integer | 0 | 默认是0,非0表明请求失败,例如签名错误等 |
提示信息 | msg | String | 发生错误时会有数据返回 | |
业务数据 | data | Json字符串 | json格式数据,不同的接口返回结构不同,可以参考业务公共响应参数 | |
签名 | sign | String | sIV4zJVhZ4Uz | 返回数据的签名值 |
响应时间 | resTime | String | 2024-08-08 12:12:12 | 数据响应的时间, 如果时间与请求时间相差5分钟以上,请排查网络和安全问题 |
追踪ID | traceId | String | sIV4zJVhZ4Uz | 用于查询日志排查问题时进行快速定位 |
业务响应参数 ¶
提示
业务数据包裹在公共响应参数
中的data
字段,在code
为0
时才会有返回数据。
字段名 | 变量名 | 必传 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
商户订单号 | bizOrderNo | 是 | String | 1753370980523384832 | 发起支付时传输的商户订单号 |
订单号 | orderNo | 是 | String | true | 支付系统生成的支付订单号 |
支付状态 | status | 否 | String | pay_success | 见常量和状态表相关的描述 |
支付参数体 | payBody | 否 | String | weixin://wxpay/bizpayurl?pr=QimHZC7zz | 用于用户终端发起支付请求数据, 是一个Json字符串, 需要根据不同的支付通道和支付方式进行处理 |
PayBody数据结构说明 ¶
INFO
不同的通道和支付方式返回的支付参数体有所区别,需要根据不同的支付场景进行处理, 下面是各个支付通道和支付方式的返回参数体介绍
支付通道 | 支付方式 | 描述 | 实例 | |
---|---|---|---|---|
支付宝 | 电脑/扫码支付/wap支付 | 返回的是一个URL链接, 可以直接进行支付 | ||
支付宝 | App | 返回的是一个签名字符串, 通过签名字符串调起支付 | ||
支付宝 | Jsapi | 返回的是支付宝交易号, 使用支付宝交易号调起支付 | ||
微信 | 扫码支付 | 返回的是一个URL链接, 可以直接进行支付 | ||
微信 | wap支付 | 返回的是一个URL链接, 可以直接进行支付 | ||
微信 | Jsapi | 返回的是个Map结构的Json字符串, 需要根据参数调起支付 | ||
微信 | App | 返回的是个Map结构的Json字符串, 需要根据参数调起支付 | ||
云闪付 | 扫码支付 | 返回的是一个URL链接, 可以直接进行支付 |
支付宝App返回值 ¶
返回的是一个签名字符串: app_id=2017060101317939&biz_content=%7B%22time_expire%22%3A%222016-12-31+10%3A05%3A00%22%2C%22extend_params%22%3A%22%22%2C%22query_options%22%3A%22%5B%5C%22hyb_amount%5C%22%2C%5C%22enterprise_pay_info%5C%22%5D%22%2C%22subject%22%3A%22%E5%A4%A7%E4%B9%90%E9%80%8F%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22body%22%3A%22Iphone6+16G%22%2C%22passback_params%22%3A%22merchantBizType%253d3C%2526merchantBizNo%253d2016010101111%22%2C%22specified_channel%22%3A%22pcredit%22%2C%22goods_detail%22%3A%22%22%2C%22merchant_order_no%22%3A%2220161008001%22%2C%22enable_pay_channels%22%3A%22pcredit%2CmoneyFund%2CdebitCardExpress%22%2C%22out_trade_no%22%3A%2270501111111S001111119%22%2C%22ext_user_info%22%3A%22%22%2C%22total_amount%22%3A%229.00%22%2C%22timeout_express%22%3A%2290m%22%2C%22disable_pay_channels%22%3A%22pcredit%2CmoneyFund%2CdebitCardExpress%22%2C%22agreement_sign_params%22%3A%22%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay&sign=ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE&sign_type=RSA2×tamp=2014-07-24+03%3A07%3A50&version=1.0
参考 支付宝APP接入文档 进行调起支付
微信Jsapi结构 ¶
字段 | 名称 | 备注 |
---|---|---|
appid | 应用id | 微信开放平台审核通过的移动应用AppID 。 |
timeStamp | 时间戳 | 时间戳,标准北京时间,时区为东八区, 自1970年1月1日 0点0分0秒以来的秒数 |
nonceStr | 随机字符串 | |
package | 预支付ID拼接值 | JSAPI下单接口返回的prepay_id参数值进行拼接, 格式如:prepay_id=*** |
signType | 签名类型 | 默认为RSA |
paySign | 签名 | 使用字段AppID、timeStamp、nonceStr、package计算得出的签名值 |
微信App结构 ¶
字段 | 名称 | 备注 |
---|---|---|
appid | 应用id | 微信开放平台审核通过的移动应用AppID 。 |
partnerid | 商户号mchid | 请填写商户号mchid对应的值。 |
prepayid | 交易会话ID | 微信返回的支付交易会话ID,该值有效期为2小时 |
package | package | 暂填写固定值Sign=WXPay |
nonceStr | 随机字符串 | |
timeStamp | 时间戳 | 时间戳,标准北京时间,时区为东八区, 自1970年1月1日 0点0分0秒以来的秒数 |
sign | 签名 | 使用字段AppID、timeStamp、nonceStr、prepayid计算得出的签名值 注意:取值RSA格式 |
HTTP请求示例 ¶
请求参数 ¶
json
响应参数(成功) ¶
json
响应参数(失败) ¶
json
SDK请求示例 ¶
提示
使用SDK可以简化接入支付的速度
java