交易类接口

快捷支付短信发送接口 112

功能说明

本接口用于发送快捷支付的短信,配合快捷支付接口一起使用。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为112
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
绑定银行卡ID bind_card_id 变长20位String 必须 付款人快捷支付时的快捷绑卡的ID (快捷支付时的返回参数)
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户短信发送结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的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 必须 每一种消息类型代表一种交易,此处为一阶段短信发送112
应答返回码 resp_code 定长6位String 必须 201000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 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位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
112000 交易成功
112002 请求已受理
112003 交易失败
112098 系统超时
112099 系统异常
112100 请求参数非法
112101 商户无此接口权限
112102 验证签名失败
112103 商户状态异常
112104 用户状态异常
112107 消息类型与签名内容不一致
112108 商户客户号与签名内容不一致
112109 版本号与签名内容不一致
112110 商户号不存在
112302 不支持此支付类型
112307 该用户未绑定快捷卡
112720 快捷支付只服务于个人或个体用户
112721 分账串内容不能超过五个
112722 分账串部分字段为空
112723 分账串金额格式错误
112724 分账串累计金额不等于订单金额
112725 分账信息用户状态异常
112726 分账信息账户状态异常
112727 分账信息异常
112728 分账串账户信息格式错误
112729 分账串账户异常
112739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "112",
            "mer_cust_id": "6666000000026086",
            "user_cust_id": "6666000000026303",
            "order_id": "2011887095",
            "order_date": "20180327",
            "trans_amt": "6.95",
            "bind_card_id": "1000000085",
            "div_detail": "[{'divCustId':'6666000000026185','divAcctId':'79704','divAmt':'6.92','divFreezeFg':'01'},{'divCustId':'6666000000026086','divAcctId':'79506','divAmt':'0.03','divFreezeFg':'00'}]",
            "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
            "ret_url": "",
            "mer_priv": "test",
            "extension": "test",
            "payer_term_type": "01",
            "payee_term_no": "payee_term_no",
            "payer_term_no": "test_payer_term_no",
            "payee_term_type": "02",
            "goods_short_name": "goods_short_name"
    }";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "112";
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": "112",
        "resp_code": "112000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "112",
     "resp_code": "112099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

快捷支付接口 201

功能说明

快捷支付是从用户事先绑定好的银行卡里,扣取订单金额到指定的账户。支付之前请先调用快捷短信发送接口,汇付会向用户手机发送支付验证码,然后调用此接口时会校验验证码。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 固定为10
消息类型 cmd_id 定长3位String 必须 固定为201
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd” 注:请和快捷短信发送接口的订单日期一致
订单号 order_id 变长20位String 必须 由商户的系统生成,订单号和订单日期保证唯一 注:请和快捷短信发送接口的订单号一致
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
绑定银行卡ID bind_card_id 变长20位String 必须 付款人快捷支付时的快捷绑卡的ID (快捷支付时的返回参数)
短信验证码 sms_code 定长6位String 必须 联调测试时默认传111111,生产环境请传真实的验证码
分账账户串 div_detail 变长String 必须 入账客户传,json格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把同步交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 交易结束后,通过此地址异步通知商户支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的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 必须 固定为201
应答返回码 resp_code 定长6位String 必须 201000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 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_amt 变长14位String 必须 金额格式是###.00
绑定银行卡ID bind_card_id 变长20位String 必须 付款人快捷支付时的快捷绑卡的ID (快捷支付时的返回参数)
短信验证码 sms_code 定长6位String 可选  
分账账户串 div_detail 变长String 可选  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
201000 交易成功
201002 请求已受理
201003 交易失败
201099 系统异常
201100 请求参数非法
201101 商户无此接口权限
201102 验证签名失败
201103 商户状态异常
201104 用户状态异常
201105 账户状态异常
201107 消息类型与签名内容不一致
201108 商户客户号与签名内容不一致
201109 版本号与签名内容不一致
201110 商户号不存在
201202 交易订单号重复
201204 商户配置异常
201210 短信验证码发送过于频繁
201300 不支持此充值银行
201307 该用户未绑定快捷卡
201314 充值手续费账户状态不正常
201720 快捷支付只服务于个人或个体用户
201721 分账串内容不能超过五个
201722 分账串部分字段为空
201723 分账串金额格式错误
201724 分账串累计金额不等于订单金额
201725 分账信息用户状态异常
201726 分账信息账户状态异常
201727 分账信息异常
201728 分账串账户信息格式错误
201729 分账串账户异常
201730 快捷支付卡有变更,请重新获取验证码
201731 快捷支付分账转账失败
201732 快捷支付分账转账表处理失败
201733 分账支付明细表处理失败
201734 该商户客户号网银支付网关号未配置
201735 商户无目标支付网关权限
201736 快捷支付交易金额不一致
201737 支付明细表处理失败
201738 快捷支付分账串内容不一致
201739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "201",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026303",
       "order_id": "2011887094",
       "order_date": "20180327",
       "trans_amt": "6.95",
       "bind_card_id": "1000000085",
       "sms_code": "111111",
       "div_detail": "[{'divCustId':'6666000000026185','divAcctId':'79704','divAmt':'6.92','divFreezeFg':'01'},{'divCustId':'6666000000026086','divAcctId':'79506','divAmt':'0.03','divFreezeFg':'00'}]",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "ret_url": "",
       "mer_priv": "test",
       "extension": "test"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "201";
 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": "201",
        "resp_code": "201000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "201",
     "resp_code": "201099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

页面展示

取现接口 202

功能说明

用于个人用户、企业用户和个体户用户从汇付账户取现到事先绑定的取现银行卡中。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处固定为202
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
交易金额 trans_amt 变长14位的String 必须 泛指交易金额,金额格式必须是###.00,比如2.00,2.01
取现绑定银行卡ID cash_bind_card_id 变长20位的String 必须 取现绑卡返回的ID
手续费收取对象 fee_obj 定长8位的String 可选 用户商户指定取现手续费的收取对象,优先级别高于商户配置的收取对象 02050200:向商户收取 02050201:向用户收取 空白默认为向商户收取
手续费收取子账户 fee_acct_id 变长9位的String 可选 向商户收取必填 向用户收取可忽略
取现方式 cash_type 定长8位的String 必须 02030000:T+0取现;02030010:T+1取现
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户取现结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为202
返回码 resp_code 变长String 必须 202000–调用成功,其他见返回码
结果描述 resp_desc 变长String 必须 返回描述
商户客户号 mer_cust_id 变长16位的String 必须  
用户客户号 user_cust_id 变长16位的String 必须  
订单日期 order_date 定长8位 必须  
订单号 order_id 变长20位的String 必须  
平台流水id platform_seq_id 定长18位String 必须 交易流水号
交易金额 trans_amt 变长14位的String 必须  
实际到账金额 real_trans_amt 变长14位的String 可选 取现成功实际到账金额,各种原因导致取现失败则不传
取现绑定银行卡ID cash_bind_card_id 变长20位的String 必须  
开户银行代号 bank_id 变长8位的String 可选 具体见附件:开户银行代号
手续费金额 fee_amt 变长14位的String 必须  
手续费扣款客户号 fee_cust_id 变长16位的String 必须  
手续费扣款子账户号 fee_acct_id 变长9位的String 必须  
交易状态 trans_stat 变长8位的String 必须  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户取现结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回码

返回码 返回描述
202000 交易成功
202002 请求已受理
202003 交易失败
202099 系统异常
202100 请求参数非法
202101 商户无此接口权限
202102 验证签名失败
202103 商户状态异常
202104 用户状态异常
202105 账户状态异常
202107 消息类型与签名内容不一致
202108 商户客户号与签名内容不一致
202109 版本号与签名内容不一致
202110 商户号不存在
202113 过渡账户不能出账
202202 交易订单号重复
202204 商户配置异常
202300 银行卡信息不存在
202301 银行卡状态异常
202302 银行卡不是取现卡
202304 该商户不支持该取现方式
202305 取现金额小于等于取现费用
202310 取现用户不能为商户本身
202311 该商户暂时不允许T0取现

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "202",
       "mer_cust_id": "6666000000217291",
       "user_cust_id": "6666000000291215",
       "order_date": "20180322",
       "order_id": "20107063",
       "trans_amt": "0.01",
       "cash_bind_card_id": "5899770",
       "fee_obj": "02050200",
       "fee_acct_id": "219871",
       "cash_type": "02030010",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "test_mer_priv",
       "extension": "test_extension"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "202";
 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": "202",
        "resp_code": "202000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "202",
      "resp_code": "202099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

转账接口 203

功能说明

用于企业用户、个体户和商户的账户间转账,不能用于跨商户下的转账。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 默认为10,可扩展
消息类型 cmd_id 定长String 必须 固定203
商户客户号 mer_cust_id 定长16位String 必须 汇付生成,唯一
订单号 order_id 定长20位String 必须 商户系统生成,商户下唯一
订单日期 order_date 定长8 位String 必须 YYYYMMDD
出账客户号 out_cust_id 变长16位的String 必须 汇付生成,用户的唯一性标识
出账子账户号 out_acct_id 变长9位的String 必须  
入账客户号 in_cust_id 变长16位的String 必须 入账客户号,由汇付生成,用户的唯一性标识
入账子账户号 in_acct_id 变长9位的String 必须  
转账金额 transfer_amt 变长14位的String 必须 金额格式必须是###.00
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户转账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120 位的String 必须 为商户的自定义字段,该字段在交易完成后由本平台原样返回
入参扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 固定203
应答返回码 resp_code 定长6位的String 必须  
应答描述 resp_desc 变长String 必须  
商户客户号 mer_cust_id 定长16位String 必须 汇付生成,唯一
订单号 order_id 定长20位String 必须 商户系统生成,商户下唯一
订单日期 order_date 定长8 位String 必须 YYYYMMDD
出账客户号 out_cust_id 变长16位的String 必须  
出账子账户号 out_ acct _id 变长9位的String 必须  
入账客户号 in_cust_id 变长16位的String 必须  
入账子账户号 in_ acct _id 变长9位的String 必须  
转账金额 transfer_amt 变长14位的String 必须 金额格式必须是###.00
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户转账结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
返参扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
203000 交易成功
203099 系统异常
203100 请求参数非法
203101 商户无此接口权限
203102 验证签名失败
203103 商户状态异常
203104 用户状态异常
203107 消息类型与签名内容不一致
203108 商户客户号与签名内容不一致
203109 版本号与签名内容不一致
203110 商户号不存在
203202 交易订单号重复
203301 转出方用户信息不存在
203302 转入方用户信息不存在
203303 转出方用户状态异常
203304 转入方用户状态异常
203307 转出方帐户号不存在
203308 转入方账号不存在
203309 转出方帐户状态异常
203310 转入方帐户状态异常
203311 转账失败
203317 个人用户账户不能出账
203318 转出方帐户不能为过渡账户
203319 转入方帐户不能为过渡账户
203320 转出方和转入方不能相同
203803 支付交易受限,限额限次或其他
203804 商户超限额或限次
203805 商户未开通该功能权限
203806 商户交易限制

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "203",
       "mer_cust_id": "6666000000026086",
       "order_id": "20171913212022",
       "order_date": "20170824",
       "transfer_type": "02040004",
       "out_cust_id": "6666000000026303",
       "out_acct_id": "79913",
       "in_cust_id": "6666000000026086",
       "in_acct_id": "79506",
       "transfer_amt": "11.02",
       "bg_ret_url": "http://192.168.25.79:8081/zeus-callback/asyncHandle.json",
       "mer_priv": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "203";
 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": "203",
        "resp_code": "203000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "203",
     "resp_code": "203099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

