银联商务大华捷通B扫C退款交易接口文档
1.当日支付的交易退款需要通过撤销接口,本接口处理隔日退款的交易
2.退款接口属于后台模式对接,商户后台技术人员可以发起http get/post请求,Content-Type设置为application/x-www-form-urlencoded,字符编码格式使用UTF-8
3.测试接口地址:https://dhjt-uat.chinaums.com/queryService/UmsWebPayPlugins
4.生产环境接口地址:https://生产域名/queryService/UmsWebPayPlugins (交易请在测试环境验收完成后,再调用生产环境)
5.签名逻辑跟支付下单接口一样,如有不清楚的地方可以与大华捷通对接技术人员咨询
6.请求参数使用URLEncode进行URL编码后再进行传递,防止出现乱码问题
7.查询结果同步返回JSON格式的字符串,验证签名规则如下:
(1).将JSON字符串转成JSON对象,获取全部参数,处理sign参数外,其他参数参数值全部放入集合M(参数sign不要放入集合M中)
(2).遍历集合M,取出全部的参数key,将参数key字典序排列,根据排序后的参数key获取对应的value,将非空的参数key和参数value用"="拼接,多个参数之间用"&"拼接。
(3).最后再拼接签名秘钥,组成一个待前面的字符串A
(4).使用相应的签名算法,对字符串A进行签名,得到本地签名结果字符串B
(5).忽略大小写对比字符串B与sign参数值是否相等
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | |
|---|---|---|---|---|---|---|
| version | 版本号 | 字符串 | 10 | 是 | 固定值:20191031 | |
| merOrderId | 商户订单号 | 字符串 | 6..32 | 否 | 商户订单号与银商订单号、平台流水号至少存在一个,如存在多个,优先顺序为:商户订单号、银商订单号、平台流水号 | |
| originalOrderId | 银商订单号 | 字符串 | 6..32 | 否 | 银商订单号 必须与原支付交易返回的订单号一致 | |
| oriPlatOrderId | 平台流水号 | 字符串 | 12 | 否 | 平台流水号,12位,检索参考号 | |
| refundOrderId | 退款订单号 | 字符串 | 0..30 | 是 | 退款请求标识 标识一次退款请求,同一笔订单多次退款需要保证唯一 | |
| refundAmount | 退款金额 | 字符串 | 0..30 | 是 | 交易金额 退货金额,单位:分 | |
| refundDesc | 商户备注 | 字符串 | 0..30 | 否 | 长度不超过50位 | |
| limitCrossDevice | 是否限制跨终端 | 字符串 | 0..30 | 否 | true : 不可以跨终端false: 可以跨终端 | |
| limitCrossDevice | 是否限制跨终端 | 字符串 | 0..30 | 否 | true : 不可以跨终端false: 可以跨终端 | |
| goods | goodsId | 商品ID | 字符串 | 否 | 商品对象集合转成的json格式数据:List |
|
| goodsName | 商品名称 | 字符串 | ||||
| quantity | 商品数量 | 字符串 | ||||
| price | 商品单价(分) | 字符串 | ||||
| goodsCategory | 商品分类 | 字符串 | ||||
| body | 商品说明 | 字符串 | ||||
| discount | 商品折扣 | 字符串 | 最大长度12位,单位:分 | |||
| storeId | 门店号 | 字符串 | 15 | 否 | 01 | |
| operatorId | 操作员编号 | 字符串 | 8 | 否 | 01 | |
| transactionCurrencyCode | 交易币种 | 字符串 | 8 | 是 | 156 | |
| bizIdentifier | 业务标识 | 字符串 | 8 | 否 | 业务标识 标识接入的具体业务,除非特殊说明,一般不需要上送 | |
| requestTimestamp | 报文请求时间 | 字符串 | 19 | 是 | 格式yyyy-MM-dd HH:mm:ss | |
| mid | 商户号 | 字符串 | 15 | 是 | ||
| tid | 终端号 | 字符串 | 8 | 是 | ||
| billDate | 原交易日期 | 字符串 | 10 | 是 | 格式:yyyy-MM-dd(鼠标单击查看说明) | |
| instMid | 业务类型 | 字符串 | 1..32 | 是 | 固定值:B2CDEFAULT | |
| msgType | 消息类型 | 字符串 | 10 | 是 | 固定值:refund | |
| osType | 渠道类型 | 字符串 | 10 | 否 | 终端支付:pos;pos支付时,必传 | |
| systemcode | 大华流水号 | 字符串 | 20 | 否 | pos线下交易时,如需要刷卡转bc,则必传 | |
| signType | 签名算法 | 字符串 | 10 | 否 | 支持SM3(推荐),SHA256,不传默认SM3 | |
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | |
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | ||
|---|---|---|---|---|---|---|---|
| version | 版本号 | 字符串 | 10 | 是 | 固定值:20191031 | ||
| errCode | 平台错误码 | 字符串 | 64 | 是 | 参照errCode取值说明 | ||
| errMsg | 平台错误描述 | 字符串 | 255 | 是 | |||
| responseTimestamp | 时间戳 | 字符串 | 19 | 是 | 响应时间,格式yyyy-MM-dd HH:mm:ss | ||
| transactionTime | 交易时间 | 字符串 | 30 | 否 | hhmmss 150241 | ||
| transactionDate | 交易日期 格式:MMdd | 字符串 | 30 | 否 | 0719 | ||
| retrievalRefNum | 检索参考号 | 字符串 | 12 | 否 | |||
| transactionDateWithYear | 交易日期 | 字符串 | 50 | 否 | 格式:yyyyMMdd | ||
| settlementDate | 结算日期 | 字符串 | 50 | 否 | 格式:MMdd | ||
| settlementDateWithYear | 结算日期 | 字符串 | 50 | 否 | 格式:yyyyMMdd | ||
| thirdPartyName | 第三方名称 | 字符串 | 50 | 否 | 仅仅退款成功的存在该字段 | ||
| cardAttr | 卡类型 | 字符串 | 50 | 否 | 借记:01 贷记:03 账户余额:91 | ||
| refundInvoiceAmount | 实际退款金额 | 字符串 | 50 | 否 | |||
| transactionAmount | 交易金额 | 字符串 | 50 | 否 | |||
| installmentNumber | 分期期数 | 字符串 | 50 | 否 | 花呗分期期数(目前支持支付宝渠道) | ||
| installmentSellerPercent | 付息方 | 字符串 | 50 | 否 | 花呗暂时只支持0/100,100:商家承担 | ||
| totalRefundPromotionAmt | 优惠退货金额 | 字符串 | 50 | 否 | 优惠退货金额(合计) ,单位:分 | ||
| orderPromotionStatus | 订单优惠状态 | 字符串 | 50 | 否 | 订单优惠状态 0:订单无优惠 1:订单有优惠但未找到 2:订单有优惠且信息完整 | ||
| eventList(优惠活动活动列表,数组JSON) | promotionProviderCode | 渠道方 | 字符串 | 否 | ACP:银联,UMS:银联商务,ALIPAY:支付宝,WXPAY:微信 | ||
| flowId | 优惠流水ID | 字符串 | 否 | 最大长度50位 | |||
| eventNo | 活动编号 | 字符串 | 否 | 最大长度50位 | |||
| eventName | 活动名称 | 字符串 | 否 | 最大长度64位 | |||
| promotionRange | 优惠范围 | 字符串 | 否 | GLOBAL –全场代金券SINGLE -单品优惠 | |||
| promotionType | 优惠类型 | 字符串 | 否 | 优惠类型 最大长度32位 promotion_provider= ACP场景: couponInfo[0].type DD01随机立减 CP01事后赠予券 CP02事前领取券 | |||
| refundPromotionAmt | 退货优惠金额 | 数字型 | 否 | 最大长度15位,单位:分 ACP:couponInfo[*].offstAmt累加结果 UMS:无 ALIPAY: present_refund_discount_amount present_refund_mdiscount_amount WXPAY:refund_amount | |||
| platPromotionAmt | 平台金额 | 数字型 | 否 | 平台金额 最大长度15位,单位:分 ACP: couponInfo[].offstAmt累加结果(对应的couponInfo[].spnsrId应为00010000) UMS:无 ALIPAY:present_refund_discount_amount WXPAY:无 | |||
| mchntPromotionAmt | 商户优惠金额 | 数字型 | 否 | 商户优惠金额 最大长度15位,单位:分 ACP: couponInfo[].offstAmt累加结果(对应的couponInfo[].spnsrId内容长度为15) UMS:无 ALIPAY:present_refund_mdiscount_amount WXPAY:无 | |||
| thirdPartyPromotionAmt | 第三方优惠金额 | 数字型 | 否 | 第三方优惠金额 最大长度15位,单位:分 ACP:couponInfo[].offstAmt累加结果(对应的couponInfo[].spnsrId内容长度为8,且不为00010000) UMS:无 ALIPAY:无 WXPAY:无 | |||
| thirdPartyPromotionDetail | 第三方出资详情 | 字符串 | 否 | 第三方出资详情 base64编码 promotion_provider= ACP场景: couponInfo | |||
| goodsList(单品列表:数组-JSON) | goodsId | 商品编号 | 否 | 字符串,最大50 | |||
| discountAmt | 商品编号 | 否 | 数字型 | ||||
| goodsNum | 商品数量 | 否 | 数字型 | ||||
| goodsPrice | 商品价格 | 否 | 数字型 | ||||
| goodsRemark | 商品备注 | 否 | 字符串 | ||||
| oriInfo | 原文信息 | 字符串 | 50 | 否 | 原文信息 支付渠道侧信息chnlInfo: chnlCode:支付渠道名称(ACP/ALIPAY/WXPAY) promotionDetail:微信优惠详情(base64编码,channel_code= WXPAY场景必填, 具体格式参考微信refund_detail字段说明) cupPromotionInfo:银联活动优惠详情(base64编码,channel_code= ACP场景必填, 具体格式参考银联couponInfo) issAddiData:银联付款方附加数据(base64编码,channel_code= ACP场景必填, 具体格式参考银联issAddnData) 收单机构侧信息acqInfo: acqCode:收单机构名称(UMS) refundPromotionList:退货优惠详情(base64编码,acq_code =UMS场景必填, 具体格式参考银联商务字段说明) |
||
| refundPromotionList | 优惠出资明细 | 字符串 | 50 | 否 | 优惠出资明细 格式:商户优惠金额 | ||
| convMchntNo | 转商户商户号 | 字符串 | 50 | 否 | |||
| convTermNo | 转终端终端号 | 字符串 | 50 | 否 | |||
| chnlType | 目标渠道类型 | 字符串 | 50 | 否 | |||
| acqInstCode | 受理银行机构代码 | 字符串 | 50 | 否 | 受理银行机构代码 详见返回码说明,目前仅数字货币二维码返回 | ||
| issInstCode | 发卡行代码 | 字符串 | 50 | 否 | 发卡行代码 详见返回码说明,目前仅数字货币二维码返回 | ||
| bankCardNo | 脱敏后的银行卡号 | 字符串 | 50 | 否 | 目前仅云闪付返回 | ||
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | ||
errCode取值说明
1000 : 认证失败
1001 : 授权失败
9001 : 参数校验失败
9999 : 系统错误
00 : 交易成功
03 : 无效商户
13 : 无效金额
22 : 原交易不存在
25 : 找不到原始交易
30 : 报文格式错误
57 : 不允许此交易
61 : 超出金额限制
64 : 原始金额错误
92 : 发卡方线路异常
94 : 重复交易
96 : 交换中心异常
97 : 终端号未登记
A7 : 安全处理失败
ER : 参见具体返回信息