银联商务大华捷通B扫C交易商户接入接口文档
专业的综合支付与信息服务提供商,提供丰富的支付+行业解决方案,满足各合作伙伴对支付服务的多样场景化需求。
1.签名验签sign的取值参考文档字段备注,errCode取值参考文末说明
2.查询接口属于后台模式对接,商户后台技术人员可以发起http post请求,Content-Type设置为application/x-www-form-urlencoded,字符编码格式使用UTF-8
3.商户需自行生成merOrderId。此订单号保证唯一。总长度需大于6位,小于32位银商的推荐规则为(无特殊情况下,建议遵守此规则):{来源编号(4位)}{时间(yyyyMMddmmHHssSSS)(17位)}{7位随机数}。
4.测试环境接口地址:https://dhjt-uat.chinaums.com/queryService/UmsWebPayPlugins
5.生产环境接口地址:https://生产域名/queryService/UmsWebPayPlugins (交易请在测试环境验收完成后,再调用生产环境)
6.请求参数使用URLEncode进行URL编码后再进行传递,防止出现乱码问题
| 参数名称 | 参数说明 | 参数类型 | 长度 | 是否必须 | 备注 | ||
|---|---|---|---|---|---|---|---|
| version | 版本号 | 字符串 | 8 | 是 | 固定值:20191031 | ||
| msgType | 消息类型 | 字符串 | 1..64 | 是 | pay | ||
| requestTimestamp | 时间戳 | 字符串 | 19 | 是 | 报文请求时间,格式yyyy-MM-dd HH:mm:ss | ||
| merOrderId | 商户订单号 | 字符串 | 6..32 | 是 | 商户订单号 全局唯一,不可重复 | ||
| orderType | 订单类型 | 字符串 | 2 | 否 | 02快速签单05拆分支付订单 | ||
| busiOrderId | 商户业务订单号 | 字符串 | 32 | 否 | |||
| mid | 商户号 | 字符串 | 15 | 是 | > | ||
| tid | 终端号 | 字符串 | 8 | 是 | > | ||
| instMid | 业务类型 | 字符串 | 1..32 | 是 | 固定值:B2CDEFAULT | ||
| attachedData | 商户附加数据 | 字符串 | 200 | 否 | > | ||
| orderDesc | 账单描述 | 字符串 | 200 | 否 | |||
| employeeNo | 操作员工号 | 字符串 | 30 | 否 | > | ||
| totalAmount | 支付总金额,单位分 | 数字 | 10 | 是 | > | ||
| goods | goodsId | 商品ID | 字符串 | 否 | 商品对象集合转成的json格式数据:List goods=[ { "body": "two eggs", "discount": "", "goodsCategory": "food meterial", "goodsId": "001", "goodsName": "鸡蛋", "price": "1", "quantity": "10" } ] |
||
| goodsName | 商品名称 | 字符串 | |||||
| quantity | 商品数量 | 字符串 | |||||
| price | 商品单价(分) | 字符串 | |||||
| goodsCategory | 商品分类 | 字符串 | |||||
| body | 商品说明 | 字符串 | |||||
| discount | 单位:分 | 字符串 | |||||
| signType | 签名算法 | 字符串 | 10 | 否 | 支持SM3(推荐),SHA256,不传默认SM3 | ||
| limitCreditCard | 是否需要限制信用卡支付 | Boolean | 5 | 否 | 取值: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..32 | 否 | |||
| mobile | 实名认证手机号 | 字符串 | 0..20 | 否 | |||
| certType | 实名认证证件类型 | 字符串 | 0..32 | 否 | |||
| certNo | 实名认证证件号 | 字符串 | 0..32 | 否 | |||
| extend1 | 扩展字段1 | 字符串 | 50 | 否 | |||
| extend2 | 扩展字段2 | 字符串 | 50 | 否 | |||
| extend3 | 扩展字段3 | 字符串 | 50 | 否 | |||
| extend4 | 扩展字段4 | 字符串 | 50 | 否 | |||
| issueInvoice | 开具发票 | 字符串 | 4000 | 否 | |||
| issueType | 开具发票渠道 | 字符串 | 5 | 否 | 乐企联用开票,此处传lq | ||
| issueServiceName | 乐企开票业务类型 | 字符串 | 50 | 否 |
此处是配合乐企开票使用,不传默认是lqpt.jointIssue
乐企联用开票,5.3开具发票(乐企联用),此处传lqpt.jointIssue 乐企联用开票,6.2生成开票二维码,此处传lqpt.getQrCode |
||
| bcExtend (查看说明) |
systemTraceNum | 系统跟踪号 6位数字 | 字符串 | 6 | 否 | ||
| transactionCurrencyCode | 交易币种 | 字符串 | 6 | 是 | 156 | ||
| payMode | 支付方式 | 字符串 | 6 | 是 | 必填,E_CASH – 电 子现金 SOUNDWAVE – 声波 NFC – NFC CODE_SCAN – 扫码 MANUAL – 手 输 | ||
| payCode | 付款码 | 字符串 | 6 | 是 | 必填,微信支付宝云闪付的付款码 | ||
| storeId | 门店号 | 字符串 | 6 | 否 | 01 | ||
| bizIdentifier | 业务标识 | 字符串 | 6 | 否 | 标识接入的具体业务除非特殊说明,一般不需要上送ZZH—准账户模式硬件钱包 | ||
| goodsTag | 商品标识 | 字符串 | 6 | 否 | |||
| installmentFlag | 字符串 | 6 | 否 | 分期必填,花呗分期:HBF | |||
| installmentNumber | 分期期数 | 字符串 | 6 | 否 | 花呗分期期数(目前支持支付宝渠道) | ||
| retCommParams | foodOrderType | 扫码点餐字段pre_order | 字符串 | 15 | 否 | 目前支持支付宝渠道,最大长度255位,格式示例: retCommParams={"foodOrderType":"pre_order","eduSchoolId":"01","eduScene":""} |
|
| eduSchoolId | 学校内标或者校区ID | 数字 | 10 | ||||
| eduScene | 服务场景ID用于支付宝校园内服务场景。教育行业定义的校园内服务场景。例如:校园团餐:SCHOOL_CANTEEN | 数字 | 10 | ||||
| transChnl | 交易渠道标识 | 字符串 | 6 | 否 | 1-收钱吧 | ||
| thirdPartyInstalSubsFlag | 第三方贴息启用和禁用参数 | 字符串 | 6 | 否 | 花呗分期使用 true:启用 false:禁用 如果第三方贴息活动为全场贴息,默认可贴息,传入“false”,则本笔交易禁用三方贴息; 如果第三方贴息活动为指定订单贴息,默认禁用贴息,传入“true”,则本笔交易启用三方贴息 |
||
| feeRatio | 手续费比例 | 字符串 | 6 | 否 | 新悦融益业务 该字段必传 | ||
| costSubsidy | 确认成本补贴 | 字符串 | 6 | 否 | 新悦融益业务 该字段必传;是否成本补贴,true为不判断手续费比例,false按正常判断,默认false | ||
| subAppId | subAppId | 字符串 | 6 | 否 | 子商户公众账号ID(微信) | ||
| targetChnl | 数字货币指定目标渠道 | 字符串 | 10 | 否 | 仅限于数字货币使用 取值说明:中总行BOCHO、建行CCBP、工行ICBC | ||
| invocationMode | 调用方式 | 字符串 | 6 | 否 | 默认不传值,为等待支付流程完成才返回; POLL:轮询模式,即支付渠道响应后立即返回, 若错误代码=PG,表明订单正在支付中,须使用查询接口确认订单状态, 其余错误代码认为失败 |
||
| pwdEnc | 密码(密文) | 字符串 | 6 | 否 | 密码(密文) 中行卡式软钱包(准账户模式钱包)交易必传,SM4加密,透传网付 | ||
| creditFeeRatio | 手续费(贷) | 字符串 | 10 | 否 | |||
| acctAmt | 青岛医保预付卡余额 | 字符串 | 10 | 否 | |||
| deviceType | 设备类型 | 字符串 | 2 | 是 | 01:自动柜员机(含ATM和CDM)和多媒体自助终端 02:传统POS 03:mPOS 04:智能POS 05:II型固定电话 06:云闪付终端; 07:保留使用; 08:手机POS; 09:刷脸付终端; 10:条码支付受理终端; 11:条码支付辅助受理终端; 12:行业终端(公交、地铁用于指定行业的终端); 13:MIS终端; |
||
| serialNum | 终端硬件序列号 | 字符串 | 64 | 否 | 长 度 ⇐ 5 0 , 6 位 厂 商 编 号 + 2 位 终 端 类 型 ( 同 设 备 类 型 ) + 4 2 位 自 定 义 序 列 号 | ||
| encryptRandNum | 加 密 随 机 因 子 | 字符串 | 64 | 否 | 长 度 ⇐ 1 0 , 取 值 说 明 : 银 行 卡 交 易 采 用 2 域 卡 号 后 6 位 ; 扫 码 付 交 易 采 用 C 2 B 码 后 6 位 | ||
| secretText | 硬 件 序 列 号 密 文 数 据 | 字符串 | 8 | 否 | |||
| appVersion | app版本 | 字符串 | 64 | 否 | |||
| longitude | 经度 | 字符串 | 64 | 否 | 条件必传,经度 长度⇐10。 实体类终端(设备类型非01,11,12,13):经纬度必传; 非实体类终端(设备类型为01,11,12,13):经纬度与ip字段必传其一。 格式:1位正负号+3位整数+1位小数点+5位小数; 对于正负号:+表示东经,-表示西经。例如-121.48352 |
||
| latitude | 纬度 | 字符串 | 64 | 否 | 条件必传,纬度 长度⇐10。 实体类终端(设备类型非01,11,12,13):经纬度必传; 非实体类终端(设备类型为01,11,12,13):经纬度与ip字段必传其一。 |
||
| networkLicense | 终端入网认证编号 | 字符串 | 10 | 否 | 长度为5,设备类型为 02、03、04、05、06、08、09 或
10时,选填“终端入网认证编号”,取值说明:银行卡受理终端产品应用认证编号。 该编号由“中国银联标识产品企业资质认证办公室”为通过入网认证的终端进行分配。 银联直连终端必填 |
||
| location | 坐标系 | 字符串 | 64 | 否 | 长度⇐10, BD09/GCJ02/WGS84 | ||
| ip | ip | 字符串 | 64 | 否 | 条件必传,终端设备IP地址 长度⇐40。 非实体类终端(设备类型为01,11,12,13): 如无经纬度,该字段必送;格式如:"ip":"172.20.11.089" |
||
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | ||
B扫C支付后台模式对接,下单接口会同步返回JSON格式的字符串,注意:所有的请求参数都需要使用URLEncoder.encode进行编码,字符编码格式是UTF-8,签名时参数值是没有编码的,发送请求时参数值都需要进行编码
签名规则
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 | 是 | 参照errCode取值说明 | |||
| errMsg | 平台错误描述 | 字符串 | 255 | 是 | ||||
| responseTimestamp | 时间戳 | 字符串 | 19 | 是 | 响应时间,格式yyyy-MM-dd HH:mm:ss | |||
| transactionTime | 交易时间 | 字符串 | 30 | 否 | hhmmss 150241 | |||
| transactionDate | 交易日期 格式:MMdd | 字符串 | 30 | 否 | 0719 | |||
| transactionDateWithYear | 交易日期 格式:yyyyMMdd | 字符串 | 30 | 否 | 格式:yyyyMMdd | |||
| settlementDate | 结算日期 | 字符串 | 50 | 否 | 格式:MMdd | |||
| settlementDateWithYear | 结算日期 | 字符串 | 30 | 否 | 格式:yyyyMMdd | |||
| retrievalRefNum | 检索参考号 | 字符串 | 12 | 否 | ||||
| totalAmount | 订单金额 | 字符串 | 1..64 | 是 | totalAmount(订单金额) = amount(实际支付金额) + totalDiscountAmount 优惠金额(合计)> | |||
| actualTransactionAmount | 营销联盟优惠后交易金额 | 字符串 | 6..32 | 是 | 营销联盟优惠后交易金额 | |||
| amount | 实际支付金额 | 字符串 | 15 | 是 | 用户实际支付金额,最大长度12位,单位:分 | |||
| orderId | 订单号 | 字符串 | 50 | 是 | ||||
| marketingAllianceDiscountInstruction | 营销联盟优惠说明 | 字符串 | 30 | 否 | 微信钱包支付73.02元 | |||
| thirdPartyDiscountInstruction | 第三方优惠说明 | 数字 | 10 | 否 | 微信钱包支付73.02元 | |||
| thirdPartyName | 第三方名称 | 数字 | 10 | 是 | 微信钱包 | |||
| thirdPartyBuyerId | 第三方买家Id | 数字 | 10 | 否 | otdJ_uIoiCwFwQ2ocseCtnDOpqjU | |||
| thirdPartyBuyerUserName | 第三方买家用户名 | 字符串 | 10 | 否 | otdJ_uIoiCwFwQ2ocseCtnDOpqjU | |||
| thirdPartyOrderId | 第三方订单号 | 字符串 | 10 | 是 | 4200066286202307198238072004 | |||
| thirdPartyPayInformation | 第三方支付信息 | 字符串 | 30 | 否 | 第三方支付信息 格式为:方式:金额 | |||
| totalDiscountAmount | 优惠金额 | 字符串 | 30 | 否 | (合计) 单位:分 totalDiscountAmount 优惠金额(合计) = eventDiscountAmount(各个渠道方的累加,最多是两个相加,即:ums + 一个渠道方) |
|||
| discountStatus | 优惠状态 | 字符串 | 50 | 否 | 1:订单有优惠但未找到 2:订单有优惠且找到 | |||
| rawPromotionList | 渠道和收 单机构侧 原始优惠 信息列表 | JSON | 2000 | 否 | 支付渠道侧信息 channel_info: channel_code:支付渠道 名称 (ACP/ALIPAY/WXPAY) promotion_detail:微信 优惠详情 voucher_detail_list:支 付宝活动优惠详情 discount_goods_detail: 支付宝单品优惠详情 coupon_info:银联活动优 惠详情 dct_goods_info:银联活 单品优惠详情 收单机构侧信息acq_info: acq_code:收单机构名称 (UMS) coupon_list:优惠详情 | |||
| promotionList(优惠活动活动列表,数组JSON) | channelName | 渠道方 | 字符串 | 否 | ACP:银联,UMS:银联商务,ALIPAY:支付宝,WXPAY:微信 | |||
| discountId | 优惠流水ID | 字符串 | 否 | 最大长度50位 | ||||
| eventNo | 活动编号 | 字符串 | 否 | 最大长度50位 | ||||
| eventName | 活动名称 | 字符串 | 否 | 最大长度64位 | ||||
| discountScope | 优惠范围 | 字符串 | 否 | GLOBAL –全场代金券SINGLE -单品优惠 | ||||
| discountType | 优惠类型 | 字符串 | 否 | 微信: COUPON - 代金券 DISCOUNT - 优惠券 支付宝: ALIPAY_FIX_VOUCHER - 全 场代金券 ALIPAY_DISCOUNT_VOUCHER - 折扣券 ALIPAY_ITEM_VOUCHER - 单品优惠 | ||||
| eventDiscountAmount | 活动优惠金额 | 数字型 | 否 | 最大长度15位,单位:分 eventDiscountAmount(活动优惠金额) = platformDiscountAmount(平台优惠金额) + merchantDiscountAmount(商户优惠金额) + thirdPartyDiscountAmount (第三方优惠金额) |
||||
| platformDiscountAmount | 平台优惠金额 | 数字型 | 否 | 最大长度15位,单位:分 | ||||
| merchantDiscountAmount | 商户优惠金额 | 数字型 | 否 | 最大长度15位,单位:分 | ||||
| thirdPartyDiscountAmount | 第三方优惠金额 | 数字型 | 否 | 最大长度15位,单位:分 | ||||
| thirdPartyDiscountDetail | 第三方出资详情 | 字符串 | 否 | |||||
| goodsList(单品列表:数组-JSON) | goodsId | 商品编号 | 否 | 字符串,最大50 | ||||
| discountAmount | 商品编号 | 否 | 数字型 | |||||
| goodsNumber | 商品数量 | 否 | 数字型 | |||||
| goodsPrice | 商品价格 | 否 | 数字型 | |||||
| goodsRemark | 商品备注 | 否 | 字符串 | |||||
| cardAttr | 卡类型 | 字符串 | 50 | 否 | 借记:01 贷记:03 账户余额:91 | |||
| merchantAllowance | 商户让利金额 | 字符串 | 50 | 否 | 商户让利金额 单位:分 | |||
| thirdPartyAllowance | 第三方补贴金额 | 字符串 | 50 | 否 | 单位:分 | |||
| thirdPartyPointDiscountAmount | 积分抵扣金额 | 字符串 | 50 | 否 | 单位:分 | |||
| installmentNumber | 分期期数 | 字符串 | 50 | 否 | 花呗分期期数(目前支持支付宝渠道) | |||
| installmentSellerPercent | 付息方 | 字符串 | 50 | 否 | 花呗暂时只支持0/100,100:商家承担 | |||
| mchntName | 商户名称 | 字符串 | 50 | 否 | ||||
| convMchntNo | 转商户商户号 | 字符串 | 50 | 否 | ||||
| convTermNo | 转终端终端号 | 字符串 | 50 | 否 | ||||
| chnlType | 目标渠道类型 | 字符串 | 50 | 否 | 目前仅数字货币二维码返回DCEP | |||
| promotionAmt | 优惠金额 | 字符串 | 50 | 否 | 单位为分,目前仅数字货币二维码返回 | |||
| acqInstCode | 受理银行机构代码 | 字符串 | 50 | 否 | 详见返回码说明,目前仅数字货币二维码返回 | |||
| issInstCode | 发卡行代码 | 字符串 | 50 | 否 | 详见返回码说明,目前仅数字货币二维码返回 | |||
| bankCardNo | 字符串 | 50 | 否 | 脱敏后的银行卡号 目前仅云闪付返回 | ||||
| queryFlag | 字符串 | 50 | 是 | 查询标志 “Y”表示:订单状态未知,需要终端发起自动查询 | ||||
| thirdPartyDiscountInstrution | 第三方优惠说明 | 字符串 | 50 | 否 | ||||
| userId | 买家Id | 字符串 | 50 | 否 | ||||
| verifyType | 准账户模式 | 字符串 | 50 | 否 | 准账户模式硬件钱包验密支付标记 当值为Y表示可发起验密支付 | |||
| authorizationCode | 授权码 | 字符串 | 50 | 否 | ||||
| upiQrcVoucherNum | 付款凭证号 | 字符串 | 50 | 否 | 仅适用银联国际二维码 | |||
| balanceAmtEnc | 数币IC余额 | 字符串 | 50 | 否 | 余额(密文),仅数字货币IC卡交易返回 | |||
| sign | 签名 | 字符串 | 64 | 是 | 签名规则(鼠标单击查看说明) | |||
errCode取值说明
1000 : 认证失败
1001 : 授权失败
9001 : 参数校验失败
9999 : 系统错误
00 : 交易成功
03 : 无效商户
13 : 无效金额
22 : 原交易不存在
25 : 找不到原始交易
30 : 报文格式错误
57 : 不允许此交易
61 : 超出金额限制
64 : 原始金额错误
92 : 发卡方线路异常
94 : 重复交易
96 : 交换中心异常
97 : 终端号未登记
A7 : 安全处理失败
ER : 参见具体返回信息
受理银行机构代码(acqInstCode)和发卡行代码(issInstCode)取值说明
01020000 : 中国工商银行
01030000 : 中国农业银行
01040000 : 中国银行
01050000 : 中国建设银行
03010000 : 中国交通银行
01000000 : 中国邮储银行
设备类型(deviceType)取值说明
01: 自动柜员机(含 ATM 和 CDM)和多媒体自助终端 自动柜员机指专门用于存取现金的电子设备,主要包括ATM、CRS等;多媒体自助终端主要包括自助挂号、自助打印、自助缴费等自助设备。
02: 传统POS 指非安卓系统,具有独立通讯能力,支持银行卡受理功能的设备
04: 智能POS 安卓系统,具有独立通讯能力,支持专属应用加载,支持银行卡受理功能的设备
05: II型固话POS
06: 云闪付终端 支持扫码、非接具有独立通讯功能的设备如扫码非接终端
07: 保留使用
08: 手机POS 基于智能手机,通过软件,将手机化身为POS机,从而实现POS机的所有功能,不需要任何的终端设备
09: 人脸识别终端 具有刷脸支付功能的设备如银商蓝鲸
10: 条码支付受理终端(具备条码受理及交易发起) 条码受理终端指具有独立通讯能力仅支持条码支付的终端。
11: 条码支付辅助受理终端 辅助受理终端指的不具备单独通讯能力的终端如扫描枪、扫码盒子。
12: 行业终端(公交、地铁用于指定行业的终端) 没有行业标准且不支持TUSN的终端如车载、园区等终端
03: MPOS 不具有独立通讯能力,与手机、平板电脑等通用智能设备进行连接,从而实现银行卡支付应用
13: MIS 终端 指非安卓系统, 不具有独立通讯能力,依托上位机通讯,支持银行卡受理功能的设备