网银支付( WEB 版)接口 204

功能说明

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

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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   必须 数据格式:[{“div_cust_id “:”6000060000009547”,”div_acct_id”:”MDT000001”,”div_amt”:”1.00”,div_freeze_fg:” 00000100”}]
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
商品名称 goods_desc 变长12位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 必须  

返回码

返回码 返回描述
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

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

退款接口 205

功能说明

用于个人用户、企业用户和个体户进行支付交易的退款

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为205
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 可选 由汇付生成,用户的唯一性标识 对原交易为网银支付,代扣支付,快捷支付,必须 对原交易为扫码支付,可选
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
退款金额 trans_amt 变长14位的String 必须 退款金额,金额格式必须是###.00,比如2.00,2.01
原交易平台流水id orginal_platform_seq_id 定长18位String 必须 原交易流水号
快捷支付页面版标识 quickpay_page_flag 定长1位String 可选 默认为否 否:0 是:1 原交易为快捷支付WEB版或快捷支付APP版时,设为是
分账账户串 div_detail 变长String 必须 出账账户串,json格式:[{“divCustId”:”60010001”,” divAcctId”:”000001”,”divAmt”:”1.00”}]
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户退款结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的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:不冻结

返回参数

返回码

返回码 返回描述
205000 交易成功
205002 请求已受理
205003 交易失败
205098 系统超时
205099 系统异常
205100 请求参数非法
205101 商户无此接口权限
205102 验证签名失败
205103 商户状态异常
205104 用户状态异常
205105 账户状态异常
205107 消息类型与签名内容不一致
205108 商户客户号与签名内容不一致
205109 版本号与签名内容不一致
205110 商户号不存在
205111 用户客户号不存在
205112 账号不存在
205113 过渡账户不能出账
205202 交易订单号重复
205300 原支付交易不存在
205301 该订单状态不可退款
205302 订单已退款
205303 用户客户号与支付交易不一致
205305 可退金额不足
205306 调用PA批量转账接口失败
205721 分账串内容不能超过五个
205722 分账串部分字段为空
205723 分账串金额格式错误
205724 分账串累计金额不等于订单金额
205727 分账信息异常
205728 分账串账户信息格式错误
205729 分账串账户异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "205",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000005942",
       "order_date": "20170830",
       "order_id": "2000501",
       "quickpay_page_flag": "1",
       "trans_amt": "0.03",
       "orginal_platform_seq_id": "201708300000004663",
       "div_detail": "[{\"divCustId\":\"6666000000002962\",\"divAcctId\":\"3133\",\"divAmt\":\"0.01\",\"divFreezeFg\":\"00\"},{\"divCustId\":\"6666000000002619\",\"divAcctId\":\"2744\",\"divAmt\":\"0.02\",\"divFreezeFg\":\"00\"}]",
       "bg_ret_url": "http://192.168.25.79:8081/zeus-callback/asyncHandle.json",
       "mer_priv": "1",
       "extension": "1"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "205";
 String merCustId = "6666000000002619";
 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": "205",
        "resp_code": "205000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000002619",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "205",
     "resp_code": "205099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000002619",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

代扣支付接口 207

功能说明

用于个人用户、企业用户和个体户进行代扣支付

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为207
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
绑定银行卡ID bind_card_id 变长20位String 必须 代扣绑卡返回的银行卡ID
代扣签约流水 sign_seq_id 变长18位String 必须  
入账客户号 in_cust_id 变长18位String 必须 入账客户号不能是客户本人
入账账户号 in_acct_id 变长9位的String 必须 业务类型为支付时必传,且入账客户号不能是客户本人
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代扣支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的String 可选 不能包含特殊字符:<>&’”|%#\^-
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
对手方交易IP user_ip_addr 变长20位的String 必须  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为207
应答返回码 resp_code 定长6位String 必须 201000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 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_amt 变长14位String 必须 金额格式是###.00
绑定银行卡ID bind_card_id 变长20位String 可选 快捷/代扣支付时,必传
代扣签约流水号 sign_seq_id 变长18位String 必须  
入账客户号 in_cust_id 定长16位String 可选 支付必传
入账账户号 inAcctId 变长9位String 必须  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代扣支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
207000 交易成功
207002 请求已受理
207003 交易失败
207098 系统超时
207099 系统异常
207100 请求参数非法
207101 商户无此接口权限
207102 验证签名失败
207103 商户状态异常
207104 用户状态异常
207107 消息类型与签名内容不一致
207108 商户客户号与签名内容不一致
207109 版本号与签名内容不一致
207110 商户号不存在
207202 交易订单号重复
207204 商户配置异常
207215 请补录身份信息
207303 商户支付基础信息未配置
207305 入账客户信息不正确
207309 该用户代扣协议不存在或状态异常
207311 只有个人用户和个体户能代扣支付
207314 支付手续费账户状态不正常
207319 该用户支付卡未绑定或状态异常
207320 该用户代扣协议绑卡与本次支付卡信息不一致
207321 支付手续费未配置
207803 支付交易受限,限额限次或其他
207804 商户超限额或限次
207805 商户未开通该功能权限
207806 商户交易限制

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "207",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000034048",
       "order_date": "20180529",
       "order_id": "2016090945",
       "trans_amt": "1.69",
       "bind_card_id": "1000000356",
       "sign_seq_id": "201805290000000407",
       "in_cust_id": "6666000000002619",
       "in_acct_id": "2744",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "test_mer",
       "extension": "test_extension"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "207";
 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": "207",
        "resp_code": "207000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "207",
     "resp_code": "207099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

订单解冻接口 212

功能说明

用于对支付交易的冻结金额进行解冻

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为212
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
原交易平台流水id orginal_platform_seq_id 定长18位String 必须 原支付交易流水号
解冻分账账户串 div_detail 变长String 必须 [{“div_cust_id”:”60010001”,”div_acct_id”:”000001”}]
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为212
返回码 resp_code 变长String 必须 212000–调用成功,其他见返回码
结果描述 resp_desc 变长String 必须 返回描述
商户客户号 mer_cust_id 变长16位的String 必须  
用户客户号 user_cust_id 变长16位的String 必须  
订单日期 order_date 定长8位String 必须  
订单号 order_id 变长20位的String 必须  
平台流水id platform_seq_id 定长18位String 必须 交易流水号
成功件数 success_cnt 变长2位的String 必须  
成功金额 success_amt 变长14位的String 必须  
失败件数 fail_cnt 变长2位的String 必须  
失败金额 fail_amt 变长14位的String 必须  
失败账户串 fail_div_detail 变长String 必须 [{“divCustId”:”60010001”,”divAcctId”:”000001”}]
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回码

返回码 返回描述
212000 交易成功
212098 系统超时
212099 系统异常
212100 请求参数非法
212101 商户无此接口权限
212102 验证签名失败
212103 商户状态异常
212104 用户状态异常
212105 账户状态异常
212107 消息类型与签名内容不一致
212108 商户客户号与签名内容不一致
212109 版本号与签名内容不一致
212110 商户号不存在
212111 用户客户号不存在
212112 账号不存在
212202 交易订单号重复
212301 原支付交易不存在
212302 该订单状态不可解冻
212303 分账账户串数据异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "212",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000005942",
       "order_date": "20170830",
       "order_id": "324002007",
       "orginal_platform_seq_id": "201708300000004667",
       "div_detail": "[{'divCustId':'6666000000002962','divAcctId':'3133','divAmt':'0.20','divFreezeFg':'01'},{'divCustId':'6666000000002619','divAcctId':'2744','divAmt':'1.00','divFreezeFg':'01'}]",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "mer001",
       "extension": "extension"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "212";
 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": "212",
        "resp_code": "212000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "212",
     "resp_code": "212099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

快捷支付( WEB 版)接口 206

功能说明

跳转到汇付 WEB 页面,进行开户(如未开户),绑卡和快捷支付,或用已绑银行卡直接进行快捷支付

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为206
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 可选 (入账客户号、入账账户号) 和 分账串必填一项,且只能填一项; 分账串定义可参照下表; 注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填
设备号 device_info 变长32位String 可选  
IP地址 ip_addr 变长20位String 可选  
经纬度 location_val 变长20位String 可选  
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的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 变长String 必须 固定为206
返回码 resp_code 变长String 必须 206000–调用成功,其他见返回码
结果描述 resp_desc 变长String 必须 返回描述
商户客户号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 变长16位的String 必须 由汇付生成,用户的唯一性标识
子账户号 acct_id 变长16位String 必须 由汇付生成,用户的默认子账户号
订单日期 order_date 定长8位String 必须  
订单号 order_id 变长20位的String 必须  
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
银行卡号 card_no 变长32位String 必须 返回银行卡号掩码
绑定银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡
分账账户串 div_detail 变长String 可选  
分账客户号 divCustId 变长16位String 必须 div_detail参数下的二级参数 分账客户号
分账账户号 divAcctId 变长9位String 必须 div_detail参数下的二级参数 分账账户号
分账金额 divAmt 变长14位String 必须 div_detail参数下的二级参数 分账金额,保留两位小数
是否冻结标志 divFreezeFg 定长2位String 必须 div_detail参数下的二级参数 冻结标志 否:00 是:01
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回码

