网银类接口

204 网银支付( WEB 版)接口

功能说明

用于个人用户、企业用户和个体工商户进行网银支付。

用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为204
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 付款客户号
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
支付网关号 gate_id 定长2位的String 可选 网关号列表详见 附件二 ;如果不填,支付时会先调到汇付银行选择页面,用户选择银行后,再跳转银行页面
交易金额 trans_amt 变长14位String 必须 金额格式保留两位小数
页面返回URL ret_url 变长128位String 可选 前台异步通知商户网银支付结果,前台页面返回,交易结果以商户后台应答地址返回为准
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知商户网银支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位String 可选 用于扩展请求参数
分账账户串 div_detail 变长String 必须 该参数表示分账对象,将金额分给不同用户的账户中;分账串定义可参照下表
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给商户平台自己,可通过上线邮件中查找商户客户号和子账号信息
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
商品名称 goods_desc 变长12位String 可选 默认:通用型产品
订单有效期 ord_exp 定长14位String 可选 格式为YYYYMMDDhhmmss
网关支付受理渠道 gw_chnnl_tp 定长2位String 可选 网关支付受理渠道 01:电脑浏览器 02:手机浏览器 03:手机应用程序 99:其他 若为空默认传99
付款终端类型 pyer_trx_trm_tp 定长2位String 可选 付款终端类型:01:电脑 02:手机 03:平板设备 04:可穿戴设备 05:数字电视 06:条码支付受理终端 99:其他
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  

分账账户串(div_detail )内容:

参数中文名称 参数名称 数据格式 是否必须 说明
分账客户号 divCustId 变长16位String 必须 div_detail参数下的二级参数 分账客户号
分账账户号 divAcctId 变长9位String 必须 div_detail参数下的二级参数 分账账户号
分账金额 divAmt 变长14位String 必须 div_detail参数下的二级参数 分账金额,保留两位小数
是否冻结标志 divFreezeFg 定长2位String 必须 div_detail参数下的二级参数 冻结标志 01:冻结; 00:不冻结

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为204
应答返回码 resp_code 定长6位String 必须 204000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 付款客户号
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
交易金额 trans_amt 变长14位的String 必须 金额格式保留两位小数
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户网银支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位String 可选 前台异步通知商户网银支付结果,前台页面返回
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
分账账户串 div_detail String 必须  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
交易类型 pay_type 定长2位String 可选 00:个人网银,01:企业网银
付款方银行编号 pyer_bank_no 定长String 可选 交易异步成功后才会返回
付款方银行账号 pyer_acct_id 定长String 可选 交易异步成功后才会返回
付款方银行账户名 pyer_acct_nm 定长String 可选 交易异步成功后才会返回

返回码

返回码 返回描述
204000 交易成功
204002 请求已受理
204003 交易失败
204098 系统超时
204099 系统异常
204100 请求参数非法
204101 商户无此接口权限
204102 验证签名失败
204103 商户状态异常
204104 用户状态异常
204105 账户状态异常
204107 消息类型与签名内容不一致
204108 商户客户号与签名内容不一致
204109 版本号与签名内容不一致
204110 商户号不存在
204111 用户客户号不存在
204201 页面数据被篡改
204202 交易订单号重复
204215 请补录身份信息
204300 不支持此支付银行
204303 商户支付基础信息未配置
204314 支付手续费账户状态不正常
204721 分账串内容不能超过五个
204722 分账串部分字段为空
204723 分账串金额格式错误
204724 分账串累计金额不等于订单金额
204725 分账信息用户状态异常
204726 分账信息账户状态异常
204727 分账信息异常
204728 分账串账户信息格式错误
204729 分账串账户异常
204733 分账支付明细表处理失败
204734 该商户客户号网银支付网关号未配置
204737 支付明细表处理失败
204803 支付交易受限,限额限次或其他
204804 商户超限额或限次
204805 商户未开通该功能权限
204806 商户交易限制
204324 网银支付用户不能为商户本身

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "204",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000005942",
       "order_id": "20000008404",
       "order_date": "20170830",
       "gate_id": "09",
       "trans_amt": "21.03",
       "ret_url": "",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "et",
       "extension": "..n",
       "div_detail": "[{\"divCustId\":\"6666000000002619\",\"divAcctId\":\"2744\",\"divAmt\":\"11.03\",\"divFreezeFg\":\"00\"},{\"divCustId\":\"6666000000002962\",\"divAcctId\":\"3133\",\"divAmt\":\"10.00\",\"divFreezeFg\":\"00\"}]"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "204";
 String merCustId = "6666000000026086";
 String version = "10";
 httpServletResponse.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
 PrintWriter out = httpServletResponse.getWriter();
 out.println();
 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
 out.println("<HTML>");
 out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
 out.println(" <BODY style=\"display: none\">");
 out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
 out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
 out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
 out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
 out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
 out.println("</from>");
 out.println("<script>window.document.submitForm.submit();</script>");
 out.println(" </BODY>");
 out.println("</HTML>");
 out.flush();
 out.close();
