网银支付页面版

本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();

响应示例

页面跳转