返回码 返回描述
206000 交易成功
206002 请求已受理
206099 系统异常
206201 页面数据被篡改
206202 交易订单号重复
206203 账户可用余额不足
206204 商户配置异常
206205 短信验证码验证失败
206206 短信验证码发送手机号与验证手机号不一致
206208 短信验证码已失效请重新获取
206211 短信验证码发送失败
206214 查询出现异常
206215 请补录身份信息
206216 短信验证码发送过于频繁或单日发送次数超限
206301 只有个人用户和个体户能快捷支付
206302 商户支付基础信息未配置
206303 支付手续费账户状态不正常
206304 支付手续费未配置
206306 身份证实名验证错误
206307 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡
206308 个人用户信息校验失败
206309 开户手续费收取失败
206311 无任何银行信息
206314 验证码发送失败
206315 验证码发送成功
206317 用户有快捷卡正在绑定中,请勿重复绑卡
206319 验证码发送中
206320 银行卡解绑失败
206321 操作超时,请重试
206322 省份地区信息非法
206324 银行卡信息验证失败
206325 银行卡号与银行、卡类型信息不匹配
206721 分账串内容不能超过五个
206722 分账串部分字段为空
206723 分账串金额格式错误
206724 分账串累计金额不等于订单金额
206725 分账信息用户状态异常
206726 分账信息账户状态异常
206727 分账信息异常
206728 分账串账户信息格式错误
206729 分账串账户异常
206732 分账串客户号信息格式错误
206739 快捷支付短信发送异常
206741 分账串内容重复
206742 快捷支付成功,分账失败
206743 请获取验证码

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "206",
       "mer_cust_id": "6666000000217291",
       "user_cust_id": "6666000000291215",
       "order_id": "2010001407",
       "order_date": "20180201",
       "trans_amt": "0.02",
       "bg_ret_url": "http://mertest.chinapnr.com/asharp",
       "mer_priv": "test_mer_priv",
       "ret_url": "",
       "extension": "",
       "div_detail": "[{'divCustId':'6666000000307920','divAcctId':'310545','divAmt':'0.01','divFreezeFg':'01'},{'divCustId':'6666000000348234','divAcctId':'350858','divAmt':'0.01','divFreezeFg':'00'}]"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "206";
 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": "206",
        "resp_code": "206000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "206",
     "resp_code": "206099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

页面展示

未开户或者未绑卡时页面展示

_images/206_1.png

已绑卡时页面展示

_images/206_2.png

成功页面

_images/206_success.png

失败页面

_images/206_fail.png

快捷支付( APP 版)接口 208

功能说明

跳转到汇付 APP 页面,进行开户(如未开户),绑卡和快捷支付,或用已绑银行卡直接进行快捷支付

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为208
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 可选 (入账客户号、入账账户号) 和 分账串必填一项,且只能填一项; 分账串定义可参照下表; 注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填
设备号 device_info 变长32位String 可选  
IP地址 ip_addr 变长20位String 可选  
经纬度 location_val 变长20位String 可选  
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的String 可选 不能包含特殊字符:<>&’”|%#\^-
设备信息 dev_info_json 变长2000位的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 变长String 必须 固定为208
返回码 resp_code 变长String 必须 208000–调用成功,其他见返回码
结果描述 resp_desc 变长String 必须 返回描述
商户客户号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 变长16位的String 必须 由汇付生成,用户的唯一性标识
子账户号 acct_id 变长16位String 必须 由汇付生成,用户的默认子账户号
订单日期 order_date 定长8位String 必须  
订单号 order_id 变长20位的String 必须  
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
银行卡号 card_no 变长32位String 必须 返回银行卡号掩码
绑定银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 可选  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解冻结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

返回码

返回码 返回描述
208000 支付成功
208001 支付请求受理中
208099 系统异常
208201 页面数据被篡改
208202 交易订单号重复
208203 账户可用余额不足
208204 商户配置异常
208205 短信验证码验证失败
208206 短信验证码发送手机号与验证手机号不一致
208208 短信验证码已失效请重新获取
208211 短信验证码发送失败
208214 查询出现异常
208215 请补录身份信息
208216 短信验证码发送过于频繁或单日发送次数超限
208301 只有个人用户和个体户能快捷支付
208302 商户支付基础信息未配置
208303 支付手续费账户状态不正常
208304 支付手续费未配置
208306 身份证实名验证错误
208307 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡
208308 个人用户信息校验失败
208309 开户手续费收取失败
208310 该笔交易已结束
208311 无任何银行信息
208314 验证码发送失败
208315 验证码发送成功
208317 用户有快捷卡正在绑定中,请勿重复绑卡
208319 验证码发送中
208320 银行卡解绑失败
208321 操作超时,请重试
208322 省份地区信息非法
208324 银行卡信息验证失败
208325 银行卡号与银行、卡类型信息不匹配
208721 分账串内容不能超过五个
208722 分账串部分字段为空
208723 分账串金额格式错误
208724 分账串累计金额不等于订单金额
208725 分账信息用户状态异常
208726 分账信息账户状态异常
208727 分账信息异常
208728 分账串账户信息格式错误
208729 分账串账户异常
208732 分账串客户号信息格式错误
208739 快捷支付短信发送异常
208741 分账串内容重复
208742 快捷支付成功,分账失败
208743 请获取验证码

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "208",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026190",
       "order_id": "20620000087",
       "order_date": "20170828",
       "trans_amt": "6.92",
       "div_detail": "[{'divCustId':'6666000000026185','divAcctId':'79704','divAmt':'6.92','divFreezeFg':'00'}]",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "ret_url": "",
       "mer_priv": "test",
       "extension": "test"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "208";
 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": "208",
        "resp_code": "208000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "208",
     "resp_code": "208099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

页面展示

未开户或者未绑卡时页面展示

_images/208_1.png

已绑卡时页面展示

_images/208_2.png

成功失败页面展示

_images/208_result.png

扫码支付接口 209

功能说明

调用本接口后,跳转二维码页面,用户使用支付宝或者微信扫码支付。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 209
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
商品描述 goods_desc 变长127位String 必须  
二维码支付类型 pay_type 定长2位String 必须 04 : 微信 05 : 支付宝
请求类型 request_type 定长2位String 必须 00 : PC端(汇付页面显示二维码) 01 : 移动端(汇付页面显示二维码) 02:返回商户ret_url,由商户自己根据qrcode_url生成二维码 如果需要直接返回二维码地址,请对接APP支付接口(218)
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
操作员 oper_user_Id 变长32位String 可选  
商品类型 goods_type 变长32位String 可选  
订单超时时间 order_expire_time 变长12位String 可选 单位秒
设备号 device_info 变长32位String 可选  
商户前台应答地址 ret_url 变长128位的String 可选 请求类型为后端时,必须输入
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
二级商户号 secondary_mer_id 定长10位的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 必须 209
应答返回码 resp_code 定长6位String 必须 209000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
银行返回码 bg_bank_code 变长32位String 可选  
银行返回描述 bg_bank_message 变长200位String 可选  
商户客户号 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位系统流水号
商品描述 goods_desc 变长1024位String 必须  
二维码支付类型 pay_type 定长2位String 必须 04 : 微信 05 : 支付宝
请求类型 request_type 定长2位String 必须 00 : PC端(汇付页面显示二维码) 01 : 移动端(汇付页面显示二维码) 02:返回商户ret_url,由商户自己根据qrcode_url生成二维码
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
二维码链接 qrcode_url 变长128位String 可选  
操作员 oper_user_id 变长32位String 可选  
商品类型 goods_type 变长32位String 可选  
订单超时时间 order_expire_time 固定14位String 可选 格式为YYYYMMDDHHmmss
设备号 device_info 变长32位String 可选  
外部订单流水号 out_trans_id 变长64位String 可选 外部订单流水号,指支付宝、微信、银联流水号
商户前台应答地址 ret_url 变长128位的String 可选 请求类型为后端时,必须输入
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
209000 交易成功
209002 请求已受理
209003 交易失败
209004 交易关闭
209098 系统超时
209099 系统异常
209100 请求参数非法
209101 商户无此接口权限
209102 验证签名失败
209103 商户状态异常
209104 用户状态异常
209107 消息类型与签名内容不一致
209108 商户客户号与签名内容不一致
209109 版本号与签名内容不一致
209110 商户号不存在
209104 用户状态异常
209105 账户状态异常
209727 分账信息异常
209721 分账串内容不能超过五个
209722 分账串部分字段为空
209723 分账串金额格式错误
209728 分账串账户信息格式错误
209729 分账串账户异常
209726 分账信息账户状态异常
209725 分账信息用户状态异常
209741 分账串内容重复
209732 分账串客户号信息格式错误
209724 分账串累计金额不等于订单金额
209202 交易订单号重复
209744 商户不支持扫码支付
209204 商户配置异常
209303 商户支付基础信息未配置
209321 支付手续费未配置
209323 支付手续费只能向商户收取
209314 支付手续费账户状态不正常
209215 请补录身份信息
209804 商户超限额或限次
209805 商户未开通该功能权限
209806 商户交易限制
209341 订单已关闭
209342 已支付成功
209343 已支付失败
209344 订单信息不匹配
209345 未获取二维码链接

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "209",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026190",
       "order_id": "209017108",
       "order_date": "20170829",
       "trans_amt": "0.03",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "*1erwer.868@",
       "ret_url": "",
       "extension": "u",
       "div_detail": "[{'divCustId':'6666000000026185','divAcctId':'79704','divAmt':'0.02','divFreezeFg':'01'},{'divCustId':'6666000000026086','divAcctId':'79506','divAmt':'0.01','divFreezeFg':'00'}]",
       "device_info": "测试测qq",
       "goods_desc": "分账串,有冻结",
       "goods_type": "试测试试qq",

       "oper_user_id": "试试qq",
       "order_expire_time": "9900",
       "pay_type": "04",
       "request_type": "01"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "209";
 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": "209",
        "resp_code": "209000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "209",
      "resp_code": "209099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

