银联商务大华捷通C扫B支付商户接入接口文档
专业的综合支付与信息服务提供商,提供丰富的支付+行业解决方案,满足各合作伙伴对支付服务的多样场景化需求。
1.本文档下述每个接口的应答报文里errCode字段为系统应答码,status字段为交易状态码
2.商户需自行生成billNo。此时billNo需要符合银商规范,以银商分配的4位系统编号作为订单号的前4位,且在商户系统中此订单号保证唯一。总长度需大于6位,小于32位。
3.测试环境接口地址:https://dhjt-uat.chinaums.com/queryService/UmsWebPayPlugins
4.生产环境接口地址:https://生产域名/queryService/UmsWebPayPlugins (交易请在测试环境验收完成后,再调用生产环境)
5.请求参数使用URLEncode进行URL编码后再进行传递,防止出现乱码问题
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | |
|---|---|---|---|---|---|---|
| version | 版本号 | 字符串 | 8 | 是 | 固定值:20191031 | |
| msgId | 消息ID | 字符串 | 4 | 是 | 固定值:4217 | |
| msgType | 消息类型 | 字符串 | 1..64 | 是 | 值为bills.getQRCode为获取二维码业务 值为sms.pay为短信收款业务 |
|
| requestTimestamp | 时间戳 | 字符串 | 19 | 是 | 报文请求时间,格式yyyy-MM-dd HH:mm:ss | |
| expireTime | 账单过期时间 | 字符串 | 19 | 是 | 一次性二维码的默认过期时间为30分钟, 最长时间为90天,超过90天按90天处理) 格式yyyy-MM-dd HH:mm:ss |
|
| orderType | 订单类型 | 字符串 | 2 | 否 | 02快速签单05拆分支付订单 | |
| mid | 商户号 | 字符串 | 15 | 是 | ||
| tid | 终端号 | 字符串 | 8 | 是 | ||
| instMid | 业务类型 | 字符串 | 1..32 | 是 | 固定值:QRPAYDEFAULT | |
| billNo | 商户订单号 | 字符串 | 6..32 | 是 | 商户自行生成(鼠标单击查看说明) 参数名称写merOrderId也支持 |
|
| busiOrderId | 商户业务订单号 | 字符串 | 32 | 否 | ||
| billDate | 商户订单日期 | 字符串 | 10 | 是 | 格式yyyy-MM-dd | |
| billDesc | 账单描述 | 字符串 | 200 | 否 | 不超过100个汉字 参数名称传orderDesc也支持 |
|
| originalAmount | 订单原始金额,单位分 | 数字 | 10 | 前端系统打折前的金额 | ||
| totalAmount | 支付总金额,单位分 | 数字 | 10 | 是 | ||
| attachedData | 商户附加数据 | 字符串 | 200 | 否 | ||
| memberId | 会员号 | 字符串 | 32 | 否 | 支付通知里原样返回 | |
| counterNo | 桌号、柜台号、房间号 | 字符串 | 32 | 否 | 支付通知里原样返回 | |
| employeeNo | 操作员工号 | 字符串 | 10 | 否 | 支付通知里原样返回 | |
| notifyUrl | 支付结果通知地址 | 字符串 | 200 | 否 | 异步往该地址发送支付结果通知 | |
| returnUrl | 回跳地址 | 字符串 | 200 | 否 | 支付完成后将回跳该地址 | |
| divisionFlag | 分账标记 | Boolean | 5 | 否 | 默认false,传入true时subOrders和platformAmount不能为空 | |
| goods | goodsId | 商品ID | 字符串 | 否 | 商品对象集合转成的json格式数据:List |
|
| goodsName | 商品名称 | 字符串 | ||||
| quantity | 商品数量 | 字符串 | ||||
| price | 商品单价(分) | 字符串 | ||||
| goodsCategory | 商品分类 | 字符串 | ||||
| body | 商品说明 | 字符串 | ||||
| subMerchantId | 子商户号 | 字符串 | ||||
| merOrderId | 商户子订单号,规则与商户订单号一致:msgId开头,不得超过30位 | 字符串 | 30 | |||
| subOrderAmount | 子商户商品总额 | 字符串 | ||||
| subOrders | mid | 子商户号 | 字符串 | 15 | 否 | 没有分账交易。不需要传递(鼠标单击查看说明) |
| totalAmount | 子商户号所得金额(分) | 数字 | 10 | |||
| platformAmount | 平台商户分账金额 | 数字 | 10 | 否 | 与subOrders配合使用 | |
| signType | 签名算法 | 字符串 | 10 | 否 | 支持SM3(推荐),SHA256,不传默认SM3 | |
| secureTransaction | 担保交易标识 | Boolean | 5 | 否 | true/false | |
| walletOption | 钱包选项 | String | 10 | 否 | 说明:1.单一钱包支付传SINGLE, 多钱包支付传MULTIPLE | |
| installmentNumber | 花呗分期数 | String | 10 | 否 | 仅支持支付宝,可分为6或12期 | |
| asynDivisionFlag | 异步分账标记 | Boolean | 50 | 否 | 取值:true或false,默认false 若为true,则goods字段和subOrders字段不能同时为空; 且secureTransaction字段上送false或不上送。 退货订单不允许做子订单操作 已确认的子订单,不允许隔天再确认 |
|
| limitCreditCard | 是否需要限制信用卡支付 | Boolean | 50 | 否 | 取值:true或false,默认false | |
| fixBuyer | 是否需要实名认证 | 字符串 | 0..32 | 否 | 如果需要生成实名认证,才需要传递 微信必传name、certNo和fixBuyer=T; 支付宝必传name、certType、certNo和fixBuyer=T。 注意证件类型:微信暂时只支持身份证IDENTITY_CARD, 支付宝支持身份证IDENTITY_CARD、 护照PASSPORT、 军官证OFFICER_CARD、士兵证SOLDIER_CARD、 户口本HOKOU" 敏感信息 如姓名、证件号和手机号信息需要 Base64进行加密传输。 (鼠标单击查看说明) |
|
| name | 实名认证姓名 | 字符串 | 0..50 | 否 | ||
| mobile | 实名认证手机号 | 字符串 | 0..50 | 否 | ||
| certType | 实名认证证件类型 | 字符串 | 0..50 | 否 | ||
| certNo | 实名认证证件号 | 字符串 | 0..50 | 否 | ||
| issueInvoice | 开具发票 | 字符串 | 4000 | 否 |
|
|
| issueType | 开具发票渠道 | 字符串 | 5 | 否 |
普通开票,此处不传值
乐企联用开票,此处传lq |
|
| issueServiceName | 乐企开票业务类型 | 字符串 | 50 | 否 |
此处是配合乐企开票使用,普通开票无需关注此处
不传默认是lqpt.jointIssue 乐企联用开票,5.3开具发票(乐企联用),此处传lqpt.jointIssue 乐企联用开票,6.2生成开票二维码,此处传lqpt.getQrCode |
|
| areaRoute | 地区码 | 字符串 | 50 | 否 | ||
| extend1 | 扩展字段1 | 字符串 | 50 | 否 | 短信收款业务extend1传递接收短信的手机号, 不传入,不会发送短信, 传入了手机号,下单应答会额外加上两个参数sendMsgCode和sendMsgDesc, 其中sendMsgCode=00000表示发送成功 |
|
| extend2 | 扩展字段2 | 字符串 | 50 | 否 | ||
| extend3 | 扩展字段3 | 字符串 | 50 | 否 | ||
| extend4 | 扩展字段4 | 字符串 | 50 | 否 | ||
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | |
扫码付后台模式对接,下单接口会同步返回JSON格式的字符串,下单成功后,商户根据二维码URL生成二维码,供付款人扫码支付
如有分账需求
需要传subOrders,分账信息则严格按subOrders里的分账方案生成。 subOrders的子商户号,子商户分账金额必传,即subOrders每个元素的mid和totalAmount非 空 且 mid不超过20个。(分账方案subOrders里子商户分账总额+platformAmount要与支付 总额totalAmount相等)
签名规则
1.签名支持SM3(推荐)和SHA256方式(不上送signType字段时,默认是以SM3),计算sign的输入数据为待签名字符串加上key(即:签名密钥),key由大华捷通平台分配。
2.在请求参数列表中,除去sign和空值的参数外,其他需要使用到的参数均为要签名的参数
生成待签名字符串
第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
(1).参数名ASCII码从小到大排序(字典序);
(2).如果参数的值为空不参与签名;
(3).参数名区分大小写;
(4).验证调用返回时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
(5).大华捷通平台接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行SHA256运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 |
|---|---|---|---|---|---|
| version | 版本号 | 字符串 | 10 | 是 | 固定值:20191031 |
| errCode | 平台错误码 | 字符串 | 64 | 是 | 取值参考下面说明 |
| errMsg | 平台错误描述 | 字符串 | 255 | 是 | 错误描述 |
| responseTimestamp | 时间戳 | 字符串 | 19 | 是 | 响应时间,格式yyyy-MM-dd HH:mm:ss |
| billQRCode | 账单二维码 | 字符串 | 300 | 否 | 二维码URL |
| msgType | 消息类型 | 字符串 | 1..64 | 是 | 原样返回 |
| billNo | 商户订单号 | 字符串 | 6..32 | 是 | 原样返回 |
| billDate | 账单日期 | 字符串 | 10 | 否 | 原样返回 |
| mid | 商户号 | 字符串 | 15 | 是 | 原样返回 |
| tid | 终端号 | 字符串 | 8 | 是 | 原样返回 |
| instMid | 业务类型 | 字符串 | 20 | 是 | 原样返回 |
| employeeNo | 操作员工号 | 字符串 | 30 | 否 | 原样返回 |
| attachedData | 商户附加数据 | 字符串 | 200 | 否 | 原样返回 |
| originalAmount | 订单原始金额,单位分 | 数字 | 10 | 否 | 原样返回 |
| totalAmount | 支付总金额,单位分 | 数字 | 10 | 是 | 原样返回 |
| platformAmount | 平台商户分账金额 | 数字 | 10 | 否 | 原样返回 |
| subOrders | 分账明细 | 字符串 | 10 | 否 | 原样返回 |
| signType | 签名算法 | 字符串 | 10 | 是 | 原样返回 |
| extend1 | 扩展字段1 | 字符串 | 50 | 否 | 原样返回 |
| extend2 | 扩展字段2 | 字符串 | 50 | 否 | 原样返回 |
| extend3 | 扩展字段3 | 字符串 | 50 | 否 | 原样返回 |
| extend4 | 扩展字段4 | 字符串 | 50 | 否 | 原样返回 |
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) |
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | |
|---|---|---|---|---|---|---|
| billQRCode | 账单二维码 | 字符串 | 300 | 是 | ||
| createTime | 账单创建时间 | 字符串 | 19 | 是 | 格式yyyy-MM-dd HH:mm:ss | |
| billStatus | 账单状态 | String | 30 | 是 | PAID、UNPAID、REFUND、CLOSED、UNKNOWN | |
| billDesc | 账单描述 | 字符串 | 200 | 否 | ||
| memberId | 会员号 | String | 15 | 是 | ||
| counterNo | 桌号、柜台号、房间号 | String | 15 | 是 | ||
| merName | 商户名称 | 字符串 | 100 | 是 | ||
| memo | 付款附言 | 字符串 | 50 | 否 | ||
| billPayment | billBizType | 账单业务类型 | 字符串 | 50 | 否 | |
| invoiceAmount | 开票金额 | Number | 50 | 否 | ||
| merOrderId | 商户订单号 | String | 50 | 否 | ||
| paySeqId | 交易参考号 | String | 50 | 否 | ||
| totalAmount | 账单流水总金额 | Number | 50 | 否 | ||
| buyerPayAmount | 实付金额 | Number | 50 | 否 | ||
| couponAmount | 钱包折扣金额 | Number | 50 | 否 | ||
| discountAmount | 折扣金额 | Number | 50 | 否 | ||
| buyerId | 买家ID | String | 50 | 否 | ||
| buyerUsername | 买家用户名 | String | 50 | 否 | ||
| payDetail | 支付详情 | String | 50 | 否 | ||
| payTime | 支付时间 | String | 格式yyyy-MM-dd HH:mm:ss | 否 | ||
| settleDate | 结算时间 | String | 格式yyyy-MM-dd | 否 | ||
| status | 交易状态 | String | 50 | 否 | ||
| targetOrderId | 目标平台单号 | String | 50 | 否 | ||
| targetSys | 目标系统 | String | 50 | 否 | ||
| msgType | 消息类型 | 字符串 | 1..64 | 是 | 原样返回 | |
| billNo | 商户订单号 | 字符串 | 6..32 | 是 | 原样返回 | |
| billDate | 账单日期 | 字符串 | 10 | 否 | 原样返回 | |
| mid | 商户号 | 字符串 | 15 | 是 | 原样返回 | |
| tid | 终端号 | 字符串 | 8 | 是 | 原样返回 | |
| instMid | 业务类型 | 字符串 | 20 | 是 | 原样返回 | |
| employeeNo | 操作员工号 | 字符串 | 30 | 否 | 原样返回 | |
| attachedData | 商户附加数据 | 字符串 | 200 | 否 | 原样返回 | |
| originalAmount | 订单原始金额,单位分 | 数字 | 10 | 否 | 原样返回 | |
| totalAmount | 支付总金额,单位分 | 数字 | 10 | 是 | 原样返回 | |
| platformAmount | 平台商户分账金额 | 数字 | 10 | 否 | 原样返回 | |
| subOrders | 分账明细 | 字符串 | 10 | 否 | 原样返回 | |
| signType | 签名算法 | 字符串 | 10 | 是 | 原样返回 | |
| extend1 | 扩展字段1 | 字符串 | 50 | 否 | 原样返回 | |
| extend2 | 扩展字段2 | 字符串 | 50 | 否 | 原样返回 | |
| extend3 | 扩展字段3 | 字符串 | 50 | 否 | 原样返回 | |
| extend4 | 扩展字段4 | 字符串 | 50 | 否 | 原样返回 | |
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | |
异步推送是服务器端对接时,支付完成后,大华捷通服务器收到渠道方返回的支付通知后,会进行通知给商户,商户收到响应后,需要在超时时间内做出应答,大华捷通再未收到应答或者应答不是SUCCESS时,会多次进行推送, 商户需要做好同一个订单可能会推送多次情况的处理。为了安全,在推送的参数中,可能会随机添加新的参数,商户端接口必须要支持新增参数,不能因为新增参数而导致通知失败
异步推送签名信息进行验证,验证规则如下:
1.签名支持SM3(推荐)和SHA256方式(不上送signType字段时,SM3),计算sign的输入数据为待签名字符串加上key(即:签名密钥),key由大华捷通平台分配。
2.在请求参数列表中,除去sign和空值的参数外,其他需要使用到的参数均为要签名的参数
生成待签名字符串
第一步:设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
(1).参数名ASCII码从小到大排序(字典序);
(2).如果参数的值为空不参与签名;
(3).参数名区分大小写;
(4).验证调用返回时,传送的sign参数不参与签名,将生成的签名与该sign值作校验。
(5).大华捷通平台接口可能增加字段,验证签名时必须支持增加的扩展字段
第二步:在stringA最后拼接上key得到stringSignTemp字符串,并对stringSignTemp进行SHA256运算,再将得到的字符串所有字符转换为大写,得到sign值signValue。
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | |
|---|---|---|---|---|---|---|
| billQRCode | 账单二维码 | 字符串 | 300 | 是 | ||
| createTime | 账单创建时间 | 字符串 | 19 | 是 | 格式yyyy-MM-dd HH:mm:ss | |
| billStatus | 账单状态 | String | 30 | 是 | PAID、UNPAID、REFUND、CLOSED、UNKNOWN | |
| billDesc | 账单描述 | 字符串 | 200 | 否 | ||
| memberId | 会员号 | String | 15 | 是 | ||
| counterNo | 桌号、柜台号、房间号 | String | 15 | 是 | ||
| merName | 商户名称 | 字符串 | 100 | 是 | ||
| memo | 付款附言 | 字符串 | 50 | 否 | ||
| billPayment | billBizType | 账单业务类型 | 字符串 | 50 | 否 | |
| invoiceAmount | 开票金额 | Number | 50 | 否 | ||
| merOrderId | 商户订单号 | String | 50 | 否 | ||
| paySeqId | 交易参考号 | String | 50 | 否 | ||
| totalAmount | 账单流水总金额 | Number | 50 | 否 | ||
| buyerPayAmount | 实付金额 | Number | 50 | 否 | ||
| couponAmount | 钱包折扣金额 | Number | 50 | 否 | ||
| discountAmount | 折扣金额 | Number | 50 | 否 | ||
| buyerId | 买家ID | String | 50 | 否 | ||
| buyerUsername | 买家用户名 | String | 50 | 否 | ||
| payDetail | 支付详情 | String | 50 | 否 | ||
| payTime | 支付时间 | String | 格式yyyy-MM-dd HH:mm:ss | 否 | ||
| settleDate | 结算时间 | String | 格式yyyy-MM-dd | 否 | ||
| status | 交易状态 | String | 50 | 否 | ||
| targetOrderId | 目标平台单号 | String | 50 | 否 | ||
| targetSys | 目标系统 | String | 50 | 否 | ||
| bankInfo | 支付银行信息 | 字符串 | 否 | |||
| bankCardNo | 支付卡信息 | 字符串 | 50 | 否 | ||
| seqId | 系统交易流水号 | 字符串 | 50 | 否 | ||
| receiptAmount | 实收金额 | Number | 50 | 否 | ||
| couponMerchantContribute | 商户出资优惠金额 | Number | 50 | 否 | ||
| couponOtherContribute | 其他出资优惠金额 | Number | 50 | 否 | ||
| activityIds | 微信活动ID | Number | 50 | 否 | ||
| refundAmount | 退款金额 | Number | 50 | 否 | ||
| refundDesc | 退款说明 | String | 50 | 否 | ||
| qrCodeUrl | 开票二维码地址 | 字符串 | 256 | 否 | 乐企联动开票,此处会返回6.2生成开票二维码的开票地址 | |
| billNo | 商户订单号 | 字符串 | 6..32 | 是 | 原样返回 | |
| billDate | 账单日期 | 字符串 | 10 | 否 | 原样返回 | |
| mid | 商户号 | 字符串 | 15 | 是 | 原样返回 | |
| tid | 终端号 | 字符串 | 8 | 是 | 原样返回 | |
| instMid | 业务类型 | 字符串 | 20 | 是 | 原样返回 | |
| employeeNo | 操作员工号 | 字符串 | 30 | 否 | 原样返回 | |
| attachedData | 商户附加数据 | 字符串 | 200 | 否 | 原样返回 | |
| originalAmount | 订单原始金额,单位分 | 数字 | 10 | 否 | 原样返回 | |
| totalAmount | 支付总金额,单位分 | 数字 | 10 | 是 | 原样返回 | |
| platformAmount | 平台商户分账金额 | 数字 | 10 | 否 | 原样返回 | |
| subOrders | 分账明细 | 字符串 | 10 | 否 | 原样返回 | |
| signType | 签名算法 | 字符串 | 10 | 是 | 原样返回 | |
| extend1 | 扩展字段1 | 字符串 | 50 | 否 | 原样返回 | |
| extend2 | 扩展字段2 | 字符串 | 50 | 否 | 原样返回 | |
| extend3 | 扩展字段3 | 字符串 | 50 | 否 | 原样返回 | |
| extend4 | 扩展字段4 | 字符串 | 50 | 否 | 原样返回 | |
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | |