H5页面银联支付
最近更新时间:2023.7.25
1. 方案介绍
1.1 应用场景
商户拥有一个H5商城或通过H5页面对外提供线上服务,当需要收款时调用斗拱SAAS支付接口完成收款,下图是微信、支付宝、银联云闪付、手机默认浏览器环境下可以使用的H5页面收款效果。
可以通过斗拱演示体验了解在H5网页中支付演示效果,演示程序自动识别当前的环境是微信、支付宝、银联云闪付还是默认浏览器,程序会自动根据环境展示适用的支付方式;
1.2 名词定义及说明
【银联H5支付】:可在银联认证的APP打开收单机构的H5收款页面
更多名词解释,请参考:名词解释说明
2. 接入前准备
2.1 商务准备
-
商户已有H5商城网站或服务,并且已经过ICP备案;
-
选择接入模式
-
直签模式:指商户与汇付直接签约。具体流程:商户完成协议签署后,将准备好的入网材料提供给汇付销售人员,由汇付销售人员发起商户入网申请,待审核通过入网成功后,商户联系人将收到短信通知控台账号及密码。
-
服务商模式:指服务商与汇付签约,服务商通过接口或控台方式完成商户入网。具体流程:服务商完成协议签署后,将准备好的入网材料提供给汇付销售人员,由汇付销售人员发起服务商入网申请,待审核通过入网成功后,服务商联系人将收到短信通知控台账号及密码。
-
-
在斗拱完成商户进件入网
- 直签模式:已有汇付销售人员申请开通,商户无须另行操作;
- 服务商模式:
- 控台入网:参考服务商控台进件流程,渠道商接入指引;
- API入网:
- 企业商户调用企业商户基本信息入驻接口 、小微商户调用个人商户基本信息入驻接口 完成开户、绑卡、结算配置。
- 调用商户业务开通开通微信/支付宝/银联云闪付入驻。具体流程请参考文档商户进件。
-
选择接入功能并准备相关材料
- 银联H5支付:在汇付开通银联云闪付业务;
2.2 对接准备
第一步:密钥获取
联调之前需要先获取公私钥,参见公私解钥参数获取说明;
第二步:公共参数获取
登录服务商/商户控台后,可在开发设置-开发者信息中,获取sys_id,product_id参数信息;
第三步:业务开通及配置
- 服务商模式:
步骤一:服务商功能及权限开通。服务商通过线下签约方式申请支付宝或微信、银联云闪付功能,汇付运营人员在审核好服务商资料之后,为服务商开通相关支付功能,及费率配置。
步骤二:为商户开通功能及权限。服务商权限及费率配置完成后,服务商可在服务商控台为下属商户申请开通相关支付功能,或通过调用 商户业务开通 接口开通。具体流程请参考文档商户进件。
- 直签商户:
与客户经理确认已开通功能及相关费率配置。
3. 开发指引
3.1 对接规范
调用汇付接口,均采取POST形式提交,数据格式统一为JSON格式,相关SDK及签名方法见链接:
SDK示例:Java SDK
加签验签:v2版接口加签验签
3.2 业务开发配置
3.2.1 银联侧准备:
提供支付页面域名需要提前联系汇付运营报备
3.2.2 斗拱侧准备:
已开通银联支付业务
3.3 系统调用流程
H5支付方式的整体调用流程建议:
3.3.1 银联调用流程
适用场景:
- H5页面在云闪付中打开中拉起云闪付收银台,供用户完成支付。
接入步骤
- 获取临时授权码
浏览器跳转云闪付授权地址, 传入参数: version=1.0.0, redirectUrl=回调地址(商户备案域名下地址),
银联返回两个参数: respCode(00为成功)、userAuthCode(临时授权码,有效期5分钟)
地址:
window.location = "https://qr.95516.com/qrcGtwWeb-web/api/userAuth?version=1.0.0&redirectUrl=https://spin-test-java.cloudpnr.com/api/test";
2. 获取银联云闪付用户标识
调用斗拱 「获取银联用户标识」 接口,传入上一步获取到的授权码,返回用户标识。
3. 下单
调用斗拱 「聚合正扫」 下单接口(trade_type='U_JSAPI'),传入用户标识,返回pay_info(支付链接)
4. 商户前端发起支付
前端页面拿到支付链接后进行跳转。
window.location = data.pay_info;
3.3.2 退款流程
完整的交易流程还要包括退款。由于用户或者商户的原因需要退款时,商户可以通过本接口将支付款退还给用户,退款成功资金将原路返回。微信、支付宝、银联云闪付参见扫码交易退款接口;其它类型的交易退款参见线上交易退款接口。
关注以下请参:
参数 | 中文名 | 必填 | 说明 |
---|---|---|---|
org_req_date | 原交易请求日期 | Y | 用户发起支付的日期 |
org_req_seq_id | 原交易请求流水号 | C | 商户系统发给斗拱的指令流水号 |
org_hf_seq_id | 原交易全局流水号 | C | 汇付生成的系统流水号 |
org_party_order_id | 原交易微信支付宝的商户单号 | C | 该笔交易在微信支付宝端的流水号 |
ord_amt | 申请退款金额 | Y | 退款金额<=原交易金额 |
- 原交易请求流水号、原交易全局流水号、原交易微信支付宝的商户单号三选一即可;
- 退款金额不能大于交易金额;由于接口支持多次部分退款,多次退款场景下退款总额不能高于原交易金额;
- 退款也是以异步返回的成功或失败状态为最终结果;
- 一些特殊场景下退款时效可能比较长,注意接口描述文档中的退款时效说明;
3.3.3 对账流程
为了满足商户财务的对账需求,斗拱提供了对账功能。
方案一:控台下载;
方案二:接口获取;参见交易结算对账单查询接口
- 接口下载的对账文件包括以下四类:
- 日对账单类型:包括日结算对账单、日分账对账单、日出金对账单;
- 日交易数据:主要是各种支付交易记录;
- 月结算对账单:按月汇总的结算对账单;
- 月交易数据:按月汇总支付交易记录;
3.3.4 异步通知
针对交易结果,汇付会通过异步消息的方式通知客户系统。
调用汇付接口时上送的异步通知地址为http/https路径:服务器为POST回调,默认超时时间为5秒,超时后会重试3次;不支持HTTP重定向;服务器对应答不是200~300之间的错误,会默认重试3次;异步通知服务器对HTTPS不认证验签和ALLOW_ALL_HOSTNAME_VERIFIER;如商户自定义通知端口,请使用8000-9005内端口,否则无法通知;URL 上请勿附带参数;异步回调请求编码集为:UTF-8;收到通知后请返回状态码“200”,响应异步通知。
注意事项:
同样的异步消息可能会通知多次,因此接收异步消息的处理需做好幂等,保障多次接收到同样的消息处理后结果不变。
在实现异步消息接收的同时,都建议您在重要的业务环节,通过反查接口确认 非终态 支付订单的状态,以保证在发生异步消息延迟或无法送达情况下的支付结果一致性。
详见异步通知使用说明。
4. API列表
类型 | 功能 | 描述 |
---|---|---|
API | 聚合正扫 | 商户服务端调该接口传入pay_info完成最终交易; |
API | 交易查询 | 查询支付交易信息 |
API | 交易退款 | 申请退款 |
API | 交易退款查询 | 查询退款进度及结果 |
API | 交易关单 | 长时间未支付做关单处理 |
应用程序接口 | 交易关单查询 | 交易关单查询 |
应用程序接口 | 获取银联用户标识接口 | 辅助类接口,银联用户标识查询 |
5.常见问题
- 支付接口调用报错:“resp_desc”:“数据权限认证失败”
问题原因:商户信息校验没有通过。
解决方案:
1)检查报文中的产品号(product_id)是否填写正确;
2)检查报文中的系统号(sys_id)和商户号(huifu_Id) 从属关系是否正确。
- 为什么交易成功以后会收到 2 条异步通知?
2条异步通知分别是 交易异步 跟 账务异步,用 notify_type 字段区分。
1). 交易异步情况
notify_type='1',trans_stat='F' 时,不推送账务异步
notify_type='1',trans_stat='S' 时,会推送账务异步
2). 账务异步情况:
notify_type='2',trans_stat='S',acct_stat='S' 表示交易成功-入账成功
notify_type='2',trans_stat='S',acct_stat='F' 表示交易成功-入账失败(非正常情况,可联系汇付技术人员确认排查)
更多问题详见斗拱开发者社区:https://service.dougong.net/t/qa