页面展示

代发接口 213

功能说明

商户调用该接口可以进行代发交易

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为213
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
出账客户号 pay_cust_id 定长16位的String 必须  
出账账户号 pay_acct_id 变长9位 必须  
订单号 order_id 变长20位的String 必须 由商户的系统生成,订单号和订单日期保证唯一
交易金额 trans_amt 变长14位String 必须 (金额格式必须是###.00)比如2.00,2.01
收款账户类型 acct_type 定长1位String 必须 银行对公账户(1),银行对私账户(2)
银行账号 bank_card_no 变长30位String 必须 代发到的银行账户
银行编号 bank_id 变长8位 Y(acct_type=1)/N 对公必填,对私选填
银行名称 bank_name 变长50位String Y(acct_type=1)/N 对公必填,对私选填
开户行省份 bank_prov 定长4位String 可选 填写编号(商户有省份值请填入) ; 与地区值同时传或都不传
开户行地区 bank_area 定长4位String 可选 填写编号(商户有地区值请填入); 与省份值同时传或都不传
支行名称 bank_subbranch 变长50位String 可选  
联行号 unite_bank_code 变长20位String 可选  
代发用途 purpose 变长20位String 必须  
收款人姓名 cust_name 变长20位String 必须 必须与银行户名相同
收款人手机号 mobile 变长11位String 可选  
证件类型 cert_type 变长2位String Y(acct_type=2)/N 00身份证 01护照 02军官证 03士兵证 04回乡证 06警官证 08台胞证 05户口本 13其他 (收款账户为对私必传,对公为可选)
证件号 cert_id 变长20位String Y(acct_type=2)/N (收款账户为对私必传,对公为可选)
代发方式 trans_mode 变长2位String 可选 代发的到账时间。 00 : T0 ; 01 : T1 (不传默认走T0),
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为213
应答返回码 resp_code 定长6位String 必须 213001—处理中 , 其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
手续费 fee_amt 变长14位String 必须  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
213000 交易成功
213001 请求处理中
213003 交易失败
213098 系统超时
213099 系统异常
213100 请求参数非法
213101 商户无此接口权限
213102 验证签名失败
213103 商户状态异常
213107 消息类型与签名内容不一致
213108 商户客户号与签名内容不一致
213109 版本号与签名内容不一致
213110 商户号不存在
213112 出账账号不存在
213113 过渡账户不能出账
213303 银行卡信息与银行信息不匹配
213304 银行卡类型错误
213320 交易订单号重复
213326 商户客户号与出账客户号不一致
213331 代发手续费账户未配置
213321 代发手续费未配置
213328 卡号或证件号或电话号码解密失败
213322 代发失败
213329 交易收款人已列入反洗钱黑名单,交易已被禁止
213333 您尚未开通T0/T1代发功能,请联系汇付业务人员
213334 账户余额或手续费余额不足,请先进行充值

代码示例

java

String valueObj = "{
       "cmd_id": "213",
       "version": "10",
       "mer_cust_id": "6666000000026086",
       "order_date": "20171228",
       "order_id": "200111127",
       "pay_cust_id": "6666000000026086",
       "pay_acct_id": "79506",
       "trans_amt": "1.36",
       "acct_type": "1",
       "bank_card_no": "62533820171228",
       "bank_name": "",
       "bank_prov": "",
       "bank_area": "",
       "bank_subbranch": "",
       "bank_id": "",
       "purpose": "啊啊啊啊啊",
       "cust_name": "飞飞飞",
       "mobile": "16666666666",
       "cert_type": "00",
       "cert_id": "220523198005162957",
       "trans_mode": "01",
       "ret_url": "",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "test_mer_priv",
       "extension": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "213";
 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": "213",
        "resp_code": "213000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }

失败响应:

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

反扫消费接口 215

功能说明

用户条码支付,商户通过扫码枪等设备扫描用户付款码的收款交易。

调用方式:系统调用

反扫业务流程图及说明

_images/215_flow.png

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 215
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
扫码支付类型 pay_type 定长2位String 可选 07 : 微信 08 : 支付宝 09 : 银联
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户。详见下表 分账账户串 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
商品描述 goods_desc 变长127位String 必须  
商品类型 goods_type 定长4位String 可选 MCC,银联支付时必须
扫码信息 auth_code 变成128位String 必须 扫码设备读出的条形码或者二维码信息 支付宝:28开头,18位长度 微信:10、11、12、13、14、15开头,18位长度 银联:62开头,19位长度
操作员 oper_user_Id 变长32位String 可选  
扫码设备号 device_info 变长32位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
二级商户号 secondary_mer_id 定长10位的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 必须 215
应答返回码 resp_code 定长6位String 必须 215000—交易成功 215002—请求受理中 其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
银行返回码 bg_bank_code 变长32位String 可选  
银行返回描述 bg_bank_message 变长200位String 可选  
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
扫码支付类型 pay_type 定长2位String 可选 07 : 微信 08 : 支付宝 09 : 银联
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户。详见下表 分账账户串 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
商品描述 goods_desc 变长127位String 必须  
商品类型 goods_type 定长4位String 可选 MCC,银联支付时必须
扫码信息 auth_code 变成128位String 必须 扫码设备读出的条形码或者二维码信息
操作员 oper_user_id 变长32位String 可选  
设备号 device_info 变长32位String 可选  
外部订单流水号 out_trans_id 变长64位String 可选 外部订单流水号,指支付宝、微信、银联流水号
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
215000 交易成功
215002 请求已受理
215003 交易失败
215004 交易关闭
215099 系统异常
215100 请求参数非法
215101 商户无此接口权限
215102 验证签名失败
215103 商户状态异常
215104 用户状态异常
215107 消息类型与签名内容不一致
215108 商户客户号与签名内容不一致
215109 版本号与签名内容不一致
215110 商户号不存在
215104 用户状态异常
215105 账户状态异常
215111 用户客户号不存在
215104 用户状态异常
215112 账号不存在
215727 分账信息异常
215721 分账串内容不能超过五个
215722 分账串部分字段为空
215723 分账串金额格式错误
215728 分账串账户信息格式错误
215729 分账串账户异常
215726 分账信息账户状态异常
215725 分账信息用户状态异常
215741 分账串内容重复
215732 分账串客户号信息格式错误
215724 分账串累计金额不等于订单金额
215326 商户不支持反扫支付
215329 商品类型不能为空
215202 交易订单号重复
215204 商户配置异常
215303 商户支付基础信息未配置
215321 支付手续费未配置
215323 支付手续费只能向商户收取
215314 支付手续费账户状态不正常
215215 请补录身份信息
215804 商户超限额或限次
215805 商户未开通该功能权限
215806 商户交易限制
215745 反扫支付成功,分账失败
215336 微信扫码信息不正确
215337 支付宝扫码信息不正确
215338 银联扫码信息不正确

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "215",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000005942",
       "order_id": "28157171990214",
       "order_date": "20170824",
       "pay_type": "07",
       "trans_amt": "0.02",
       "div_detail": "[{'divCustId':'6666000000002962','divAcctId':'3133','divAmt':'0.01','divFreezeFg':'01'},{'divCustId':'6666000000002619','divAcctId':'2744','divAmt':'0.01','divFreezeFg':'00'}]",
       "goods_desc": "t",
       "auth_code": "130131142378809767",
       "goods_type": "5812",
       "oper_user_id": "test_oper_user_id",
       "device_info": "test_device_info",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "tess"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "215";
 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": "215",
        "resp_code": "215000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "215",
      "resp_code": "215099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

反扫撤销接口 223

功能说明

用于撤销反扫交易

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为223
商户客户号 mer_cust_id 定长16位String 必须 商户的唯一标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
原支付流水号 orginal_platform_seq_id 变长18位String 必须 原交易返回的平台流水号
备注 remark 变长255位的String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为223
返回码 resp_code 定长3位String 必须 223000:成功 223002: 请求已受理 223099:系统异常
返回内容 resp_desc 变长String 可选  
商户客户号 mer_cust_id 定长16位String 必须 商户的唯一标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
平台流水号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
备注 remark 变长255位的String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
223000 交易成功
223002 请求已受理
223003 交易失败
223098 系统超时
223099 系统异常
223100 请求参数非法
223101 商户无此接口权限
223102 验证签名失败
223103 商户状态异常
223104 用户状态异常
223107 消息类型与签名内容不一致
223108 商户客户号与签名内容不一致
223109 版本号与签名内容不一致
223202 交易订单号重复
223204 商户配置异常
223300 原支付交易不存在
223301 该订单状态不可退款
223302 订单已退款
223306 调用PA批量转账接口失败
223308 非反扫交易不支持撤销

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "223",
       "mer_cust_id": "6666000000217291",
       "order_date": "20171212",
       "order_id": "fansao012",
       "orginal_platform_seq_id": "201712120001065124",
       "remark": "反扫撤销",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "商户私有域测试",
       "extension": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "223";
 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": "223",
        "resp_code": "223000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "223",
      "resp_code": "223099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

快捷支付统合版短信发送 216

功能说明

本接口需要配合快捷支付统合版支付接口,用于发送快捷短信。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为216
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 可选 入账客户号和入账账户号为空的时候必填; 分账串格式定义可参照下表; 注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_ mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
银行卡开户省份 card_prov 定长4位String 可输 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 可输 本次快捷绑卡待绑定的银行卡开户地区
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
付款方交易终端类型 payer_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
付款方交易终端编码 payer_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
收款方交易终端类型 payee_term_type 定长2位String 可选 01-电脑 02-手机 03-平板设备 04-可穿戴设备 05-数字电视 06-条码支付受理终端 99-其他
收款方交易终端编码 payee_term_no 变长32位的String 可选 请参考《网络支付报文结构及要素技术规范(V1.0)》(银办发[2016] 222号)
商品简称 goods_short_name 变长40位的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 必须 固定为216
应答返回码 resp_code 定长6位String 必须 216000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
216000 交易成功
216003 交易失败
216002 请求已受理
216317 验证码发送失败
216318 验证码发送成功
216098 系统超时
216099 系统异常
216100 请求参数非法
216101 商户无此接口权限
216102 验证签名失败
216103 商户状态异常
216104 用户状态异常
216107 消息类型与签名内容不一致
216108 商户客户号与签名内容不一致
216109 版本号与签名内容不一致
216202 交易订单号重复
216210 短信验证码发送过于频繁
216301 省份地区信息非法
216302 只有个人用户和个体户能快捷支付
216303 入账客户号、入账账户号与分账串信息必须输入一项
216304 入账客户号、入账账户号与分账串信息不可同时输入
216308 商户支付基础信息未配置
216309 支付手续费账户状态不正常
216310 支付手续费未配置
216323 支付手续费只能向商户收取
216727 分账信息异常
216721 分账串内容不能超过五个
216722 分账串部分字段为空
216723 分账串金额格式错误
216728 分账串账户信息格式错误
216729 分账串账户异常
216726 分账信息账户状态异常
216725 分账信息用户状态异常
216741 分账串内容重复
216732 分账串客户号信息格式错误
216724 分账串累计金额不等于订单金额
216739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "216",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026303",
       "order_date": "20180327",
       "order_id": "2160099077",
       "trans_amt": "11.06",
       "div_detail": "[{'divCustId':'6666000000026188','divAcctId':'79710','divAmt':'5.03','divFreezeFg':'00'},{'divCustId':'6666000000026190','divAcctId':'79714','divAmt':'6.03','divFreezeFg':'01'}]",
       "in_cust_id": "",
       "in_acct_id": "",
       "card_no": "4213491201706095",
       "card_mobile": "12222222222",
       "card_prov": "0031",
       "card_area": "3100",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "",
       "extension": "",
       "payer_term_type": "",
       "payer_term_no": "",
       "payee_term_type": "",
       "payee_term_no": "",
       "goods_short_name": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "216";
 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": "216",
        "resp_code": "216000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "216",
      "resp_code": "216099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

快捷支付统合版支付 217

功能说明

本接口需要配合快捷支付统合版短信发送接口一起调用,完成绑卡和支付。如果用户已绑卡,不会重复绑卡。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为217
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307 ※同快捷支付统合版一阶段的订单日期
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合 ※同快捷支付统合版一阶段的订单号
短信验证码 sms_code 定长6位String 必须  
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
请求类型 request_type 定长2位String 必须 00 : PC端 01 : 移动端
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 固定为217
应答返回码 resp_code 定长6位String 必须 217000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 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位系统流水号
短信验证码 sms_code 定长6位String 必须  
入账客户号 in_cust_id 定长16位String 可选  
入账账户号 in_acct_id 变长9位String 可选  
开户银行代号 bank_id 变长8位String 可选 具体见附件:开户银行代号
银行卡号 card_no 变长32位String 可选 返回银行卡号掩码
绑定银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 可选  
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
217000 交易成功
217002 请求已受理
217003 交易失败
217098 系统超时
217099 系统异常
217100 请求参数非法
217101 商户无此接口权限
217102 验证签名失败
217103 商户状态异常
217104 用户状态异常
217107 消息类型与签名内容不一致
217108 商户客户号与签名内容不一致
217109 版本号与签名内容不一致
217201 页面数据被篡改
217202 交易订单号重复
217204 商户配置异常
217302 只有个人用户和个体户能快捷支付
217308 商户支付基础信息未配置
217309 支付手续费账户状态不正常
217310 支付手续费未配置
217312 操作超时,请重试
217313 请获取验证码
217315 银行卡号与银行、卡类型信息不匹配
217320 用户有快捷卡正在绑定中,请勿重复绑卡
217323 支付手续费只能向商户收取
217743 请获取验证码
217744 信息更新异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "217",
       "mer_cust_id": "6666000000217291",
       "user_cust_id": "6666000000291215",
       "order_date": "20170831",
       "order_id": "2160099052",
       "sms_code": "111111",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "",
       "extension": "",
       "ret_url": "",
       "request_type": "00"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "217";
 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": "217",
        "resp_code": "217000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "217",
      "resp_code": "217099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

APP 支付(支付宝、微信、银联各种支付) 218

功能说明

本接口支持支付宝正扫、微信正扫、银联正扫、微信 APP 支付、微信公众号支付、支付宝统一下单和小程序支付功能。

调用方式:系统调用

微信 APP 支付业务流程说明:

_images/wx_flow.png

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 Version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 218
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 付款人汇付客户号
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
支付类型 pay_type 定长2位String 必须 04:微信正扫; 05:支付正扫; 10 : 微信APP支付; 12:支付宝统一下单; 13:微信公众号; 14:apple pay; 18: 银联正扫; 19: 小程序支付
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
入账客户号 in_cust_id 定长16位String 可选 (入账客户号、入账账户号) 和 分账串必填一项,且只能填一项
入账账户号 in_acct_id 变长9位String 可选  
分账串 div_detail 变长String 可选 (入账客户号、入账账户号) 和 分账串必填一项,且只能填一项; 分账串定义可参照下表; 注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
是否原生态 is_raw 定长1位String 可选 微信公众号支付时的参数 是否原生态 是:1 否:0 注:为空时,默认1
APPID app_id 变长32位String 可选 商户在微信申请的APPID; 支付类型为微信APP支付、微信公众号支付、微信小程序支付时不能为空
买家用户ID buyer_id 变长100位String 可选 支付宝统一下单时必填;微信公众号支付、微信小程序支付时: 联调环境下传空 生产环境下不能为空
商品描述 goods_desc 变长127位String 必须  
商品类型 goods_type 定长4位String 可选  
附加信可选息 attach_info 变长128位String 可选 微信公众号支付的参数
商品标记 good_tag 变长32位String 可选 微信公众号支付的参数 商品标记,优惠标志等
订单超时时间 order_expire_time 固定14位String 可选 微信公众号支付的参数 格式为YYYYMMDDHHmmss
设备号 device_info 变长32位String 可选  
IP地址 ip_addr 变长20位String 可选  
经纬度 location_val 变长30位String 可选 参数格式:116.538799,39.983523
支付返回地址 ret_url 变长128位的String 可选 微信公众号支付时,必须输入 用于微信支付成功后跳转的页面; 支付宝统一下单时,必须输入
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
设备信息 dev_info_json 变长2000位的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:不冻结

注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号

同步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
应答返回码 resp_code 定长6位String 必须 218002–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
银行返回码 bg_bank_code 变长32位String 可选  
银行返回描述 bg_bank_message 变长200位String 可选  
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
支付地址 pay_url 变长64位String 可选 支付宝统一下单返回参数 支付宝浏览器下直接用此链接请求支付宝支付(注:目前部分通道不支持返回支付地址) 微信公众号也有可能返回支付地址,在未返回支付信息时,使用支付地址。
动态口令 token_id 变长64位String 可选 微信公众号参数 根据token_id组装如下url地址,在微信下可直接唤起支付 https://pay.swiftpass.cn/pay/jspay?token_id=9a0610bc519e782e6275e8c7dd94a445&showwxtitle=1
支付信息 pay_info 变长String 可选 微信公众号支付时,数据格式如下: {“appId”:”wx1f87d44db95cba7a”,”timeStamp”:”1514459875237”,”status”:”0”,”signType”:”MD5”,”package”:”prepay_id=wx20171228191755dff683fea20032942684”,”callback_url”:”https://www.baidu.com”,”nonceStr”:”1514459875237”,”paySign”:”5DEE76A6C0CB7BE924BDB11945D591CA”} 微信APP支付时,数据格式如下: {“sign”:”F21465FEAE87F4C02E639D846B2CFCC2”,”timestamp”:”1504863344”,”noncestr”:”1504863344725”,”partnerid”:”12723495”,”prepayid”:”wx20170908173544b0662982990254372413”,”package”:”Sign=WXPay”,”appid”:”324125”} 是微信sdk唤起APP支付的参数
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 218
应答返回码 resp_code 定长6位String 必须 218000—交易成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
银行返回码 bg_bank_code 变长32位String 可选  
银行返回描述 bg_bank_message 变长200位String 可选  
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
支付地址 pay_url 变长64位String 可选  
动态口令 token_id 变长64位String 可选  
支付信息 pay_info 变长String 可选  
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
支付类型 pay_type 定长2位String 必须 04:微信正扫 05:支付宝正扫 10: 微信APP支付 12:支付宝统一下单 13:微信公众号 14:apple pay
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
入账客户号 in_cust_id 定长16位String 可选 (入账客户号、入账账户号) 和 分账账户串必填一项
入账账户号 in_acct_id 变长9位String 可选  
分账账户串 div_detail 变长String 可选 (入账客户号、入账账户号) 和 分账账户串必填一项;
是否原生态 is_raw 定长1位String 可选 微信公众号支付时的参数 是否原生态 是:1 否:0 注:为空时,默认1
APPID app_id 变长32位String 可选 商户在微信的APPID
买家用户ID buyer_id 变长100位String 可选  
商品描述 goods_desc 变长127位String 必须  
商品类型 goods_type 定长4位String 可选  
附加信可选息 attach_info 变长128位String 可选 微信公众号支付的参数
商品标记 good_tag 变长32位String 可选 微信公众号支付的参数 商品标记,优惠标志等
订单超时时间 order_expire_time 变长12位String 可选 微信公众号支付的参数 单位秒
设备号 device_info 变长32位String 可选  
IP地址 ip_addr 变长20位String 可选  
经纬度 location_val 变长30位String 可选  
外部订单流水号 out_trans_id 变长64位String 可选 外部订单流水号,指支付宝、微信、银联流水号
支付返回地址 ret_url 变长128位的String 可选 微信公众号支付时,必须输入 用于微信支付成功后跳转的页面 支付宝统一下单时,必须输入
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

微信 APP 支付商户端开发示例

ios调起支付主要方法:

java

    //注册APPID:

//商户APP工程中引入微信lib库和头文件,调用API前,需要先向微信注册您的APPID,代码如下:

[WXApi registerApp:\\@"wxd930ea5d5a258f4f"
withDescription:\\@"demo 2.0"];

    //唤起微信APP:

PayReq \*request = [[[PayReq alloc] init] autorelease];

request.partnerId = \\@"10000100";

request.prepayId= \\@"1101000000140415649af9fc314aa427";

request.package = \\@"Sign=WXPay";

request.nonceStr= \\@"a462b76e7436e98e0ed6e13c64b4fd1c";

request.timeStamp= \\@"1397527777";

request.sign= \\@"582282D72DD2B03AD892830965F428CB16E7A256";

[WXApi sendReq:request];

Android调起支付主要方法:

java

    //注册APPID:

    //商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

    final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

    // 将该app注册到微信

    msgApi.registerApp("wxd930ea5d5a258f4f");

//唤起微信APP:

    IWXAPI api;

    PayReq request = new PayReq();

    request.appId = "wxd930ea5d5a258f4f";

    request.partnerId = "1900000109";

    request.prepayId= "1101000000140415649af9fc314aa427",;

    request.packageValue = "Sign=WXPay";

    request.nonceStr= "1101000000140429eb40476f8896f4c9";

    request.timeStamp= "1398746574";

    request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";

    api.sendReq(request);

注:以上参数值来源于同步返回参数pay_info中

**详细内容请参照 微信官网APP支付 **

微信公众号开发示例

公众号原生态js支付接口(推荐使用)

  • 使用示例

需要注意: 所有传入参数都是字符串类型! 使用 JavaScript、 PHP等弱类型语言需要关注一下。示例代码如下:

java

WeixinJSBridge.invoke('getBrandWCPayRequest',{
            "appId" : "wx2421b1c4370ec43b", //公众号名称, 由商户传入
            "timeStamp":" 1395712654", //时间戳, 自 1970 年以来的秒数
            "nonceStr" : "e61463f8efa94090b1f366cccfbbb444", //随机串
            "package" : "prepay\_id=u802345jgfjsdfgsdg888",
            "signType" : "MD5", //微信签名方式:
            "paySign" : "70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名
            },function(res){
            if(res.err\_msg == "get\_brand\_wcpay\_request:ok" ) {}
            // 使用以上方式判断前端返回,微信团队郑重提示: res.err\_msg将在用户支付成功后返回 ok, 但并不保证它绝对可靠。
});

如有疑惑请参照 微信官网公众号支付

  • 交互模式

    请求: 后台请求交互模式 返回结果+通知: 后台请求交互模式+后台通知交互模式

  • 请求参数

字段名 变量名 必填 类型 说明
公众号 id appId String 对应接口3.3中返回的payInfo信息
时间戳 timeStamp String 对应接口3.3中返回的payInfo信息
随机字符串 nonceStr String  
订单详情扩展字符串 Package String 对应接口3.3中返回的payInfo信息
签名方式 signType String 对应接口3.3中返回的payInfo信息
签名 paySign String 对应接口3.3中返回的payInfo信息
  • 返回结果:
返回值 说明
err_msg get_brand_wcpay_request:ok 支付成功
  get_brand_wcpay_request:cancel 支付过程中用户取消
  get_brand_wcpay_request:fail 支付失败

注:JS API 的返回结果 get_brand_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel 或者get_brand_wcpay_request:fail 可以统一处理为用户遇到错误或者主动放弃, 不必细化区分。

  • 获取当前微信版本号

    由于微信 5.0 版本后才加入微信支付模块,低版本用户调用微信支付功能将无效。 因此,建议商户通过 user agent 来确定用户当前的版本号后再调用支付接口。 以 iPhone 版本为例,可以通过 user agent 可获取如下微信版本示例信息:

"Mozilla/5.0(iphone;CPU iphone OS 5\_1\_1 like Mac OS X)
     AppleWebKit/534.46(KHTML,likeGeocko) Mobile/9B206 MicroMessenger/5.0"

公众号非原生支付

  • 接口功能

    初始化 JSAPI 请求, 通过生成 token_id 来进行交互验证。 如调用时是用的原生态 js 支付, 此接口可以忽略

  • 交互模式

    请求: 后台请求交互模式

    返回结果+通知: 后台请求交互模式+后台通知交互模式

  • 显示微信安全支付标题

    对于商户具有支付权限且需要调用微信支付的页面,为了让用户增加购买信心,确认交易环境安全, 微信强烈建议商户使用“微信安全支付” 标题。安全支付标题的如下图。

_images/wx_safe_pay_icon.png
  • 显示支付安全标题, 需将原始链接添加上”showwxpaytitle=1”的尾串。

    通过这种方式,商户的页面将出现微信安全支付的标识。 例如,原始 URL 为:htp://weixin.qq.com 显示安全支付标题的 URL 为:htp://weixin.qq.com?showwxpaytitle=1。

    当用户在微信里打开 http://weixin.qq.com 不会直接出现微信安全支付的标题,而打开htp://weixin.qq.com?showwxpaytitle=1 后将出现微信安全支付标题。

  • 请求参数

    请求 url: https://pay.swiftpass.cn/pay/jspay

    请求参数为 http queryString, 即: https://pay.swiftpass.cn/pay/jspay?token_id=xxx

    https://pay.swiftpass.cn/pay/jspay?token_id=9a0610bc519e782e6275e8c7dd94a445&showwxtitle=1

    在服务号中点击这个链接就可调起支付(用户点击页面中的微信支付按钮时实际上就是点击的这个链接,此种方式无需配置支付授权目录,也不用像原生态 jsapi 支付那样获取那些参数后续的操作, 测试时可以将组装好的这个链接放到手机微信端文件传输助手点击调起支付界面)

序号 字段 说明 必填 备注
业务参数        
1 token_id VARCHAR(64) 动态口令
2 showwxpaytitle CHAR(1) 取值 1 或 0, 请填写: 1, 用于页面显示微信 安全支付

返回码

返回码 返回描述
218000 交易成功
218002 请求已受理
218003 交易失败
218004 交易关闭
218098 系统超时
218099 系统异常
218100 请求参数非法
218101 商户无此接口权限
218102 验证签名失败
218103 商户状态异常
218104 用户状态异常
218107 消息类型与签名内容不一致
218108 商户客户号与签名内容不一致
218109 版本号与签名内容不一致
218110 商户号不存在
218104 用户状态异常
218331 微信APP和支付宝APP支付时,APPID不能为空
218332 支付宝统一下单时,买家用户ID不能为空
218232 出账用户状态异常
218228 (入账客户号、入账账户号)与分账串信息必须输入一项
218230 入账客户号和入账账户号必须同时输入
218231 入账用户状态异常
218229 (入账客户号、入账账户号)与分账串信息不可同时输入
218112 账号不存在
218114 入账账户类型错误
218727 分账信息异常
218721 分账串内容不能超过五个
218722 分账串部分字段为空
218723 分账串金额格式错误
218728 分账串账户信息格式错误
218729 分账串账户异常
218726 分账信息账户状态异常
218725 分账信息用户状态异常
218741 分账串内容重复
218732 分账串客户号信息格式错误
218724 分账串累计金额不等于订单金额
218330 商户没有入驻
218202 交易订单号重复
218204 商户配置异常
218303 商户支付基础信息未配置
218321 支付手续费未配置
218323 支付手续费只能向商户收取
218314 支付手续费账户状态不正常
218215 请补录身份信息
218804 商户超限额或限次
218805 商户未开通该功能权限
218806 商户交易限制
218746 支付成功,分账失败
218341 订单已关闭
218342 已支付成功
218343 已支付失败
218344 订单信息不匹配
218345 未获取二维码链接
218346 未获取支付信息

代码示例

java

 String valueObj = "{"version":"10","cmd_id":"218","mer_cust_id":"6666000000217291",
              "user_cust_id":"","order_date":"20170921","order_id":"210014670","pay_type":"13",
              "trans_amt":"0.02","div_detail":"[
              {'divCustId':'6666000000307920','divAcctId':'310545','divAmt':'0.01','divFreezeFg':'00'},
              {'divCustId':'6666000000217291','divAcctId':'219871','divAmt':'0.01','divFreezeFg':'00'}]",
              "in_cust_id":"","in_acct_id":"","app_id":"000","is_raw":"1","buyer_logon_id":"quxiangzhen@21cn.com",
              "buyer_id":"000","goods_desc":"商品描述","goods_type":"5812","attch_info":"attch_info",
              "good_tag":"good_tag","device_info":"device_info","ip_addr":"ip_addr","location_val":"location_val",
              "order_expire_time":"","ret_url":"https://www.baidu.com/index.php?tn=monline_3_dg",
              "bg_ret_url":"http://192.168.0.74:8001/npayCallBack/asyncHandle.json","mer_priv":"","extension":""
              }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "218";
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": "218",
        "resp_code": "218000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
     {
       "cmd_id": "218",
       "resp_code": "218099",
       "resp_desc": "交易失败",
       "mer_cust_id" : "6666000000026086",
       "order_date": "20180327",
       "order_id": "10000000001",
       .......
     }

直接代扣支付接口 221

功能说明

用于直接从银行卡里扣取金额到账户里。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为221
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
用户姓名 user_name 变长50位String 必须 用户的真实姓名
身份证号 cert_id 变长18位String 必须 用户的身份证号
手机号 user_mobile 定长11位String 非必须 用户的手机号
银行卡号 card_no 变长32位String 必须 8位以下报错
入款账户号 acct_id 变长9位String 必须 商户的基本户
代扣交易金额 trans_amt 变长14位String 必须 金额格式是###.00
代扣业务类型 trans_type 定长2位String 必须 01:消费分期(花呗) 02:现金贷(借呗) 03:普通基金申购 04:货币基金申购(余额宝) 05:基金定投 06:其他
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代扣支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
对手方交易IP user_ip_addr 变长20位的String 必须  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为221
应答返回码 resp_code 定长6位String 必须 221000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代扣支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为221
应答返回码 resp_code 定长6位String 必须 221000–调用成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
入账日期 acct_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
用户姓名 user_name 变长50位String 必须 用户的真实姓名
身份证号 cert_id 变长18位String 必须 用户的身份证号
手机号 user_mobile 定长11位String 必须 用户的手机号
银行卡号 card_no 变长32位String 必须 8位以下报错
账户号 acct_id 变长9位String 必须 商户的基本户
代扣交易金额 trans_amt 变长14位String 必须 金额格式是###.00
代扣业务类型 trans_type 定长4位String 必须 花呗(01)、借呗(02)、网商银行(03)、基金购买(04); 一个批次只能是一种类型;
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户代扣支付结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "221",
       "mer_cust_id": "6666000000217291",
       "order_id": "13399494",
       "order_date": "20180510",
       "user_name": "张三",
       "cert_id": "362202198010190068",
       "user_mobile": "13761708192",
       "card_no": "6230580000038076969",
       "acct_id": "219871",
       "trans_amt": "0.01",
       "trans_type": "01",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "mer_priv",
       "extension": "extension"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "221";
 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": "221",
        "resp_code": "221000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "221",
      "resp_code": "221099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

H5 收银台 219

功能说明

商户调用该接口,跳转到汇付的 H5 收银台,收银台目前支持快捷支付、微信公众号支付

调用方式:页面浏览器

收银台业务流程说明:

_images/cashier_desk_flow.png

请求参数

分账账户串(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 必须 219、208、218 如果用户在收银台页面选择了快捷支付,则返回的cmdId是208; 如果用户选择了微信支付,则返回的cmdId是218
应答返回码 resp_code 定长6位String 必须 208002、218002–处理中,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户客户号 mer_cust_id 定长16位String 必须 商户的唯一标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
用户客户号 user_cust_id 定长16位String 可选 付款人汇付客户号; 快捷支付时,如果用户未在汇付开过户的话,会自动开户,并返回当前付款人在汇付的客户号
动态口令 token_id 变长64位String 可选 动态口令, 用于后续接口调用中使用(微信支付时的返回参数)
支付信息 pay_info 变长String 可选 json格式字符串,作用于原生态 js 支付时的参数; (微信支付时的返回参数)
开户银行代号 bank_id 变长8位String 必须 付款人快捷支付时的银行卡所属银行代号(快捷支付时的返回参数)
银行卡号 card_no 变长32位String 必须 付款人快捷支付时的银行卡掩码 (快捷支付时的返回参数)
绑定银行卡ID bind_card_id 变长20位String 必须 付款人快捷支付时的快捷绑卡的ID (快捷支付时的返回参数)
借贷标记 dc_flag 定长1位String   (快捷支付时的返回参数)

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 208、218 如果用户在收银台页面选择了快捷支付,则返回的cmdId是208; 如果用户选择了微信支付,则返回的cmdId是218
应答返回码 resp_code 定长6位String 必须 208000、218000—交易成功,其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内的字母或数字组合
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号 (快捷支付时的返回参数)
银行卡号 card_no 变长32位String 必须 返回银行卡号掩码 (快捷支付时的返回参数)
绑定银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID (快捷支付时的返回参数)
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡 (快捷支付时的返回参数)
是否原生态 is_raw 定长1位String 可选 (微信支付时的返回参数)
动态口令 token_id 变长64位String 可选 (微信支付时的返回参数)
支付信息 pay_info 变长String 可选 (微信支付时的返回参数)
买家用户ID buyer_id 变长100位String 可选 (微信支付时的返回参数)
商品描述 goods_desc 变长127位String 必须 (微信支付时的返回参数)
商品类型 goods_type 定长4位String 可选 (微信支付时的返回参数)
附加信可选息 attach_info 变长128位String 可选 (微信支付时的返回参数)
订单超时时间 order_expire_time 变长12位String 可选 单位秒
入账客户号 in_cust_id 定长16位String 可选  
入账账户号 in_acct_id 变长9位String 可选  
分账账户串 div_detail 变长String 可选  
支付返回地址 ret_url 变长128位的String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意:1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 Extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
208000 支付成功
208001 支付请求受理中
208099 系统异常
218000 交易成功
218002 请求已受理
218003 交易失败
218099 系统异常
219003 交易失败
219099 系统异常
219100 请求参数非法
219101 商户无此接口权限
219102 验证签名失败
219110 商户号不存在
219103 商户状态异常
219201 页面数据被篡改
219202 交易订单号重复
219232 出账用户状态异常
219228 (入账客户号、入账账户号)与分账串信息必须输入一项
219230 入账客户号和入账账户号必须同时输入
219231 入账用户状态异常
219229 (入账客户号、入账账户号)与分账串信息不可同时输入
219112 账号不存在
219114 入账账户类型错误
219727 分账信息异常
219721 分账串内容不能超过五个
219722 分账串部分字段为空
219723 分账串金额格式错误
219728 分账串账户信息格式错误
219729 分账串账户异常
219726 分账信息账户状态异常
219725 分账信息用户状态异常
219741 分账串内容重复
219732 分账串客户号信息格式错误
219724 分账串累计金额不等于订单金额
219321 操作超时,请重试
219747 商户收银台未配置
219335 信息被篡改
218332 买家用户ID不能为空
218334 支付返回地址不能为空
218232 出账用户状态异常
218228 (入账客户号、入账账户号)与分账串信息必须输入一项
218230 入账客户号和入账账户号必须同时输入
218231 入账用户状态异常
218229 (入账客户号、入账账户号)与分账串信息不可同时输入
218112 账号不存在
218114 入账账户类型错误
218727 分账信息异常
218721 分账串内容不能超过五个
218722 分账串部分字段为空
218723 分账串金额格式错误
218728 分账串账户信息格式错误
218729 分账串账户异常
218726 分账信息账户状态异常
218725 分账信息用户状态异常
218741 分账串内容重复
218732 分账串客户号信息格式错误
218724 分账串累计金额不等于订单金额
218330 商户没有入驻
218303 商户支付基础信息未配置
218321 支付手续费未配置
218323 支付手续费只能向商户收取
218314 支付手续费账户状态不正常
218110 商户号不存在
218201 页面数据被篡改
218321 操作超时,请重试
218746 支付成功,分账失败
208201 页面数据被篡改
208202 交易订单号重复
208203 账户可用余额不足
208204 商户配置异常
208205 短信验证码验证失败
208206 短信验证码发送手机号与验证手机号不一致
208208 短信验证码已失效请重新获取
208211 短信验证码发送失败
208214 查询出现异常
208215 请补录身份信息
208216 短信验证码发送过于频繁或单日发送次数超限
208301 只有个人用户和个体户能快捷支付
208302 商户支付基础信息未配置
208303 支付手续费账户状态不正常
208304 支付手续费未配置
208306 身份证实名验证错误
208307 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡
208308 个人用户信息校验失败
208309 开户手续费收取失败
208310 该笔交易已结束
208311 无任何银行信息
208314 验证码发送失败
208315 验证码发送成功
208317 用户有快捷卡正在绑定中,请勿重复绑卡
208319 验证码发送中
208320 银行卡解绑失败
208321 操作超时,请重试
208322 省份地区信息非法
208324 银行卡信息验证失败
208325 银行卡号与银行、卡类型信息不匹配
208721 分账串内容不能超过五个
208722 分账串部分字段为空
208723 分账串金额格式错误
208724 分账串累计金额不等于订单金额
208725 分账信息用户状态异常
208726 分账信息账户状态异常
208727 分账信息异常
208728 分账串账户信息格式错误
208729 分账串账户异常
208732 分账串客户号信息格式错误
208739 快捷支付短信发送异常
208741 分账串内容重复
208742 快捷支付成功,分账失败
208743 请获取验证码

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "219",
       "mer_cust_id": "6666000000002619",
       "user_cust_id": "6666000000005942",
       "order_id": "201710268889",
       "order_date": "20171027",
       "trans_amt": "0.02",
       "in_cust_id": "",
       "in_acct_id": "",
       "div_detail": "[{'divCustId':'6666000000002619','divAcctId':'2744','divAmt':'0.01','divFreezeFg':'00'},{'divCustId':'6666000000007485','divAcctId':'7791','divAmt':'0.01','divFreezeFg':'00'}]",
       "goods_desc": "商品描述",
       "goods_type": "5812",
       "order_expire_time": "000",
       "ret_url": "https://www.baidu.com/",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "219";
 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": "219",
        "resp_code": "219000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "219",
     "resp_code": "219099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

页面展示

_images/cashier_desk_page.png

H5 支付 226

功能说明

调用本接口时,返回微信 H5 支付地址,用于唤起微信支付。

调用方式:页面浏览器

请求参数

分账账户串(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 必须 226
应答返回码 resp_code 定长6位String 必须 226000—交易成功 226002—请求受理中 其他见返回码
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
扫码支付类型 pay_type 定长2位String 必须 16 : 微信H5 17 : 支付宝H5
交易金额 trans_amt 变长14位String 必须 金额格式是###.00
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户。详见下表 分账账户串 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
商品描述 goods_desc 变长127位String 必须  
商品类型 goods_type 定长4位String 可选 MCC,银联支付时必须
支付地址 pay_url 变长64位String 可选 用于拉起微信收银台的URL
操作员 oper_user_id 变长32位String 可选  
设备号 device_info 变长32位String 可选  
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
通道返回码 bg_channel_code 变长32位String 可选  
通道返回描述 bg_channel_msg 变长200位String 可选  
银行返回码 bg_bank_code 变长32位String 可选  
银行返回描述 bg_bank_message 变长200位String 可选  

返回码

H5 支付接口(cmd_id=226)  
226000 交易成功
226002 请求已受理
226003 交易失败
226099 系统异常
226100 请求参数非法
226101 商户无此接口权限
226102 验证签名失败
226103 商户状态异常
226104 用户状态异常
226107 消息类型与签名内容不一致
226108 商户客户号与签名内容不一致
226109 版本号与签名内容不一致
226110 商户号不存在
226721 分账串内容不能超过五个
226727 分账信息异常
226204 商户配置异常
226748 二级商户号不存在
226749 二级商户号状态异常
226202 交易订单号重复

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "226",
       "mer_cust_id": "6666000000037133",
       "user_cust_id": "",
       "order_id": "2018041300095",
       "order_date": "20180419",
       "pay_type": "16",
       "trans_amt": "0.01",
       "div_detail": "[{'divCustId':'6666000000037137','divAcctId':'92127','divAmt':'0.01','divFreezeFg':'00'}]",
       "goods_desc": "1",
       "good_tag": "",
       "app_name": "111",
       "appinfo_id": "idids00000",
       "goods_type": "1222",
       "oper_user_id": "test_oper_user_id",
       "device_info": "1",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "tess",
       "secondary_mer_id": "NP09050001"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "226";
 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": "226",
        "resp_code": "226000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "226",
      "resp_code": "226099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

充值代扣接口 849

功能说明

该接口实现充值代扣支付。

调用方式:系统调用(同步+异步)

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为849
商户客户号 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 必须 02020003: 代扣充值
交易类型 trans_type 定长8位String 必须 02020101:支付 02020103:非消费金融代扣支付
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
入账账户号 in_acct_id 变长9位String 可选  
分账账户串 div_detail 变长String 可选 业务类型为支付时必传,分账串使用UTF-8字符集URLEncode编码后传入 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]分账串金额之和需等于充值金额 支持1条分账指令
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL应使用UTF-8字符集URLEncode编码后传入 2)URL中请不要包含特殊字符 3) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见4.2.13.二级商户号录入接口
交易场景 trans_scene 定长3位 可选 不需要
交易场景小类 trans_scene_sub 定长6位 可选 不需要
二级商户号 secondary_merid 变长12位 String 可选  
代扣签约流水 sign_seq_id 变长18位String 必须 代扣签约订单唯一标识,代扣充值必传,其他充值不需传
银行卡号 card_no 变长32位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 变长String 必须 每一种消息类型代表一种交易,此处为849
应答返回码 resp_code 定长6位String 必须 849000–调用成功,其他见:返回码表
应答返回描述 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 可选 02020101:支付 02020103:非消费金融代扣支付
充值类型 recharge_type 定长8位String 可选 02020000: 个人网银,02020001: 企业网银
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
代扣签约流水 sign_seq_id 变长18位String 可选 代扣签约订单唯一标识,代扣充值必传,其他充值不需传
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
分账账户串 div_detail 变长String 可选 业务类型为支付时必传,分账账户必须是入账客户的账户,数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”}],分账串金额之和需等于充值金额,支持1条分账指令
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
商户后台应答地址 bg_ret_url 变长128位String 必须 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数
银行卡号 card_no 变长32位String 可选 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡
业务请求流水 biz_trans_id 变长20位String 可选 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母充值类型为二段式快捷时必填