成功响应:
200
      {
        "cmd_id": "204",
        "resp_code": "204000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "204",
     "resp_code": "204099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

页面展示

汇付银行选择页面

_images/online_1.png

注:如果请求参数指定了网关号,则不会跳转这个页面

847 网银充值接口

功能说明

该接口实现网银充值。(注:网银充值只支持企业网银)

用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为847
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 付款客户号 交易类型为免注册网银支付时,非必传
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
充值类型 recharge_type 定长8位String 必须 02020001: 企业网银
交易类型 trans_type 定长8位String 必须 02020100:充值
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
开户银行代号 bank_id 变长8位String 必传  
借贷标记 dc_flag 定长1位String 必传 D–借记 C–贷记
商户前台应答地址 ret_url 变长128位String 必须 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上 注意: 1) URL中请不要包含特殊字符 2) 必须是外网地址
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL中请不要包含特殊字符 2) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见4.2.13.二级商户号录入接口
交易场景 trans_scene 定长3位 可选 交易类型为免注册网银支付时,必传 001:投资理财 002:实物买卖/租赁 003:虚拟物品购买/购买服务 004:缴费 005:还款 006:账户充值
交易场景小类 trans_scene_sub 定长6位 可选 交易类型为免注册网银支付时,必传 001001:定期 001002:活期 002001:数码及家用电器 002002:家具建材 002003:生活用品(含:服饰、美容、箱包、玩具、图书/音像、食品等) 002004:珠宝/古玩/贵金属/邮币卡 002005:医药 003001:游戏点卡 003002:电话费 003003:储值卡 003004:服务(含:旅游、美容、按摩、入场消费的美食团购等) 004001:公共事业 004002:手机话费 004003:教育 004004:房屋租赁/物业费 005001:到期还款 005002:提前还款 005003:预期还款 005004:活期赎回 006001:其他
二级商户号 secondary_merid 变长12位 String 可选  
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为(网银支付851,、网银充值847
应答返回码 resp_code 定长6位String 必须 847000–调用成功,其他见:返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述,中文为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 付款客户号,交易类型为免注册网银支付时,非必传
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
业务类型 trans_type 定长8位String 可选  
充值类型 recharge_type 定长8位String 可选 02020000: 个人网银 02020001: 企业网银
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
开户银行代号 bank_id 变长8位String 可选 个人/企业网银充值必传 快捷/代扣充值非必传,可为空
借贷标记 dc_flag 定长1位String 可选 个人/企业网银充值必传 快捷/代扣充值非必传,可为空 D–借记 C–贷记
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
商户前台应答地址 ret_url 变长128位String 可选 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文。
商户后台应答地址 bg_ret_url 变长128位String 必须 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数

返回码

返回码 返回描述
847000 交易成功
847002 请求已受理
847003 交易失败
847099 系统异常
847100 请求参数非法
847101 商户无此接口权限
847102 验证签名失败
847103 商户状态异常
847104 用户状态异常
847107 消息类型与签名内容不一致
847108 商户客户号与签名内容不一致
847109 版本号与签名内容不一致
847110 商户号不存在
847202 交易订单号重复
847204 商户配置异常
847301 该充值银行网关不存在
847303 商户支付基础信息未配置
847305 入账客户信息不正确
847306 入账分账串信息不正确
847314 支付手续费账户状态不正常
847321 支付手续费未配置
847322 充值失败
847329 理财账户不允许进行支付,分账和作为手续费!
847733 分账支付明细处理失败
847737 支付明细处理失败
847748 二级商户号不存在
847749 二级商户号状态异常
847315 手续费金额不得大于等于交易金额

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "847",
            "mer_cust_id": "6666000000026086",
            "user_cust_id": "6666000000030895",
            "order_date": "20180816",
            "order_id": "2018081615344454",
            "open_id": "3",
            "app_id": "01050000",
            "good_tag": "D",
            "raw_flag": "6232511231322345",
            "trans_amt": "93",
            "in_cust_id": "",
            "divCustId": "",
            "divFreezeFg": "",
            "divAcctId": "",
            "in_acct_id": "",
            "divAmt": "",
            "biz_trans_id": "",
            "goods_desc": "",
            "ret_url": "",
            "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
            "mer_priv": "test_merpriv",
            "extension": "test_extension"
    }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "847";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密

成功响应:

200
      {
        "cmd_id": "847",
        "resp_code": "847000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }

失败响应:

200
   {
     "cmd_id": "847",
     "resp_code": "847099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }