网银支付页面版¶
本API为页面版接口需表单提交。
用于商户进行网银支付及充值,用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付,本接口的银行同步回调不作为交易结果判断仅供页面跳转使用,交易结果以异步通知为准。充值场景不支持贷记卡。
涉及到的接口包括: 网银支付页面版接口、 线上交易查询接口 、 线上交易退款接口、 线上退款查询接口。
请求参数¶
- 请求地址
https://spin.cloudpnr.com/top-online-ser/onlinePayPre
- 公共请求参数
请求报文头HEADER - 「接口规则-参数规定-报文头」 ,请求报文体BODY - 「接口规则-参数规定-报文体」 ,响应报文体 - 「接口规则-参数规定-响应报文体」
- 请求参数(data)
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
请求流水号 | req_seq_id | 变长64位String | 必须 | |
请求日期 | req_date | 定长8位String | 必须 | YYYYMMDD |
产品号 | product_id | 变长32位String | 必须 | |
商户号 | huifu_id | 变长32位String | 必须 | |
用户号 | user_huifu_id | 变长32位String | 可选 | |
订单金额 | trans_amt | 变长12位String | 必须 | 订单金额,单位元,需保留小数点后两位,例如:1.00,最低传入0.01 |
网关支付类型 | gate_type | 变长2位String | 可选 | 01:个人网关;02:企业网关 |
付款方银行编号 | bank_id | 固定8位String | 可选 | 若填入银行编号时,网关支付类型必填,同步返回具体银行页面;若未填入银行编号时,同步返回银行选择页面 |
网联扩展信息 | extend_pay | String | 可选 | 网联扩展信息 |
设备信息 | device_info | String | 必须 | 设备信息 |
异步通知地址 | mer_notice_url | 变长512位String | 必须 | virgo://#{http_server_url} 例:virgo://http://www.xxx.com/getResp |
页面跳转地址 | business_url | 变长120位String | 可选 | 前端跳转地址 virgo://#{http_server_url} 例:virgo://http://www.xxx.com/getResp |
订单类型 | order_type | 固定1位String | 可选 | P:支付;R:充值, 默认:P |
延时标记 | is_delay_acct | 固定1位String | 可选 | 是否延时交易,1为延迟 0为不延迟 |
限定账户类型 | limit_acct_type | 变长2位String | 可选 | D:借记;C:贷记,默认D |
分账串 | acct_split_bunch | JSON | 可选 | 充值不支持分账,请求分账串 |
订单有效期 | time_expire | 固定14位String | 可选 | 订单失效时间 YYYYMMDDHHMMSS格式 |
风控信息 | risk_check_info | 变长4000位String | 必须 | jsonstring,风控信息 |
商户私有域 | mer_priv | 变长1024位String | 可选 |
设备信息¶
参数 | 中文名 | 类型 | 必填 | 最大长度 | 说明 |
---|---|---|---|---|---|
pyer_trx_trm_tp | 交易设备类型 | String | Y | 1 | 1:电脑;2:手机 |
trx_device_ip | 交易设备IP | String | N | 64 | 用于标识交易设备IP地址,目前暂传IPv4格式 |
trx_device_mac | 交易设备MAC | String | N | 12 | 去掉特殊的连接符号,如冒号、连接符 |
trx_device_imei | 交易设备IMEI | String | N | 15 | |
trx_device_imsi | 交易设备IMSI | String | N | 15 | |
trx_device_icc_id | 交易设备ICCID | String | N | 20 | |
trx_device_wifi_mac | 交易设备WIFIMAC | String | N | 12 | |
trx_device_gps | 交易设备GPS | String | N | 22 |
网联扩展信息¶
参数 | 中文名 | 类型 | 必填 | 最大长度 | 说明 |
---|---|---|---|---|---|
gw_chnnl_tp | 网关支付受理渠道 | String | N | 2 | 01:电脑浏览器02:手机浏览器03:手机应用程序99:其他,默认:99 |
goods_name | 商品名 | String | N | 64 | 默认:通用型产品 |
响应参数¶
- 同步失败响应参数(resp_data)
仅传business_url且校验失败场景返回
sub_resp_code | 返回码 | String | Y | 8 | 业务返回码 |
sub_resp_desc | 返回描述 | String | Y | 512 | 业务返回描述 |
req_seq_id | 请求流水号 | String | Y | 64 | |
req_date | 请求日期 | String | Y | 8 | |
hf_seq_id | 汇付流水号 | String | N | 128 | |
huifu_id | 商户号 | String | Y | 32 |
- 页面跳转地址返回参数-银行同步回调(resp_data)
sub_resp_code | 返回码 | String | Y | 8 | 业务返回码,同步回调结果不表示交易结果,以异步通知为准 |
sub_resp_desc | 返回描述 | String | Y | 512 | 业务返回描述 |
req_seq_id | 请求流水号 | String | Y | 64 | |
req_date | 请求日期 | String | Y | 8 | |
hf_seq_id | 汇付流水号 | String | N | 128 | |
huifu_id | 商户号 | String | Y | 32 | |
mer_name | 商户名称 | String | N | ||
ord_amt | 订单金额 | String | N | 12 |
- 异步响应参数(resp_data)
参数 | 中文名 | 类型 | 必填 | 最大长度 | 说明 |
---|---|---|---|---|---|
sub_resp_code | 返回码 | String | Y | 8 | 业务返回码 |
sub_resp_desc | 返回描述 | String | Y | 512 | 业务返回描述 |
req_seq_id | 请求流水号 | String | Y | 64 | |
req_date | 请求日期 | String | Y | 8 | |
hf_seq_id | 汇付流水号 | String | N | 128 | |
product_id | 产品号 | String | Y | 32 | |
huifu_id | 商户号 | String | Y | 32 | |
mer_priv | 商户私有域 | String | N | 1024 | |
trans_amt | 订单金额 | String | N | 12 | |
trans_stat | 交易状态 | String | N | 1 | P:处理中,S:成功,F:失败 |
user_huifu_id | 用户号 | String | N | 32 | |
bank_id | 银行代号 | String | N | 8 | |
debit_flag | 借贷标识 | String | N | 1 | D:借记;C:贷记 |
acct_split_bunch | 分账串 | JSON | N | 返回分账串 | |
fee_amt | 手续费 | String | N | 12 | |
is_delay_acct | 是否延时分账 | String | N | 1 | 0:实时;1:延时 |
is_div | 是否分账交易 | String | N | 1 | 0:非分账交易;1:是分账交易 |
fee_flag | 手续费扣款标志 | String | N | 1 | 1:外扣;2:内扣 |
bank_code | 通道返回码 | String | N | 8 | |
bank_message | 通道返回描述 | String | N | 128 | |
trans_type | 交易类型 | String | Y | 交易类型 |
交易类型¶
transType | 备注 |
---|---|
ONLINE_PAY_B2B | B2B网银支付 |
ONLINE_PAY_B2C | B2C网银支付 |
ONLINE_RECHARGE_B2B | B2B网银充值 |
ONLINE_RECHARGE_B2C | B2C网银充值 |
请求示例¶
java
String url = " https://spin-test.cloudpnr.com/top-online-ser/onlinePayPre";
String data = "{'reqSeqId':'20210101onlinepage0001','reqDate':'20210201','productId':'MYPAY','sysId':'spin','huifuId':'6666000003100615','transAmt':'10.00','gateType':'01','bankId':'00000001','mer_notice_url':'virgo://a'}";
String sign = "kPHEb/NttgU1KVcVmkIwm/6cz37NVSR7nxQR9GhDp5CVEYu1gbMZhI4ga7SmXenks19Y7ynnMq/Ri9R07YV0fEqcGIx5rJ4QvGAMw/H61fDmnxG9kYXcUlOj2AzAzJV6H5EMH4y+ZD7dwJWeu1zavw1sOyrPe8x4rEKyg1TguEbsTDDBvwkJru4gl+ynlFqZA1GuFKAv5mT4mzEmfvdb3rIOWFhOSYHXPEOCm1q+5rEuiyr2RsfTGS5iqx1BBGGqcMZW8OeKQKvoDynfaeY2o4BO2jQsWWLZ8hihZIXUpn2HYzKhxWdByqKqYdwGA9es1+V438N6tM7qPcl+CSHsQg=="; // 加签
StringBuilder sb = new StringBuilder();
sb.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
sb.append("<HTML>");
sb.append(" <HEAD><TITLE>sender</TITLE></HEAD>");
sb.append(" <BODY style=\"display: none\">");
sb.append("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
sb.append("<input type=\"hidden\" name=\"sign\" value=\"" + sign + "\"/>");
sb.append("<input type=\"hidden\" name=\"data\" value=\"" + data + "\"/>");
sb.append("<input type=\"hidden\" name=\"signType\" value=\"RSA2\"/>");
sb.append("<input type=\"hidden\" name=\"format\" value=\"JSON\"/>");
sb.append("<input type=\"hidden\" name=\"charset\" value=\"UTF-8\"/>");
sb.append("<input type=\"hidden\" name=\"version\" value=\"1.0.0\"/>");
sb.append("<input type=\"hidden\" name=\"sysId\" value=\"TEST\"/>");
sb.append("</from>");
sb.append("<script>window.document.submitForm.submit();</script>");
sb.append(" </BODY>");
sb.append("</HTML>");
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.write(sb.toString());
writer.close();
响应示例¶
页面跳转