返回码

返回码 返回描述
849000 交易成功
849002 请求已受理
849003 交易失败
849099 系统异常
849100 请求参数非法
849101 商户无此接口权限
849102 验证签名失败
849103 商户状态异常
849104 用户状态异常
849107 消息类型与签名内容不一致
849108 商户客户号与签名内容不一致
849109 版本号与签名内容不一致
849110 商户号不存在
849111 用户客户号不存在
849202 交易订单号重复
849204 商户配置异常
849215 请补录身份信息
849228 (入账客户号、入账账户号)与分账串信息必须输入一项
849230 入账客户号和入账账户号必须同时输入
849231 入账用户状态异常
849302 不支持此支付类型
849303 商户支付基础信息未配置
849305 入账客户信息不正确
849306 入账分账串信息不正确
849308 该用户未绑定代扣卡
849309 该用户代扣协议不存在或状态异常
849311 企业用户或商户不支持代扣充值
849313 该充值银行与用户快捷或代扣卡不匹配
849314 支付手续费账户状态不正常
849318 代扣卡不存在或状态异常
849321 支付手续费未配置
849329 理财账户不允许进行支付,分账和作为手续费!
849727 分账信息异常
849733 分账支付明细处理失败
849737 支付明细处理失败
849748 二级商户号不存在
849749 二级商户号状态异常
849315 手续费金额不得大于等于交易金额

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "849",
            "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": "",
            "call_back_url": "",
            "order_expire_time": "",
            "goods_type": "",
            "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
            "sign_seq_id": "",
            "secondary_mer_id": "",
            "mer_priv": "test_merpriv",
            "extension": "test_extension"
    }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "849";
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": "849",
        "resp_code": "849000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "849",
     "resp_code": "849099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

