支付机构人士认为移动支付受青睐,得益于其操作简单便捷、无需带现金或银行卡的特点;同时,市场主体的优惠促销活动多、移动支付应用场景不断拓展等,对用户习惯的培养也起到重要作用。因此移动APP支付成了广大老板与技术人员所需考虑不可或缺的一环。
移动APP端支付情况主要分为微信支付、支付宝支付、银联支付和快捷支付。其中,微信支付与支付宝支付是平日中使用最多的两种方式。但微信和支付宝本身不支持直接跳转个人APP进行支付,所以我们跟微信公众号和支付宝生活号进行间接连通,需要商家先在微信和支付宝注册相关APPID信息,详细内容查看支付场景之H5页面_微信服务号支付 h5-CSDN博客哦。
那么我们牛卡派今天就来抛砖迎玉,简单聊一聊移动APP中银联支付和快捷支付的支付流程,有需求的可以私信我哦~~
银联统一在线收银台
1.产品介绍
1.1简介
商户开通银联统一收银台后,消费者在向商户付款时选择银联,支持消费者在手机端用已安装的银行APP完成支付。银联会提供旗下多种支付工具,如各银行APP、云闪付APP、银联手机闪付等。
银联线上统一收银台支持银行
1.2应用场景
主要用于线上交易场景,如电商购物、旅游平台等
2.接入前准备
2.1商务准备
- 选择接入模式
- 服务商模式:指服务商与三方支付机构签约,服务商通过接口或控台方式完成商户入网。具体流程:服务商完成协议签署后,服务商需要准备好入网材料提供给支付机构人员,支付机构收到后会尽快为服务商发起入网申请,待审核通过入网成功后,服务商联系人将收到短信通知控台账号及密码。
- 客户要准备好线上业务场景,快捷支付可以集成到APP的线上场景中。
- 在系统完成商户进件入网
- 选择接入功能并准备相关材料
- 服务商模式:联系支付机构人员申请开通服务商银联统一在线收银台支付权限,开通后给予所属商户开通相关权限;
-
2.2对接准备
-
第一步:密钥获取
联调之前需要先获取公私钥;
第二步:公共参数获取
登录服务商/商户控台后,可在开发设置-开发者信息中,获取sys_id,product_id参数信息;
-
3.开发支持
-
3.1对接规范
调用接口,均采取POST形式提交,数据格式统一为JSON格式。
-
3.2系统调用流程
-
3.2.1交易流程
- 银联APP支付Android开发包下载 | iOS开发包下载
-
银联统一在线收银台接口
入参需关注以下字段:
参数 中文名 说明 pay_card_no 交易银行卡卡号 卡号是密文(公私钥加解密); card_number_lock 卡号锁定标识 1-表示锁定卡,锁定指只能用pay_card_no卡号做支付。默认为空-不锁定; ebank_en_abbr 直通模式的银行标识 目前支付以下银行:
CCB-中国建设银行,
CNCB-中信银行,
CEB-光大银行,
PAB-平安银行;front_url 前端跳转地址 支付成功后跳转页面,格式:http或https开头 notify_url 异步通知地址 交易结果异步通知地址,格式:http或https开头 同步返参需关注字段:
参数 中文名 说明 union_order_no 银联受理订单号 银联受理订单,银联移动支付系统返回该流水号,调用支付控件时使用
示例值:562616342321571143110异返参需关注字段:
参数 中文名 说明 union_order_no 银联受理订单号 银联受理订单,银联移动支付系统返回该流水号,调用支付控件时使用
示例值:562616342321571143110trans_status 交易状态 绑卡状态,I:初始化,P:处理中,S:成功,F:失败 bank_code 银行返回码 N bank_message 银行返回信息 示例值:成功[0000000] -
3.2.2退款流程
-
完整的交易流程还要包括退款。由于用户或者商户的原因需要退款时,商户可以通过本接口将支付款退还给用户,退款成功资金将原路返回。
关注以下请参:
参数 中文名 必填 说明 org_req_date 原交易请求日期 Y 用户发起支付的日期 org_req_seq_id 原交易请求流水号 C 商户系统发给系统的指令流水号 org_nkp_seq_id 原交易全局流水号 C 系统生成的系统流水号 ord_amt 申请退款金额 Y 退款金额<=原交易金额 - 原交易请求流水号、原交易全局流水号、原交易微信支付宝的商户单号三选一即可;
- 退款金额不能大于交易金额;由于接口支持多次部分退款,多次退款场景下退款总额不能高于原交易金额;
- 退款也是以异步返回的成功或失败状态为最终结果;
- 一些特殊场景下退款时效可能比较长,注意接口描述文档中的退款时效说明;
3.2.3对账流程
为了满足商户财务的对账需求,系统提供了对账功能。
方案一:控台下载;
方案二:接口获取;参见交易结算对账单查询接口
接口下载的对账文件包括以下四类:
- 日对账单类型:包括日结算对账单、日分账对账单、日出金对账单;
- 日交易数据:主要是各种支付交易记录;
- 月结算对账单:按月汇总的结算对账单;
- 月交易数据:按月汇总支付交易记录;
3.2.4异步通知
针对交易结果,系统会通过异步消息的方式通知客户系统。
调用接口时上送的异步通知地址为http/https路径:服务器为POST回调,默认超时时间为5秒,超时后会重试3次;不支持HTTP重定向;服务器对应答不是200~300之间的错误,会默认重试3次;异步通知服务器对HTTPS不认证验签和ALLOW_ALL_HOSTNAME_VERIFIER;如商户自定义通知端口,请使用8000-9005内端口,否则无法通知;URL 上请勿附带参数;异步回调请求编码集为:UTF-8;收到通知后请返回状态码“200”,响应异步通知。
注意事项:
同样的异步消息可能会通知多次,因此接收异步消息的处理需做好幂等,保障多次接收到同样的消息处理后结果不变。
在实现异步消息接收的同时,都建议您在重要的业务环节,通过反查接口确认 非终态 支付订单的状态,以保证在发生异步消息延迟或无法送达情况下的支付结果一致性。
4.API接口
4.1银联统一在线收银台接口
应用场景
第一种商户APP场景:调用银联统一在线收银台接口获取“银联受理订单号”,随后调用SDK唤起消费者在手机端已安装的云闪付APP或银行APP完成支付。
第二种场景:商户小程序、H5页面可以通过拉起银联云闪付小程序方式进行支付。
注意:
- 使用云闪付小程序支付每笔都需要验证支付密码+短信验证码;
- 银联线上收银台虽然同时支持APP支付与云闪付小程序支付,但需要分别申请,且会生成两个不同的银联商户号。目前系统不支持一个商户号同时绑定多个银联商户号,如果同时开通需要入驻两个系统商户。
公共参数
- 公共请求参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
sys_id | 系统号 | String | 32 | Y | 渠道商/商户的XXX_id |
product_id | 产品号 | String | 32 | Y | 三方机构分配的产品号,示例值:YYYY |
sign | 加签结果 | String | 512 | Y | 签名,对报文整体签名 |
data | 请求数据 | JSON | Y | 业务请求参数 |
- 公共返回参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
sign | 签名 | String | 512 | Y | 签名,对报文整体签名 |
data | 响应内容体 | JSON | N | 业务返回参数 |
请求参数
data
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
XXX_id | 商户号 | String | 32 | Y | 系统配置的商户号 |
req_date | 请求日期 | String | 8 | Y | 格式:yyyyMMdd; |
req_seq_id | 请求流水号 | String | 64 | Y | 示例值:2021091708126665001 |
trans_amt | 订单金额 | String | 14 | Y | 单位元;示例值:1000.00 |
card_number_lock | 卡号锁定标识 | String | 1 | N | 1-表示锁定卡,锁定指只能用pay_card_no卡号做支付。默认为空-不锁定;示例值:1 |
ebank_en_abbr | 直通模式的银行标识 | String | 40 | N | 示例值:CCB;目前支付以下银行: |
order_desc | 商品描述 | String | 32 | Y | 示例值:商品描述 |
pay_card_no | 交易银行卡卡号 | String | 1024 | N | 卡号是密文(公私钥加解密); |
pay_card_type | 支付卡类型 | String | 1 | N | D:借记账户,C:贷记账户;示例值:D |
time_expire | 订单失效时间 | String | 14 | N | 格式:yyyyMMddHHmmss;示例值:20220925102245 |
acct_split_bunch | 分账对象 | String | N | jsonObject格式; 参见分账对象 | |
risk_check_data | 安全信息 | String | Y | jsonObject格式;参见安全信息 | |
front_url | 前端跳转地址 | String | 120 | N | 支付成功后跳转,格式:http或https开头, |
notify_url | 异步通知地址 | String | 512 | N | 交易结果异步通知地址,格式:http或https开头 |
remark | 备注 | String | 1024 | N | 示例值:备注 |
pay_scene | 支付场景 | String | 16 | N | U_APP:银联云闪付APP;默认 |
third_pay_data | 三方支付数据 | String | 2048 | C | jsonObject;pay_scene为云闪付公众号与云闪付小程序时必填 |
delay_acct_flag | 延时标记 | String | 1 | N | 是否延时交易;Y:延迟,N:实时(默认);示例值:Y |
请求示例
{
"sys_id": "6666000108840829",
"product_id": "YYYY",
"data": {
"time_expire": "",
"trans_amt": "0.11",
"risk_check_data": "{\"base_station\":\"7\",\"latitude\":\"4\",\"ip_addr\":\"172.28.52.52\",\"longitude\":\"3\"}",
"remark": "merPriv11",
"order_desc": "通用性商品1",
"notify_url": "https://www.service.com/getresp",
"ebank_en_abbr": "",
"card_number_lock": "",
"req_seq_id": "20240425100908566nb0amagjqxbcqd",
"req_date": "20240425",
"pay_card_no": "",
"XXX_id": "6666000109100000",
"delay_acct_flag": "Y",
"front_url": "https://www.service.com/getresp"
},
"sign": "cYr0BZWTThN0v7NK22aRzWwsUUuJ4V3GYFrPtj4lotIsNKKlpx+o6IySTD+lyz8fREUM8IxaPRWKqRpzDxOSTDw7Q7c6RM8FKhEE64e1Nj0tNCFnERSd0RrdpobLOxLI1fZUwYp1XhUczOX2Y6ZL10KvyJjvw9TvZXxtb+LlnnVvLvkKMnBXwwPLQ65TY2be6ht3II1TXfCOrrCpNIljQfvD+cdR6bSrTFo8V4p8WYSUGKFckLIkyMrZdKMO7Trr5hCNisByCfAyjmqmStcK+gEe1u/oogVH7FlqBrAtzu0thQMylbrqJKdgP9m5ZdvIyTKMTO6impWa3fsXDZfcDQ=="
}
返回参数
同步返回
data
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
resp_code | 业务返回码 | String | 8 | Y | 参见业务返回码,示例值:00000000 |
resp_desc | 业务返回信息 | String | 512 | Y | 参见业务返回信息,示例值:例处理成功 |
XXX_id | 机构商户号 | String | 32 | Y | 示例值:6666000109800000 |
product_id | 机构产品号 | String | 32 | Y | 系统分配的产品号;示例值:YYY |
req_date | 请求日期 | String | 8 | Y | 格式:yyyyMMdd;示例值:20221130 |
req_seq_id | 请求流水号 | String | 128 | Y | 示例值:2021091708126665001 |
trans_amt | 订单金额 | String | 14 | Y | 单位:元;示例值:1.23 |
bank_order_no | 支付渠道订单编号 | String | 64 | N | 机构发往银行(银联)的订单编号,即银联流水号; |
channel_type | 支付渠道类型 | String | 64 | N | U-银联,N-网联,D-直连,O-其他;示例值:U |
XXX_seq_id | 全局流水号 | String | 128 | N | 示例值:00290TOP1GR210919004230P853ac13262200000 |
union_order_no | 银联受理订单号 | String | 32 | N | 银联受理订单,银联移动支付系统返回该流水号,调用支付控件时使用 |
bank_code | 银行返回码 | String | 64 | N | 示例值:00 |
bank_desc | 银行返回信息 | String | 256 | N | 示例值:成功[0000000] |
notify_sync_url | 应答跳转的地址 | String | 4096 | N | |
pay_info | 支付信息 | String | 128 | N | 示例值:766339499274020784818 |
union_app_id | 云闪付小程序id | String | 128 | N | 示例值:wx3cbe919f36710d1c |
union_path | 云闪付小程序path | String | 1024 | N | 云闪付小程序path,示例值:/pages/CQPApplet/index?tn=517962138420828734108 |
acct_split_bunch | 分账对象 | jsonObject | N | 参见分账对象 | |
unconfirm_amt | 待确认总金额 | String | 14 | N | 单位元,需保留小数点后两位,示例值:1.00 |
confirmed_amt | 已确认总金额 | String | 14 | N | 单位元,需保留小数点后两位,示例值:1.00 |
异步返回
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
sub_resp_code | 返回码 | String | 8 | Y | 参见业务返回码,示例值:00000000 |
sub_resp_desc | 返回描述 | String | 512 | Y | 参见业务返回信息,示例值:交易成功 |
req_seq_id | 请求流水号 | String | 64 | Y | 示例值:2021091708126665001 |
req_date | 请求日期 | String | 8 | Y | 格式:yyyyMMdd;示例值:20221120 |
product_id | 机构产品号 | String | 32 | Y | 机构分配的产品号;示例值:YYYY |
XXX_id | 机构商户号 | String | 32 | Y | 机构分配的商户号;示例值:6666000108800000 |
trans_amt | 订单金额 | String | 14 | N | 单位:元;示例值:1.23 |
union_order_no | 银联受理订单 | String | 32 | N | 银联受理订单,银联移动支付系统返回该流水号,调用支付控件时使用 |
pay_card_no | 交易银行卡卡号 | String | 1024 | N | 卡号是密文(公私钥加解密);示例值: |
is_delay_acct | 是否延时交易 | String | 1 | N | 0:实时;1:延时;示例值:0 |
is_div | 是否分账交易 | String | 1 | N | 0:非分账交易;1:是分账交易;示例值:0 |
fee_flag | 手续费扣款标志 | String | 1 | N | 1:外扣;2:内扣;示例值:2 |
acct_split_bunch | 分账对象 | jsonObject | N | 参见分账对象 | |
split_fee_info | 分账手续费信息 | String | 2048 | N | jsonObject格式 |
channel_type | 支付渠道类型 | String | 1 | N | U:银联;示例值:U |
bank_order_no | 支付渠道订单编号 | String | 32 | N | 机构发往银行(银联)的订单编号,即银联流水号; |
trans_stat | 交易状态 | String | 1 | N | I:处理中,P:处理中,S:成功,F:失败;示例值:S |
mer_priv | 商户私有域 | String | 1024 | N | 原样返回请求参数中的“remark”内容;示例值:备注 |
remark | 备注 | String | 1024 | N | 示例值: |
notify_sync_url | 应答跳转的地址 | String | 4096 | N | |
bank_code | 银行返回码 | String | 32 | N | 示例值:00 |
bank_message | 银行返回信息 | String | 32 | N | 示例值:成功[0000000] |
pay_scene | 支付场景 | String | 16 | N | U_APP:银联云闪付APP; |
app_id | 小程序id | String | 128 | N | 示例值:wx8c7d23e805a33666 |
union_app_id | 云闪付小程序id | String | 128 | N | 示例值:wx3cbe919f36710d1c |
union_path | 云闪付小程序path | String | 1024 | N | 云闪付小程序path, |
返回示例
{
"data": {
"bank_code": "00",
"bank_desc": "成功[0000000]",
"delay_acct_flag": "N",
"XXX_seq_id": "0047default240314175148P0020a8ec41b00000",
"XXX_id": "6666000105470650",
"notify_sync_url": "",
"pay_info": "509921812139102192104",
"product_id": "HSK",
"req_date": "20240314",
"req_seq_id": "20240312937123720211710409908",
"resp_code": "00000000",
"resp_desc": "交易成功",
"trans_amt": "1.00",
"trans_stat": "P",
"union_app_id": "wx3cbe919f36710d1c",
"union_path": "/pages/CQPApplet/index?tn=509921812139102192104"
}
}
4.2线上交易查询接口
应用场景
用于查询单笔线上交易状态及明细。支持快捷、网银、手机wap、银联APP、银行大额支付、全域资金管理的入账确认交易查询。
注意:不支持聚合扫码接口生成的微信、支付宝、银联二维码等交易的查询。
适用对象
开通了快捷、网银、手机wap、银联统一在线收银台的商户
公共参数
- 公共请求参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
sys_id | 系统号 | String | 32 | Y | 渠道商/商户的XXX_id |
product_id | 产品号 | String | 32 | Y | 三方机构分配的产品号,示例值:YYYY |
sign | 加签结果 | String | 512 | Y | 签名,对报文整体签名 |
data | 请求数据 | JSON | Y | 业务请求参数 |
- 公共返回参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
sign | 签名 | String | 512 | Y | 签名,对报文整体签名 |
data | 响应内容体 | JSON | N | 业务返回参数 |
请求参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
XXX_id | 商户号 | String | 32 | Y | 系统生成的商户号,示例值:6666000109812123 |
org_req_date | 原交易请求日期 | String | 8 | Y | 格式:yyyyMMdd;示例值:20220125 |
org_XXX_seq_id | 原交易返回的全局流水号 | String | 128 | C | 原交易请求流水号、原交易返回的全局流水号至少要送其中一项; |
org_req_seq_id | 原交易请求流水号 | String | 128 | C | 原交易请求流水号、原交易返回的全局流水号至少要送其中一项; |
pay_type | 原交易支付类型 | String | 20 | N | QUICK_PAY:快捷支付、快捷充值(查询快捷交易必填) |
{
"sys_id": "6666000108800000",
"product_id": "YYYY",
"data": {
"org_req_date": "20240401",
"org_req_seq_id": "295700155481522176",
"org_XXX_seq_id": "00600000000240401100725P864ac13645d00000",
"pay_type": "QUICK_PAY",
"XXX_id": "6666000109133323"
},
"sign": "AzNRSezJedL519PO1cHhGhVrDc/0vrNlp8NMkYcuSjeenObqGWUcIq9akL4xlMncgYBSqjBBI6je2JFtLBcMU9tbKN2hlcxjxvlbNZVbzibikW2v7fO9ZkRobqV4IvICJ9nqeCf0IE1p5KHhO/uMz+BDoctrWzlCRpA/mDAQIFRea0Egfg5sYouMBXyR8HymjaA2X9Hwh2/e/jzIZArQPV1M1bB1OE6EF6cCkqX8DN7b9F0t4XeNPjLvakfCHDXh46fRMflKu7+Uxzoyq5NR45Ygsmd3jOFQhm4c3QwJCCAh9ft6TcxYHF9BYw4NZqCmLwJHMg3Sp+8z+kpKSze51Q=="
}
返回参数
参数 | 中文名 | 定义 | 长度 | 必填 | 说明 |
resp_code | 业务返回码 | String | 8 | Y | 参见业务返回码,示例值:00000000 |
resp_desc | 业务返回信息 | String | 512 | Y | 业务返回信息,示例值:交易成功 |
XXX_id | 商户号 | String | 32 | Y | 系统配置的商户号,示例值:6666000109812123 |
org_req_date | 原交易请求日期 | String | 8 | Y | 格式:yyyyMMdd;示例值:20221022 |
org_req_seq_id | 原交易请求流水号 | String | 128 | Y | 示例值:2021091708126665001 |
org_XXX_seq_id | 交易返回的全局流水号 | String | 128 | N | 示例值:00470topo1A211015160805P090ac132fef00000 |
pay_type | 支付类型 | String | 20 | N | ONLINE_PAY_B2B:B2B网银支付 |
trans_amt | 交易金额 | String | 14 | Y | 单位元,需保留小数点后两位,示例值:1.00 |
unconfirm_amt | 待确认总金额 | String | 14 | N | 待确认总金额; 单位元,需保留小数点后两位,示例值:1.00 ; |
confirmed_amt | 已确认总金额 | String | 14 | N | 已确认总金额;单位元,需保留小数点后两位,示例值:1.00; |
trans_stat | 交易状态 | String | 1 | N | P:处理中 S:成功 F:失败;示例值:S |
debit_flag | 借贷记标识 | String | 1 | N | D:借记 C:贷记;示例值:C |
pay_card_no | 交易银行卡号 | String | 1024 | N | 卡号为密文;交易类型为银联统一支付UNION_PAY、网银转账TRANSFER_ACCT会返回值; |
fee_amt | 手续费金额 | String | 14 | Y | 单位元,需保留小数点后两位,示例值:1.00 |
union_order_no | 银联受理订单号 | String | 32 | N | 银联移动支付系统返回该流水号,调用支付控件时使用;示例值:562616342321571143110 |
acct_split_bunch | 分账对象 | jsonObject | N | 参见分账对象 | |
split_fee_info | 分账手续费信息 | String | 2048 | N | jsonObject格式 |
bank_extend_param_data | 银行附加参数 | jsonObject | N | 参见银行附加参数 | |
bank_order_no | 支付渠道订单编号 | String | 64 | N | 系统发往银行(银联/网联)的订单编号,即银联网联流水号;示例值:202111050936518a4wzkU0A0 |
avoid_sms_flag | 免短标签 | String | 1 | N | 3:快捷免短信验证;示例值:3 |
user_XXX_id | 用户客户号 | string | 32 | N | 系统分配的用户号;示例值:6666000109800000 |
in_acct_flag | 入账标识 | string | 16 | N | 示例值:YDNUCSV2JV7BAXYN |
remittance_order_id | 支付通道流水号 | string | 128 | N | 银行来账通知中的汇款订单号;示例值:20230214172250defaultit656505067 |
acct_id | 账户号 | string | 32 | N | 系统分配的账户号, |
bank_card_no | 银行卡号 | string | 2048 | N | 成功交易才会返回,返回密文;原文最大为19位,密文最大长度为2048; |
certificate_name | 持卡人姓名 | string | 64 | N | 成功交易才会返回, |
batch_no | 批次号 | String | 16 | N | 通过批次方式入账的才会有批次号;示例值:2022101213203001 |
combinedpay_data | 补贴支付信息 | String | N | jsonArray字符串; | |
combinedpay_fee_amt | 补贴部分的手续费 | String | 14 | N | 单位元,需保留小数点后两位,示例值:1.00 |
remark | 备注 | String | 256 | N | 示例值:备注 |
bank_code | 通道返回码 | String | 32 | N | 示例值:00000000 |
bank_desc | 通道返回描述 | String | 200 | N | 示例值:成功 |
bankMode | 银行模式 | String | 8 | N | BFJ-备付金模式,默认 |
formUrl | 提交页面地址 | String | 256 | N | bank_mode为银行模式时,提交页面跳转地址,商户可以直接跳转到当前页面进行选择卡号进行下单,获取付款方信息 |
sub_base_acct_no | 收款方缴费账号 | String | 32 | N | 收款方账户号;示例值:A14186488 |
sub_base_acct_no_name | 收款方缴费账号名称 | String | 200 | N | 收款方账户名; |
sub_bank_name | 收款方银行名称 | String | 200 | N |
{
"data": {
"resp_code": "00000000",
"resp_desc": "查询成功",
"XXX_id": "6666000103400000,
"org_req_date": "20211209",
"org_req_seq_id": "5424414614661726",
"trans_stat": "P",
"trans_amt": "0.01",
"org_XXX_seq_id": "0047default211209144152P545c0a821ef00000",
"bank_code": "05",
"bank_desc": "交易已受理,请稍后查询交易结果[6154037]",
"debit_flag": "D",
"pay_card_no": "OLMq1zfOniLEl4LE+UpXaiueWAcTsxNPEvd6XmHZtg/JOln3sfDnA5H1RuPsJPl4RElbrsCpnBqVlibzJrSblompFvT7HetHjalhMLb/DphYgLd77kLn47uzUQCY8mTwcTgthG1Of3MPuR6VYOeJBrzmgPyNSjfqO74RfD5F3X3TYYHuv/2umnSGzfZ18hyEeth75jQiS5e30O45iq5iEnJgVXu/ucPFnIfwIF0romjlgiBHNW/alhrZSOfYs08tUprvCoREL8jS8RazKA7XCXveEtGn4mHsNl4rPVDPKqI5kl1RQyPfv/KCaLZgkLTwR/jmElPtZTeyHX6A7XdAKA==",
"pay_type": "UNION_PAY",
"fee_amt": "0.00",
"remark": "merPriv11",
"acct_split_bunch": "{\"acct_infos\":[{\"div_amt\":\"0.01\",\"huifu_id\":\"6666000103423237\"}]}",
"avoid_sms_flag": ""
}
}
快捷支付
1. 产品介绍
1.1 简介
持卡人无需登录网上银行,可直接输入卡面信息及持卡人身份信息。根据安全规则通过验证银行预留的手机接收校验码完成签约或支付,是一种便捷、快速、安全的付款方式,主要用于PC网站或移动端银行卡支付。
1.2 应用场景
商户如果想在自己的业务场景中摆脱对微信、支付宝的依赖,获取用户信息以便提供更好的服务可以选择快捷。或者将快捷深度融合到自己的业务场景中,比如整合自己的积分、营销服务等,可以选择快捷。系统提供了两种接口模式:
- 纯接口模式:包括绑卡、短信预校验、支付申请、支付确认等一系列接口,可以灵活地打造操作流程整合进业务流程中。
- 带页面的快捷接口,一个接口拉起支付页面完成整个支付流程,简单方便。
2.接入前准备
2.1商务准备
- 选择接入模式
- 服务商模式:指服务商与三方支付机构签约,服务商通过接口或控台方式完成商户入网。具体流程:服务商完成协议签署后,服务商需要准备好入网材料提供给支付机构人员,支付机构收到后会尽快为服务商发起入网申请,待审核通过入网成功后,服务商联系人将收到短信通知控台账号及密码。
- 客户要准备好线上业务场景,快捷支付可以集成到PC网站、APP、H5页面的线上场景中。
- 在系统完成商户进件入网
- 选择接入功能并准备相关材料
- 服务商模式:联系支付机构人员申请开通服务商快捷支付权限,开通后给予所属商户开通相关权限;
-
2.2对接准备
-
第一步:密钥获取
联调之前需要先获取公私钥;
第二步:公共参数获取
登录服务商/商户控台后,可在开发设置-开发者信息中,获取sys_id,product_id参数信息;
-
第三步:业务开通及配置
- 控台开通
-
服务商控台【商户管理】【信息查询】【商户信息(新)】【业务信息编辑】【支付功能】开通快捷支付、配置相关费率
- 接口开通
-
调用 商户业务开通 接口开通快捷支付。
-
3.开发支持
-
3.1对接规范
调用接口,均采取POST形式提交,数据格式统一为JSON格式。
-
3.2确认业务配置
-
控台查询快捷支付是否配置完成
1.通过服务商控台【商户信息查询】【产品信息TAB页面】查看【快捷】
2.商户控台【我的信息】
3.通过商户详细信息查询接口来确认相关配置。
-
3.3系统调用流程
-
3.3.1交易流程
-
快捷绑卡申请接口
入参需关注以下字段:
参数
中文名
必填
说明
order_id
订单号
Y
绑卡申请订单号
out_cust_id
商户用户id
Y
用户在商户侧注册商户生成的用户号;同一用户不要反复注册不同的用户id;
card_id
银行卡号
Y
需要密文传输,使用系统RSA公钥加密(加密前64位,加密后最长2048位)
card_name
银行卡开户姓名
Y
需要密文传输,使用系统RSA公钥加密(加密前64位,加密后最长2048位)
cert_id
银行卡绑定身份证
Y
需要密文传输,使用系统RSA公钥加密(加密前64位,加密后最长2048位)
card_mp
银行卡绑定手机号
Y
需要密文传输,使用系统RSA公钥加密(加密前64位,加密后最长2048位)
vip_code
CVV2
C
信用卡交易专用需要密文传输。
expiration
卡有效期
C
信用卡交易专用,格式:MMYY,需要密文传输;
dc_type
卡的借贷类型
N
C:信用卡,D:借记卡,S:准贷记,U:未知卡;
protocol_no
挂网协议编号
C
授权信息(招行绑卡需要上送);
快捷绑卡确认接口
入参需关注以下字段:
参数
中文名
必填
说明
order_id
订单号
Y
快捷绑卡申请接口的入参绑卡申请订单号order_id
verify_code
验证码
Y
短信验证码
返参需关注字段:
参数
中文名
说明
trans_status
交易状态
绑卡状态,I:初始化,P:处理中,S:成功,F:失败
cust_id
用户号
绑卡成功后会获取用户客户号,
token_no
绑卡序列号
后续快捷支付以token_no代表已绑定的卡
快捷支付申请
入参需关注以下字段:
参数
中文名
必填
说明
card_bind_id
绑卡id
Y
绑卡成功后会获取绑卡id,
user_huifu_id
用户客户号
Y
绑卡成功后会获取用户客户号,
order_type
订单类型
N
P:支付; R:充值, 默认:P
time_expire
订单失效时间
N
格式:yyyyMMddHHmmss,注:工商银行需传90min以上方能成功
返参需关注字段:
参数
中文名
说明
avoid_sms_flag
免短标签
如是 3,则无需调用确认接口
快捷支付确认
入参需关注以下字段:
参数
中文名
必填
说明
sms_code
短信验证码
Y
用户提供6位短信验证码;
异步返回关注以下字段:
参数
中文名
说明
trans_stat
交易状态
I:处理中(初始化),P:处理中,S:成功,F:失败;
acct_stat
账务状态
可能因为手续费不足的原因存在交易成功账务失败的情况。这种情况可以联系系统运营人员解决;
3.3.2退款流程
-
完整的交易流程还要包括退款。由于用户或者商户的原因需要退款时,商户可以通过本接口将支付款退还给用户,退款成功资金将原路返回。
关注以下请参:
参数
中文名
必填
说明
org_req_date
原交易请求日期
Y
用户发起支付的日期
org_req_seq_id
原交易请求流水号
C
商户系统发给系统的指令流水号
org_XXX_seq_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”,响应异步通知。
注意事项:
同样的异步消息可能会通知多次,因此接收异步消息的处理需做好幂等,保障多次接收到同样的消息处理后结果不变。
在实现异步消息接收的同时,都建议您在重要的业务环节,通过反查接口确认 非终态 支付订单的状态,以保证在发生异步消息延迟或无法送达情况下的支付结果一致性。
由于快捷支付相关接口与银联收银台接口参数类似,所以这里就不多做介绍了。有需要的可以私信我们牛卡派哦~~