网银充值接口 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 必须 02020000: 个人网银 ; 02020001: 企业网银
交易类型 trans_type 定长8位String 必须 02020100:充值 ;02020102:免注册网银支付
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
开户银行代号 bank_id 变长8位String 必传  
借贷标记 dc_flag 定长1位String 必传 D–借记 C–贷记
商户前台应答地址 ret_url 变长128位String 必须 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上 注意: 1) URL应使用UTF-8字符集URLEncode编码后传入; 2)URL中请不要包含特殊字符 3) 必须是外网地址
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL应使用UTF-8字符集URLEncode编码后传入 2)URL中请不要包含特殊字符 3) 必须是外网地址
商户私有域 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 可选  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 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",
     .......
   }

快捷支付后台版 850

功能说明

快捷支付是从用户事先绑定好的银行卡里,扣取订单金额到指定的账户。此接口第一次调用是发送快捷支付短信,第二次调用是确认支付。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为850
商户客户号 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 必须 02020006: 二阶段快捷
交易类型 trans_type 定长8位String 必须 02020101:支付
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
入账账户号 in_acct_id 变长9位String 可选  
分账账户串 div_detail 变长String 可选 业务类型为支付时必传,分账串使用UTF-8字符集URLEncode编码后传入 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]分账串金额之和需等于充值金额 支持1条分账指令
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL应使用UTF-8字符集URLEncode编码后传入 2)URL中请不要包含特殊字符 3) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见4.2.13.二级商户号录入接口
交易场景 trans_scene 定长3位 可选 不需要
交易场景小类 trans_scene_sub 定长6位 可选 不需要
二级商户号 secondary_merid 变长12位 String 可选  
短信验证码 sms_code 定长6位String 可选 与快捷绑卡时的银行预留手机号对应的短信验证码
代扣签约流水 sign_seq_id 变长18位String 可选 代扣签约订单唯一标识,代扣充值必传,其他充值不需传 不需要
银行卡号 card_no 变长32位String 可选 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡
阶段标志 step_flag 定长2位String 必须 01:快捷支付请求
业务请求流水 biz_trans_id 变长20位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 变长String 必须 每一种消息类型代表一种交易,此处为850
应答返回码 resp_code 定长6位String 必须 850000–调用成功,其他见:返回码表
应答返回描述 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 可选 02020101:支付
充值类型 recharge_type 定长8位String 可选 02020000: 个人网银 02020001: 企业网银
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
商户后台应答地址 bg_ret_url 变长128位String 必须 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数
银行卡号 card_no 变长32位String 可选 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡
阶段标志 step_flag 定长2位String 可选 01:快捷支付请求02:快捷支付确认充值类型为二段式快捷时必填
业务请求流水 biz_trans_id 变长20位String 可选 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母充值类型为二段式快捷时必填

返回码

返回码 返回描述
850000 交易成功
850001 交易处理中
850002 请求已受理
850003 交易失败
850099 系统异常
850100 请求参数非法
850101 商户无此接口权限
850102 验证签名失败
850103 商户状态异常
850104 用户状态异常
850107 消息类型与签名内容不一致
850108 商户客户号与签名内容不一致
850109 版本号与签名内容不一致
850110 商户号不存在
850111 用户客户号不存在
850202 交易订单号重复
850204 商户配置异常
850228 (入账客户号、入账账户号)与分账串信息必须输入一项
850230 入账客户号和入账账户号必须同时输入
850231 入账用户状态异常
850303 商户支付基础信息未配置
850305 入账客户信息不正确
850306 入账分账串信息不正确
850307 该用户未绑定快捷卡
850313 该充值银行与用户快捷或代扣卡不匹配
850314 支付手续费账户状态不正常
850319 快捷卡不存在或状态异常
850321 支付手续费未配置
850329 理财账户不允许进行支付,分账和作为手续费!
850727 分账信息异常
850733 分账支付明细处理失败
850737 支付明细处理失败
850739 快捷支付短信发送异常
850748 二级商户号不存在
850749 二级商户号状态异常
850315 手续费金额不得大于等于交易金额

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "850",
            "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": "",
            "step_flag": "",
            "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 = "850";
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": "850",
        "resp_code": "850000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }

失败响应:

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

直接代扣支付 825

功能说明

直接代扣功能。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为825
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
付款方姓名 user_name 变长50位String 必须 用户的真实姓名,中文应使用UTF-8字符集URLEncode编码后传入
付款方证件类型 cert_type 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020104:回乡证 01020106:台胞证 01020107:其他 目前仅支持身份证
付款方证件号 cert_id 变长20位String 必须 付款方证件号码,与证件类型对应
付款方银行预留手机号 card_mobile 变长11位String 必须 付款方银行预留手机号,变长11位数字
付款方银行卡号 card_no 变长32位String 必须 付款方银行卡号,变长32位数字
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
银行账户类型 card_type 定长8位String 必须 01050001:对公账户 01050000:对私账户 目前仅支持对私
入款方账户号 in_cust_acct_id 变长9位String 必须 入款方账户号
入款方用户号 in_cust_id 定长16位String 必须 入款方客户号,不能是出款方客户号
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL应使用UTF-8字符集URLEncode编码后传入 2)URL中请不要包含“附件三:BgRetUrl中禁止的字符串列表”的字符串 3) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见4.2.9.二级商户号录入接口

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为825
应答返回码 resp_code 定长6位String 必须 825000–调用成功,其他见附件四:返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述,中文为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号

返回码

返回码 返回描述
825000 交易成功
825002 请求已受理
825003 交易失败
825099 系统异常
825100 请求参数非法
825102 验证签名失败
825103 商户状态异常
825104 用户状态异常
825105 账户状态异常
825110 商户号不存在
825202 交易订单号重复
825303 商户支付基础信息未配置
825314 支付手续费账户状态不正常
825321 支付手续费未配置
825322 入账账户不正确
825323 该银行卡非借记卡
82563C 手续费金额不得大于等于交易金额
825800 风控信息验证失败

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "825",
            "mer_cust_id": "6666000000026086",
            "order_date": "20180816",
            "order_id": "2018081615344454",
            "user_name": "",
            "cert_type": "01020100",
            "cert_id": "",
            "card_mobile": "13100001111",
            "card_no": "6225768612148888",
            "gateway_seqId": "1234567890",
            "trans_amt": "1.00",
            "card_type": "01050000",
            "in_cust_acct_id": "",
            "in_cust_id": "",
            "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 = "825";
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": "825",
        "resp_code": "825000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180816",
        "order_id": "2018081615344454",
        .......
      }

失败响应:

200
   {
     "cmd_id": "825",
     "resp_code": "825099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180816",
     "order_id": "2018081615344454",
     .......
   }