快捷类接口

常用接入方式

快速接入方式(页面版)

本 API 提供了开户、绑卡和支付三合一的接口,并且提供页面让用户录入身份和卡号信息,商户不需要额外调用开户和绑卡接口,也不需要开发页面采集用户信息,可以快速接入快捷支付功能。这种接入方式支持贷记卡支付。 涉及到的接口包括: 快捷支付WEB版接口快捷支付APP版接口 选其一、 交易状态查询接口退款接口

_images/qucikPay_flow.png

纯后台系统调用方式(无页面版)

此接入方式不会出现汇付的页面,商户需要自己开发页面采集用户信息,但是不支持贷记卡快捷支付。涉及到的接口包括:快捷绑卡代开户接口快捷支付后台版接口交易状态查询接口退款接口

_images/qucikPay_no_page_flow.png

111 绑卡短信发送接口

功能说明

用于发送短信验证码,以便在进行后续绑卡业务中验证该短信验证码。

  • 根据接口参数验卡类型card_verify_type配合使用103快捷卡绑卡接口、115非消费类代扣签约绑卡接口。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为111
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
验卡类型 card_verify_type 定长2位String 必须 快捷绑卡: 02 消费分期代扣绑卡: 03 非消费分期代扣绑卡: 04
开户银行代号 bank_id 定长8位String 可输 具体见附件:开户银行代号
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡
银行卡号 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 可选 用于扩展请求参数
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

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

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "111",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000027184",
       "order_date": "20180328",
       "order_id": "0020180365",
       "card_verify_type": "02",
       "bank_id": "01020000",
       "dc_flag": "0",
       "card_no": "6212261001039279143",
       "card_mobile": "13666666691",
       "card_prov": "0031",
       "card_area": "3100",
       "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 = "111";
 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": "111",
        "resp_code": "111000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "111",
     "resp_code": "111099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
111000 交易成功
111098 系统超时
111099 系统异常
111100 请求参数非法
111101 商户无此接口权限
111102 验证签名失败
111103 商户状态异常
111104 用户状态异常
111107 消息类型与签名内容不一致
111108 商户客户号与签名内容不一致
111109 版本号与签名内容不一致
111110 商户号不存在
111111 用户客户号不存在
111204 商户配置异常
111210 短信验证码发送过于频繁
111211 短信验证码发送失败
111300 当前商户不支持借记卡
111301 当前商户不支持贷记卡
111302 当前银行卡已绑过快捷卡
111303 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡
111304 验证码发送失败
111305 验证码发送成功
111306 贷记卡类型时,贷记卡CVV2、贷记卡有效期必须输入
111307 非贷记卡类型时,贷记卡CVV2、贷记卡有效期不能输入
111308 只有个人用户和个体户能绑定快捷卡
111309 验证码发送中

103 快捷卡绑卡接口

功能说明

用于跳转到本平台进行快捷卡绑定,以便用于快捷支付。

  • 有页面,需与111绑卡短信发送接口配合使用,先调111接口再调103接口,且该接口订单号order_id需与111绑卡短信发送接口的订单号order_id一致。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为103
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
开户银行代号 bank_id 变长8位String 可输 具体见附件:开户银行代号
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
银行卡开户省份 card_prov 定长4位String 可输 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 可输 本次快捷绑卡待绑定的银行卡开户地区
短信验证码 sms_code 定长6位String 必须 调111接口获取的验证码(注:测试环境不会发验证码,默认6个1)
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户快捷卡绑卡结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

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

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "103",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000291215",
       "order_id": "0020180368",
       "order_date": "20180402",
       "bank_id": "03134402",
       "dc_flag": "0",
       "card_no": "6230580000038076969",
       "card_mobile": "13761708192",
       "card_prov": "0031",
       "card_area": "3100",
       "sms_code": "324402",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "ret_url": "",
       "mer_priv": "",
       "extension": ""
       }";

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

返回码

返回码 返回描述
103000 交易成功
103002 请求已受理
103003 交易失败
103099 系统异常
103100 请求参数非法
103101 商户无此接口权限
103102 验证签名失败
103103 商户状态异常
103104 用户状态异常
102107 消息类型与签名内容不一致
102108 商户客户号与签名内容不一致
102109 版本号与签名内容不一致
102110 商户号不存在
103201 页面数据被篡改
103202 交易订单号重复
103204 商户配置异常
103205 短信验证码验证失败
103206 短信验证码发送手机号与验证手机号不一致
103207 短信验证码或短信唯一标识为空
103208 短信验证码已失效请重新获取
103209 验证码发送接口与接口不一致
103210 短信验证码发送过于频繁
103211 短信验证码发送失败
103303 银行卡号与银行不匹配
103305 只有个人用户和个体户能绑定快捷卡
103308 省份地区信息非法
103314 请获取验证码
103315 银行卡信息有更新,请重新获取验证码
103316 用户已绑定快捷卡,请勿重复申请
103317 用户有快捷卡正在绑定中,请勿重复绑卡
103318 该银行卡号与卡类型不匹配
103320 该商户不支持绑定贷记卡

812 快捷绑卡代开户接口

功能说明

使用该接口让商户在绑快捷卡时能同时完成开户操作,即开户+快捷绑卡二合一接口。该接口需调用2次,第一次调用时,step_flag传01获取验证码(四要素验证通过的情况下才会发短信,验证不通过则不会发送验证码),获取验证码后第二次调用该接口,step_flag传02验证短信并绑卡。前后两次订单号不要一样,但是bind_trans_id必须一致。

  • 暂时只支持绑定一张卡,纯接口API版,无页面,暂且仅支持借记卡。
  • 单卡模式下,该接口绑定快捷卡时会自动将这个卡同时绑为取现卡。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 11
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为812
两段式绑卡阶段标志 step_flag 定长2位的String 必须 01:验卡阶段02:验证短信阶段
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
用户名 user_name 定长50位String 可选 用户客户号为空时必填
身份证号 cert_id 定长18位String 必须 用户客户号为空时必填
银行预留手机号 card_mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
借贷标记 dc_flag 定长1位String 必须 D–借记,储蓄卡C–贷记
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行卡开户省份 card_prov 定长4位String 可选 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 可选 本次快捷绑卡待绑定的银行卡开户地区
短信验证码 sms_code 定长6位String 可选 验证短信阶段必须(step_flag=02)
绑卡交易流水号 bind_trans_id 变长20位String 必须 标志一个绑卡请求,商户下判断唯一,只能是数字和字母
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户及绑卡结果,注意:1)使用时不要包含中文2)必须是外网地址为商户的自定义字段
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数。若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:“111111111111”}二级商户号由汇付生成
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息
职业 occupation 定长2位String 必须 个人职业分类
国籍 nationality 变长128位的String 必须 例如:中华人民共和国

个人职业分类表:

职业名称 编号   职业名称 编号
国家机关、党群机关、企事业单位负责人 01   卫生行业从业人员 08
金融业从业人员 02   IT业从业人员 09
房地产业从业人员 03   农林牧渔劳动者 10
商贸从业人员 04   生产工作、运输工作和部分体力劳动者 11
自由职业者 05   退休人员 12
科教文从业人员 06   不便分类的其他劳动者 13
制造业从业人员 07      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为812
应答返回码 resp_code 定长6位String 必须 812000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
已开户标识 reg_flag 定长8位String 必须 00000000:新开户 00000001:已开户
用户账户号 acct_id 变长9位String 可选 用户账户号新开户且成功时必返
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
绑定快捷银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
绑定取现银行卡ID cash_bind_card_id 变长20位String 可选 仅支持单张银行卡的场合,绑取现卡的绑卡ID
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
手续费金额 fee_amt 变长14位String 可选 格式为###.00
手续费子账户号 fee_acct_id 变长9位String 可选  
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "812",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026189",
       "order_id": "201572184",
       "order_date": "20170828",
       "bank_id": "01050000",
       "card_no": "6212840000000012345",
       "bind_trans_id": "",
       "sms_code": "",
       "dc_flag": "0",
       "card_prov": "0031",
       "card_area": "3100",
       "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 = "812";
 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": "812",
        "resp_code": "812000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "812",
      "resp_code": "812099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

返回码

快捷绑卡代开户(cmd_id=812)  
812000 交易成功
812002 请求已受理
812003 交易失败
812099 系统异常
812100 请求参数非法
812101 商户无此接口权限
812102 验证签名失败
812103 商户状态异常
812104 用户状态异常
812107 消息类型与签名内容不一致
812108 商户客户号与签名内容不一致
812109 版本号与签名内容不一致
812110 商户号不存在
812111 用户客户号不存在
812202 交易订单号重复
812203 账户可用余额不足
812204 商户配置异常
812208 短信验证码已失效请重新获取
812210 短信验证码发送过于频繁
812211 短信验证码发送失败
812212 账户余额查询失败
812220 请求流水已存在
812300 该业务仅支持个人用户执行
812303 银行卡号与银行不匹配
812304 该银行卡非借记卡
812305 手续费收取失败
812306 用户已绑定快捷卡,请勿重复申请
812307 用户有快捷卡正在绑定中,请勿重复绑卡
812308 省份地区信息非法
812316 手机号与已绑定卡记录不匹配
812323 此卡已绑定,请勿重复申请
812326 该商户不支持贷记卡
812744 信息更新异常
812502 系统未开放或暂时关闭,请稍后再试
812503 交易通讯超时,请发起查询交易
812504 交易状态未明,请查询对账结果
812505 重复签约
812506 交易失败,详情查看银行返回信息
812507 验卡失败,具体问题参见对应银行认证失败原因
812508 交易处理中(撤销)
812510 订单信息为空
812511 订单信息有误
812512 重复交易
812513 交易失败,订单已超时!
812514 批量文件格式错误
812519 订单系统错误
812520 持卡人信息为空
812521 持卡人信息有误
812522 持卡人系统错误
812523 卡信息为空
812524 卡信息有误
812525 卡系统错误
812526 卡系统错误
812529 业务受限
812530 业务系统信息为空
812531 业务系统信息有误
812532 业务系统错误
812533 金额超限
812534 查无此交易
812535 网关不支持签约交易
812536 与原交易信息不符
812537 已超过最大查询次数或操作过于频繁
812538 风险受限
812539 网关不支持解约交易!
812540 授权码为空
812541 批量状态不正确,无法下载
812542 扣款成功但交易超过规定支付时间
812543 二级商户号为空
812544 商品描述为空
812545 支付类型为空
812546 交易类型为空
812547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
812548 微信公众号支付subOpenId不能为空
812549 无签约记录
812550 账户信息有误
812551 交易金额低于下限
812552 交易失败,未在我方进行实名认证或认证不通过
812553 二级商户名为空!
812554 入驻类型为空或值不对!
812555 商户入驻信息不匹配!
812556 商户入驻失败!
812557 银行卡类型不支持
812558 认证失败
812559 交易次数超限
812560 交易失败,请联系发卡银行
812561 对不起,您所输的银行卡号有误,请核实后再试!
812562 交易失败,发卡银行不支持该商户,请更换其他银行卡
812563 卡状态不正确
812564 银行卡余额不足
812565 卡信息或银行预留手机号有误
812566 短信验证码已过期
812567 密码输入次数超限
812568 您的银行卡暂不支持该业务
812571 对不起,你所输的验证码有误,请核实后再试!
812572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
812573 对不起,您所输的户名有误,请核实后再试!
812574 对不起,您的证件类型有误,请核实后再试!
812575 对不起,您的所输证件号码有误,请核实后再试!
812576 对不起,您所输的手机号码有误,,请核实后再试!
812577 验证码发送失败
812578 验证码超限或超时
812579 对不起,您的用户信息未通过银行验证,请核实后再试!
812580 银行卡状态异常
812581 支付失败,请稍后再试
812582 退款失败,请稍后再试
812583 余额不足次数超限,请隔日再试
812584 单笔金额超限
812585 单日金额超限
812586 单月金额超限
812587 订单信息重复
812588 支付订单信息有误
812589 退款失败,退款金额与订单金额不符
812590 交易失败,参数不合法
812591 系统异常
812592 交易失败,银行系统繁忙,请稍后再试
812593 系统超时
812594 银行处理中,请稍后再试
812595 短信验证码不正确
812596 CVV或有效期错误
812597 短息服务异常
812598 短信验证码验证次数超限,请重新发送
8125F0 支付渠道问题
8125F1 交易失败,未开通银联认证支付
8125F2 交易失败,未添加白名单
8125F3 签约失败,请稍后再试
8125F4 该卡当日失败次数超过阀值
8125F5 退款失败,没有找到成功的交易记录
8125F6 查无协议号,须要重新签约!
8125P0 交易挂起,需要确认
8125S2 需跳转页面签约
8125B0 无可用支付方式
8125B1 消费超过该商户支持限额
8125C0 MCHID不存在
8125C1 二维码已过期
8125C2 授权码相关错误
8125C3 用户支付中,需要输入密码
8125C4 XML格式错误
8125C6 签名错误
8125C7 编码格式错误
8125C8 支付帐号错误
8125C9 APPID不存在
8125D0 获取顾客账户信息失败,请刷新付款码后重新收款
8125D1 appid和mch_id不匹配
8125D2 验签失败
8125D3 post数据为空
8125D4 无效transaction_id
8125D5 分账信息校验失败
8125D6 没有权限使用该产品
8125D7 卖家信息有误
8125D8 买家信息有误
8125D9 卖家买家账号相同
8125A0 透传银行错误描述
8125A1 风控拦截
8125U0 银行无签约信息,或已解约
8125U1 pnrpay_element无签约信息,或已解约

816 前台快捷绑卡代开户接口

功能说明

使用该接口让商户在绑快捷卡时能同时完成开户操作,即开户+快捷绑卡二合一接口,暂时只支持绑定一张卡,有页面,暂且仅支持借记卡。

调用方式:页面返回

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为816
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户名 user_name 定长50位String 必须 客户用户名
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
身份证号 cert_id 定长18位String 必须 18位
借贷标记 dc_flag 定长1位String 必须 D–借记,储蓄卡 C–贷记,信用卡 S–准贷记卡
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_ mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
银行卡开户省份 card_prov 定长4位String 可选 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 可选 本次快捷绑卡待绑定的银行卡开户地区
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id
页面类型 page_type 定长2位String 可选 00:桌面端页面 10:移动端页面 不填默认桌面端
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息
职业 occupation 定长2位String 必须 个人职业分类
国籍 nationality 变长128位的String 必须 例如:中华人民共和国

个人职业分类表:

职业名称 编号   职业名称 编号
国家机关、党群机关、企事业单位负责人 01   卫生行业从业人员 08
金融业从业人员 02   IT业从业人员 09
房地产业从业人员 03   农林牧渔劳动者 10
商贸从业人员 04   生产工作、运输工作和部分体力劳动者 11
自由职业者 05   退休人员 12
科教文从业人员 06   不便分类的其他劳动者 13
制造业从业人员 07      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为816
应答返回码 resp_code 定长6位String 必须 816000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
用户账户号 acct_id 变长9位String 可选 用户账户号新开户且成功时必返
已开户标识 reg_flag 定长8位String 必须 00000000:新开户 00000001:已开户
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
绑定快捷银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
绑定取现银行卡ID cash_bind_card_id 变长20位String 可选 仅支持单张银行卡的场合,绑取现卡的绑卡ID
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
手续费金额 fee_amt 变长14位String 可选 格式为###.00
手续费子账户号 fee_acct_id 变长9位String 可选  
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "816",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026189",
       "order_id": "201572184",
       "order_date": "20170828",
       "bank_id": "01050000",
       "card_no": "6212840000000012345",
       "ret_url": "",
       "dc_flag": "0",
       "card_prov": "0031",
       "card_area": "3100",
       "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 = "816";
 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": "816",
        "resp_code": "816000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
成功响应:
200
   {
     "cmd_id": "816",
     "resp_code": "816099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

快捷绑卡代开户(cmd_id=816)  
816000 交易成功
816002 请求已受理
816003 交易失败
816099 系统异常
816100 请求参数非法
816101 商户无此接口权限
816102 验证签名失败
816103 商户状态异常
816104 用户状态异常
816107 消息类型与签名内容不一致
816108 商户客户号与签名内容不一致
816109 版本号与签名内容不一致
816110 商户号不存在
816111 用户客户号不存在
816202 交易订单号重复
816203 账户可用余额不足
816204 商户配置异常
816208 短信验证码已失效请重新获取
816210 短信验证码发送过于频繁
816211 短信验证码发送失败
816212 账户余额查询失败
816220 请求流水已存在
816300 该业务仅支持个人用户执行
816303 银行卡号与银行不匹配
816304 该银行卡非借记卡
816305 手续费收取失败
816306 用户已绑定快捷卡,请勿重复申请
816307 用户有快捷卡正在绑定中,请勿重复绑卡
816308 省份地区信息非法
816316 手机号与已绑定卡记录不匹配
816323 此卡已绑定,请勿重复申请
816326 该商户不支持贷记卡
816744 信息更新异常
816502 系统未开放或暂时关闭,请稍后再试
816503 交易通讯超时,请发起查询交易
816504 交易状态未明,请查询对账结果
816505 重复签约
816506 交易失败,详情查看银行返回信息
816507 验卡失败,具体问题参见对应银行认证失败原因
816508 交易处理中(撤销)
816510 订单信息为空
816511 订单信息有误
816512 重复交易
816513 交易失败,订单已超时!
816514 批量文件格式错误
816519 订单系统错误
816520 持卡人信息为空
816521 持卡人信息有误
816522 持卡人系统错误
816523 卡信息为空
816524 卡信息有误
816525 卡系统错误
816526 卡系统错误
816529 业务受限
816530 业务系统信息为空
816531 业务系统信息有误
816532 业务系统错误
816533 金额超限
816534 查无此交易
816535 网关不支持签约交易
816536 与原交易信息不符
816537 已超过最大查询次数或操作过于频繁
816538 风险受限
816539 网关不支持解约交易!
816540 授权码为空
816541 批量状态不正确,无法下载
816542 扣款成功但交易超过规定支付时间
816543 二级商户号为空
816544 商品描述为空
816545 支付类型为空
816546 交易类型为空
816547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
816548 微信公众号支付subOpenId不能为空
816549 无签约记录
816550 账户信息有误
816551 交易金额低于下限
816552 交易失败,未在我方进行实名认证或认证不通过
816553 二级商户名为空!
816554 入驻类型为空或值不对!
816555 商户入驻信息不匹配!
816556 商户入驻失败!
816557 银行卡类型不支持
816558 认证失败
816559 交易次数超限
816560 交易失败,请联系发卡银行
816561 对不起,您所输的银行卡号有误,请核实后再试!
816562 交易失败,发卡银行不支持该商户,请更换其他银行卡
816563 卡状态不正确
816564 银行卡余额不足
816565 卡信息或银行预留手机号有误
816566 短信验证码已过期
816567 密码输入次数超限
816568 您的银行卡暂不支持该业务
816571 对不起,你所输的验证码有误,请核实后再试!
816572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
816573 对不起,您所输的户名有误,请核实后再试!
816574 对不起,您的证件类型有误,请核实后再试!
816575 对不起,您的所输证件号码有误,请核实后再试!
816576 对不起,您所输的手机号码有误,,请核实后再试!
816577 验证码发送失败
816578 验证码超限或超时
816579 对不起,您的用户信息未通过银行验证,请核实后再试!
816580 银行卡状态异常
816581 支付失败,请稍后再试
816582 退款失败,请稍后再试
816583 余额不足次数超限,请隔日再试
816584 单笔金额超限
816585 单日金额超限
816586 单月金额超限
816587 订单信息重复
816588 支付订单信息有误
816589 退款失败,退款金额与订单金额不符
816590 交易失败,参数不合法
816591 系统异常
816592 交易失败,银行系统繁忙,请稍后再试
816593 系统超时
816594 银行处理中,请稍后再试
816595 短信验证码不正确
816596 CVV或有效期错误
816597 短息服务异常
816598 短信验证码验证次数超限,请重新发送
8165F0 支付渠道问题
8165F1 交易失败,未开通银联认证支付
8165F2 交易失败,未添加白名单
8165F3 签约失败,请稍后再试
8165F4 该卡当日失败次数超过阀值
8165F5 退款失败,没有找到成功的交易记录
8165F6 查无协议号,须要重新签约!
8165P0 交易挂起,需要确认
8165S2 需跳转页面签约
8165B0 无可用支付方式
8165B1 消费超过该商户支持限额
8165C0 MCHID不存在
8165C1 二维码已过期
8165C2 授权码相关错误
8165C3 用户支付中,需要输入密码
8165C4 XML格式错误
8165C6 签名错误
8165C7 编码格式错误
8165C8 支付帐号错误
8165C9 APPID不存在
8165D0 获取顾客账户信息失败,请刷新付款码后重新收款
8165D1 appid和mch_id不匹配
8165D2 验签失败
8165D3 post数据为空
8165D4 无效transaction_id
8165D5 分账信息校验失败
8165D6 没有权限使用该产品
8165D7 卖家信息有误
8165D8 买家信息有误
8165D9 卖家买家账号相同
8165A0 透传银行错误描述
8165A1 风控拦截
8165U0 银行无签约信息,或已解约
8165U1 pnrpay_element无签约信息,或已解约

112 快捷支付短信发送接口

功能说明

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

  • 该接口订单号order_id需与201快捷支付接口订单号order_id一致。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给商户平台自己,可通过上线邮件中查找商户客户号和子账号信息
商户后台应答地址 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 可选 不能包含特殊字符:<>&’”|%#\^-
设备信息 dev_info_json 变长1024位的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 快捷支付接口

功能说明

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

  • 112快捷支付短信发送接口的订单号order_id需与201快捷支付接口订单号order_id一致。
  • 用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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 必须 该参数表示分账对象,将金额分给不同用户的账户中;分账串定义可参照下表
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给商户平台自己,可通过上线邮件中查找商户客户号和子账号信息
页面返回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 变长1024位String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  

分账账户串(div_detail )内容:

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

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 固定为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 充值手续费账户状态不正常
201502 系统未开放或暂时关闭,请稍后再试
201503 交易通讯超时,请发起查询交易
201504 交易状态未明,请查询对账结果
201505 重复签约
201506 交易失败,详情查看银行返回信息
201507 验卡失败,具体问题参见对应银行认证失败原因
201508 交易处理中(撤销)
201510 订单信息为空
201511 订单信息有误
201512 重复交易
201513 交易失败,订单已超时!
201514 批量文件格式错误
201519 订单系统错误
201520 持卡人信息为空
201521 持卡人信息有误
201522 持卡人系统错误
201523 卡信息为空
201524 卡信息有误
201525 卡系统错误
201526 卡系统错误
201529 业务受限
201530 业务系统信息为空
201531 业务系统信息有误
201532 业务系统错误
201533 金额超限
201534 查无此交易
201535 网关不支持签约交易
201536 与原交易信息不符
201537 已超过最大查询次数或操作过于频繁
201538 风险受限
201539 网关不支持解约交易!
201540 授权码为空
201541 批量状态不正确,无法下载
201542 扣款成功但交易超过规定支付时间
201543 二级商户号为空
201544 商品描述为空
201545 支付类型为空
201546 交易类型为空
201547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
201548 微信公众号支付subOpenId不能为空
201549 无签约记录
201550 账户信息有误
201551 交易金额低于下限
201552 交易失败,未在我方进行实名认证或认证不通过
201553 二级商户名为空!
201554 入驻类型为空或值不对!
201555 商户入驻信息不匹配!
201556 商户入驻失败!
201557 银行卡类型不支持
201558 认证失败
201559 交易次数超限
201560 交易失败,请联系发卡银行
201561 对不起,您所输的银行卡号有误,请核实后再试!
201562 交易失败,发卡银行不支持该商户,请更换其他银行卡
201563 卡状态不正确
201564 银行卡余额不足
201565 卡信息或银行预留手机号有误
201566 短信验证码已过期
201567 密码输入次数超限
201568 您的银行卡暂不支持该业务
201571 对不起,你所输的验证码有误,请核实后再试!
201572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
201573 对不起,您所输的户名有误,请核实后再试!
201574 对不起,您的证件类型有误,请核实后再试!
201575 对不起,您的所输证件号码有误,请核实后再试!
201576 对不起,您所输的手机号码有误,,请核实后再试!
201577 验证码发送失败
201578 验证码超限或超时
201579 对不起,您的用户信息未通过银行验证,请核实后再试!
201580 银行卡状态异常
201581 支付失败,请稍后再试
201582 退款失败,请稍后再试
201583 余额不足次数超限,请隔日再试
201584 单笔金额超限
201585 单日金额超限
201586 单月金额超限
201587 订单信息重复
201588 支付订单信息有误
201589 退款失败,退款金额与订单金额不符
201590 交易失败,参数不合法
201591 系统异常
201592 交易失败,银行系统繁忙,请稍后再试
201593 系统超时
201594 银行处理中,请稍后再试
201595 短信验证码不正确
201596 CVV或有效期错误
201597 短息服务异常
201598 短信验证码验证次数超限,请重新发送
2015F0 支付渠道问题
2015F1 交易失败,未开通银联认证支付
2015F2 交易失败,未添加白名单
2015F3 签约失败,请稍后再试
2015F4 该卡当日失败次数超过阀值
2015F5 退款失败,没有找到成功的交易记录
2015F6 查无协议号,须要重新签约!
2015P0 交易挂起,需要确认
2015S2 需跳转页面签约
2015B0 无可用支付方式
2015B1 消费超过该商户支持限额
2015C0 MCHID不存在
2015C1 二维码已过期
2015C2 授权码相关错误
2015C3 用户支付中,需要输入密码
2015C4 XML格式错误
2015C6 签名错误
2015C7 编码格式错误
2015C8 支付帐号错误
2015C9 APPID不存在
2015D0 获取顾客账户信息失败,请刷新付款码后重新收款
2015D1 appid和mch_id不匹配
2015D2 验签失败
2015D3 post数据为空
2015D4 无效transaction_id
2015D5 分账信息校验失败
2015D6 没有权限使用该产品
2015D7 卖家信息有误
2015D8 买家信息有误
2015D9 卖家买家账号相同
2015A0 透传银行错误描述
2015A1 风控拦截
2015U0 银行无签约信息,或已解约
2015U1 pnrpay_element无签约信息,或已解约
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",
     .......
   }

页面展示

206 快捷支付( WEB 版)接口

功能说明

跳转到汇付 WEB 页面,进行开户(如未开户),绑卡和快捷支付,或用已绑银行卡直接进行快捷支付。即开户+快捷绑卡+快捷支付三合一接口(有页面,适合PC端)。

调用方式:页面浏览器

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

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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 可选 div_detail和下方的(in_cust_id,in_acct_id)两者必填一项,且只能填一项;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填,in_cust_id表示入账的用户客户号,即开户接口返回的user_cust_id
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填,in_acct_id表示入账的用户账户号,即开户接口返回的acct_id
设备号 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 变长1024位String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
职业 occupation 定长2位String 必须 个人职业分类
国籍 nationality 变长128位String 必须 例如:中华人民共和国

分账账户串(div_detail )内容:

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

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

个人职业分类表:

职业名称 编号   职业名称 编号
国家机关、党群机关、企事业单位负责人 01   卫生行业从业人员 08
金融业从业人员 02   IT业从业人员 09
房地产业从业人员 03   农林牧渔劳动者 10
商贸从业人员 04   生产工作、运输工作和部分体力劳动者 11
自由职业者 05   退休人员 12
科教文从业人员 06   不便分类的其他劳动者 13
制造业从业人员 07      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 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 银行卡号与银行、卡类型信息不匹配
206502 系统未开放或暂时关闭,请稍后再试
206503 交易通讯超时,请发起查询交易
206504 交易状态未明,请查询对账结果
206505 重复签约
206506 交易失败,详情查看银行返回信息
206507 验卡失败,具体问题参见对应银行认证失败原因
206508 交易处理中(撤销)
206510 订单信息为空
206511 订单信息有误
206512 重复交易
206513 交易失败,订单已超时!
206514 批量文件格式错误
206519 订单系统错误
206520 持卡人信息为空
206521 持卡人信息有误
206522 持卡人系统错误
206523 卡信息为空
206524 卡信息有误
206525 卡系统错误
206526 卡系统错误
206529 业务受限
206530 业务系统信息为空
206531 业务系统信息有误
206532 业务系统错误
206533 金额超限
206534 查无此交易
206535 网关不支持签约交易
206536 与原交易信息不符
206537 已超过最大查询次数或操作过于频繁
206538 风险受限
206539 网关不支持解约交易!
206540 授权码为空
206541 批量状态不正确,无法下载
206542 扣款成功但交易超过规定支付时间
206543 二级商户号为空
206544 商品描述为空
206545 支付类型为空
206546 交易类型为空
206547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
206548 微信公众号支付subOpenId不能为空
206549 无签约记录
206550 账户信息有误
206551 交易金额低于下限
206552 交易失败,未在我方进行实名认证或认证不通过
206553 二级商户名为空!
206554 入驻类型为空或值不对!
206555 商户入驻信息不匹配!
206556 商户入驻失败!
206557 银行卡类型不支持
206558 认证失败
206559 交易次数超限
206560 交易失败,请联系发卡银行
206561 对不起,您所输的银行卡号有误,请核实后再试!
206562 交易失败,发卡银行不支持该商户,请更换其他银行卡
206563 卡状态不正确
206564 银行卡余额不足
206565 卡信息或银行预留手机号有误
206566 短信验证码已过期
206567 密码输入次数超限
206568 您的银行卡暂不支持该业务
206571 对不起,你所输的验证码有误,请核实后再试!
206572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
206573 对不起,您所输的户名有误,请核实后再试!
206574 对不起,您的证件类型有误,请核实后再试!
206575 对不起,您的所输证件号码有误,请核实后再试!
206576 对不起,您所输的手机号码有误,,请核实后再试!
206577 验证码发送失败
206578 验证码超限或超时
206579 对不起,您的用户信息未通过银行验证,请核实后再试!
206580 银行卡状态异常
206581 支付失败,请稍后再试
206582 退款失败,请稍后再试
206583 余额不足次数超限,请隔日再试
206584 单笔金额超限
206585 单日金额超限
206586 单月金额超限
206587 订单信息重复
206588 支付订单信息有误
206589 退款失败,退款金额与订单金额不符
206590 交易失败,参数不合法
206591 系统异常
206592 交易失败,银行系统繁忙,请稍后再试
206593 系统超时
206594 银行处理中,请稍后再试
206595 短信验证码不正确
206596 CVV或有效期错误
206597 短息服务异常
206598 短信验证码验证次数超限,请重新发送
2065F0 支付渠道问题
2065F1 交易失败,未开通银联认证支付
2065F2 交易失败,未添加白名单
2065F3 签约失败,请稍后再试
2065F4 该卡当日失败次数超过阀值
2065F5 退款失败,没有找到成功的交易记录
2065F6 查无协议号,须要重新签约!
2065P0 交易挂起,需要确认
2065S2 需跳转页面签约
2065B0 无可用支付方式
2065B1 消费超过该商户支持限额
2065C0 MCHID不存在
2065C1 二维码已过期
2065C2 授权码相关错误
2065C3 用户支付中,需要输入密码
2065C4 XML格式错误
2065C6 签名错误
2065C7 编码格式错误
2065C8 支付帐号错误
2065C9 APPID不存在
2065D0 获取顾客账户信息失败,请刷新付款码后重新收款
2065D1 appid和mch_id不匹配
2065D2 验签失败
2065D3 post数据为空
2065D4 无效transaction_id
2065D5 分账信息校验失败
2065D6 没有权限使用该产品
2065D7 卖家信息有误
2065D8 买家信息有误
2065D9 卖家买家账号相同
2065A0 透传银行错误描述
2065A1 风控拦截
2065U0 银行无签约信息,或已解约
2065U1 pnrpay_element无签约信息,或已解约
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

208 快捷支付( APP 版)接口

功能说明

跳转到汇付 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 可选 div_detail和下方的(in_cust_id,in_acct_id)两者必填一项,且只能填一项;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填,in_cust_id表示入账的用户客户号,即开户接口返回的user_cust_id
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填,in_acct_id表示入账的用户账户号,即开户接口返回的acct_id
设备号 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 变长1024位的String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
职业 occupation 定长2位String 必须 个人职业分类
国籍 nationality 变长128位String 必须 例如:中华人民共和国

分账账户串(div_detail )内容:

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

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

个人职业分类表:

职业名称 编号   职业名称 编号
国家机关、党群机关、企事业单位负责人 01   卫生行业从业人员 08
金融业从业人员 02   IT业从业人员 09
房地产业从业人员 03   农林牧渔劳动者 10
商贸从业人员 04   生产工作、运输工作和部分体力劳动者 11
自由职业者 05   退休人员 12
科教文从业人员 06   不便分类的其他劳动者 13
制造业从业人员 07      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 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 银行卡号与银行、卡类型信息不匹配
208502 系统未开放或暂时关闭,请稍后再试
208503 交易通讯超时,请发起查询交易
208504 交易状态未明,请查询对账结果
208505 重复签约
208506 交易失败,详情查看银行返回信息
208507 验卡失败,具体问题参见对应银行认证失败原因
208508 交易处理中(撤销)
208510 订单信息为空
208511 订单信息有误
208512 重复交易
208513 交易失败,订单已超时!
208514 批量文件格式错误
208519 订单系统错误
208520 持卡人信息为空
208521 持卡人信息有误
208522 持卡人系统错误
208523 卡信息为空
208524 卡信息有误
208525 卡系统错误
208526 卡系统错误
208529 业务受限
208530 业务系统信息为空
208531 业务系统信息有误
208532 业务系统错误
208533 金额超限
208534 查无此交易
208535 网关不支持签约交易
208536 与原交易信息不符
208537 已超过最大查询次数或操作过于频繁
208538 风险受限
208539 网关不支持解约交易!
208540 授权码为空
208541 批量状态不正确,无法下载
208542 扣款成功但交易超过规定支付时间
208543 二级商户号为空
208544 商品描述为空
208545 支付类型为空
208546 交易类型为空
208547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
208548 微信公众号支付subOpenId不能为空
208549 无签约记录
208550 账户信息有误
208551 交易金额低于下限
208552 交易失败,未在我方进行实名认证或认证不通过
208553 二级商户名为空!
208554 入驻类型为空或值不对!
208555 商户入驻信息不匹配!
208556 商户入驻失败!
208557 银行卡类型不支持
208558 认证失败
208559 交易次数超限
208560 交易失败,请联系发卡银行
208561 对不起,您所输的银行卡号有误,请核实后再试!
208562 交易失败,发卡银行不支持该商户,请更换其他银行卡
208563 卡状态不正确
208564 银行卡余额不足
208565 卡信息或银行预留手机号有误
208566 短信验证码已过期
208567 密码输入次数超限
208568 您的银行卡暂不支持该业务
208571 对不起,你所输的验证码有误,请核实后再试!
208572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
208573 对不起,您所输的户名有误,请核实后再试!
208574 对不起,您的证件类型有误,请核实后再试!
208575 对不起,您的所输证件号码有误,请核实后再试!
208576 对不起,您所输的手机号码有误,,请核实后再试!
208577 验证码发送失败
208578 验证码超限或超时
208579 对不起,您的用户信息未通过银行验证,请核实后再试!
208580 银行卡状态异常
208581 支付失败,请稍后再试
208582 退款失败,请稍后再试
208583 余额不足次数超限,请隔日再试
208584 单笔金额超限
208585 单日金额超限
208586 单月金额超限
208587 订单信息重复
208588 支付订单信息有误
208589 退款失败,退款金额与订单金额不符
208590 交易失败,参数不合法
208591 系统异常
208592 交易失败,银行系统繁忙,请稍后再试
208593 系统超时
208594 银行处理中,请稍后再试
208595 短信验证码不正确
208596 CVV或有效期错误
208597 短息服务异常
208598 短信验证码验证次数超限,请重新发送
2085F0 支付渠道问题
2085F1 交易失败,未开通银联认证支付
2085F2 交易失败,未添加白名单
2085F3 签约失败,请稍后再试
2085F4 该卡当日失败次数超过阀值
2085F5 退款失败,没有找到成功的交易记录
2085F6 查无协议号,须要重新签约!
2085P0 交易挂起,需要确认
2085S2 需跳转页面签约
2085B0 无可用支付方式
2085B1 消费超过该商户支持限额
2085C0 MCHID不存在
2085C1 二维码已过期
2085C2 授权码相关错误
2085C3 用户支付中,需要输入密码
2085C4 XML格式错误
2085C6 签名错误
2085C7 编码格式错误
2085C8 支付帐号错误
2085C9 APPID不存在
2085D0 获取顾客账户信息失败,请刷新付款码后重新收款
2085D1 appid和mch_id不匹配
2085D2 验签失败
2085D3 post数据为空
2085D4 无效transaction_id
2085D5 分账信息校验失败
2085D6 没有权限使用该产品
2085D7 卖家信息有误
2085D8 买家信息有误
2085D9 卖家买家账号相同
2085A0 透传银行错误描述
2085A1 风控拦截
2085U0 银行无签约信息,或已解约
2085U1 pnrpay_element无签约信息,或已解约
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

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

功能说明

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

  • 该接口订单号order_id需与217接口订单号order_id一致。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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 可选 div_detail和下方的(in_cust_id,in_acct_id)两者必填一项,且只能填一项;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填,in_cust_id表示入账的用户客户号,即开户接口返回的user_cust_id
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填,in_acct_id表示入账的用户账户号,即开户接口返回的acct_id
银行卡号 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 可选 不能包含特殊字符:<>&’”|%#\^-
行业类型 tm_type 定长4位的String 可选 0100:住宿;0200:餐饮;0300:电器;0400:服饰;0500:旅游;0600:珠宝;0700:汽车服务;0800:美容养生;0900:酒吧,夜总会;1000:数码电脑;1100:美妆护肤;1200:百货;1300:家装建材;
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息
服务费 gua_service_amt 变长14位的String 可选  
增值服务 value_added_service 定长2位的String 可选 01-优选路由
备注1 remark1 定长2位String 可选 参考说明
备注2 remark2 定长6位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 可选 用于扩展请求参数
服务费 gua_service_amt 变长14位的String 可选  
增值服务 value_added_service 定长2位的String 可选 01-优选路由
备注1 remark1 定长2位String 可选 参考说明
备注2 remark2 定长6位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 快捷支付统合版支付

功能说明

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

  • 有页面,该接口订单号order_id需与216接口订单号order_id一致。
  • 用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
请求类型 request_type 定长2位String 必须 00 : PC端 01 : 移动端
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
扩展域 extension 变长512位的String 可选 用于扩展请求参数。如果传入的 extension 是 json 格式且 key 的关键字等于 agentInfo,那么传入的代理商信息会进行风控校验,代理商内容示例:{“agentInfo”:{“agent1Id”:”1111”,”agent1Name”:”1级代理商”,”agent2Id”:”2222”,”agent2Name”:”2级代理商”,”agent3Id”:”3333”,”agent3Name”:”3级代理商”,”agent4Id”:”4444”,”agent4Name”:”4级代理商”,”agent5Id”:”5555”,”agent5Name”:”5级代理商”}}
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位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 可选 手续费扣款子账户号
服务费 gua_service_amt 变长14位的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 支付手续费只能向商户收取
217502 系统未开放或暂时关闭,请稍后再试
217503 交易通讯超时,请发起查询交易
217504 交易状态未明,请查询对账结果
217505 重复签约
217506 交易失败,详情查看银行返回信息
217507 验卡失败,具体问题参见对应银行认证失败原因
217508 交易处理中(撤销)
217510 订单信息为空
217511 订单信息有误
217512 重复交易
217513 交易失败,订单已超时!
217514 批量文件格式错误
217519 订单系统错误
217520 持卡人信息为空
217521 持卡人信息有误
217522 持卡人系统错误
217523 卡信息为空
217524 卡信息有误
217525 卡系统错误
217526 卡系统错误
217529 业务受限
217530 业务系统信息为空
217531 业务系统信息有误
217532 业务系统错误
217533 金额超限
217534 查无此交易
217535 网关不支持签约交易
217536 与原交易信息不符
217537 已超过最大查询次数或操作过于频繁
217538 风险受限
217539 网关不支持解约交易!
217540 授权码为空
217541 批量状态不正确,无法下载
217542 扣款成功但交易超过规定支付时间
217543 二级商户号为空
217544 商品描述为空
217545 支付类型为空
217546 交易类型为空
217547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
217548 微信公众号支付subOpenId不能为空
217549 无签约记录
217550 账户信息有误
217551 交易金额低于下限
217552 交易失败,未在我方进行实名认证或认证不通过
217553 二级商户名为空!
217554 入驻类型为空或值不对!
217555 商户入驻信息不匹配!
217556 商户入驻失败!
217557 银行卡类型不支持
217558 认证失败
217559 交易次数超限
217560 交易失败,请联系发卡银行
217561 对不起,您所输的银行卡号有误,请核实后再试!
217562 交易失败,发卡银行不支持该商户,请更换其他银行卡
217563 卡状态不正确
217564 银行卡余额不足
217565 卡信息或银行预留手机号有误
217566 短信验证码已过期
217567 密码输入次数超限
217568 您的银行卡暂不支持该业务
217571 对不起,你所输的验证码有误,请核实后再试!
217572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
217573 对不起,您所输的户名有误,请核实后再试!
217574 对不起,您的证件类型有误,请核实后再试!
217575 对不起,您的所输证件号码有误,请核实后再试!
217576 对不起,您所输的手机号码有误,,请核实后再试!
217577 验证码发送失败
217578 验证码超限或超时
217579 对不起,您的用户信息未通过银行验证,请核实后再试!
217580 银行卡状态异常
217581 支付失败,请稍后再试
217582 退款失败,请稍后再试
217583 余额不足次数超限,请隔日再试
217584 单笔金额超限
217585 单日金额超限
217586 单月金额超限
217587 订单信息重复
217588 支付订单信息有误
217589 退款失败,退款金额与订单金额不符
217590 交易失败,参数不合法
217591 系统异常
217592 交易失败,银行系统繁忙,请稍后再试
217593 系统超时
217594 银行处理中,请稍后再试
217595 短信验证码不正确
217596 CVV或有效期错误
217597 短息服务异常
217598 短信验证码验证次数超限,请重新发送
2175F0 支付渠道问题
2175F1 交易失败,未开通银联认证支付
2175F2 交易失败,未添加白名单
2175F3 签约失败,请稍后再试
2175F4 该卡当日失败次数超过阀值
2175F5 退款失败,没有找到成功的交易记录
2175F6 查无协议号,须要重新签约!
2175P0 交易挂起,需要确认
2175S2 需跳转页面签约
2175B0 无可用支付方式
2175B1 消费超过该商户支持限额
2175C0 MCHID不存在
2175C1 二维码已过期
2175C2 授权码相关错误
2175C3 用户支付中,需要输入密码
2175C4 XML格式错误
2175C6 签名错误
2175C7 编码格式错误
2175C8 支付帐号错误
2175C9 APPID不存在
2175D0 获取顾客账户信息失败,请刷新付款码后重新收款
2175D1 appid和mch_id不匹配
2175D2 验签失败
2175D3 post数据为空
2175D4 无效transaction_id
2175D5 分账信息校验失败
2175D6 没有权限使用该产品
2175D7 卖家信息有误
2175D8 买家信息有误
2175D9 卖家买家账号相同
2175A0 透传银行错误描述
2175A1 风控拦截
2175U0 银行无签约信息,或已解约
2175U1 pnrpay_element无签约信息,或已解约
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",
      .......
    }

850 快捷支付后台版

功能说明

快捷支付是从用户事先绑定好的银行卡里,扣取订单金额到指定的账户。

  • 该接口需调用两次,第一次调用时,step_flag传01获取验证码(四要素验证通过的情况下才会发短信,验证不通过则不会发送验证码),获取验证码后第二次调用该接口,step_flag传02验证短信并确认支付。前后两次订单号不要一样,但是biz_trans_id必须一致。仅支持借记卡。
  • 纯后台API接口,无页面。
  • 用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 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 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人 ;开户接口返回的user_cust_id
入账账户号 in_acct_id 变长9位String 可选 开户接口返回的acct_id
分账账户串 div_detail 变长String 可选 业务类型为支付时必传,分账串使用UTF-8字符集URLEncode编码后传入;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL中请不要包含特殊字符 2) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见4.2.13.二级商户号录入接口
交易场景 trans_scene 定长3位 可选 不需要
交易场景小类 trans_scene_sub 定长6位 可选 不需要
二级商户号 secondary_merid 变长12位 String 可选  
短信验证码 sms_code 定长6位String 可选 与快捷绑卡时的银行预留手机号对应的短信验证码(注:测试环境不会发验证码,默认6个1)
代扣签约流水 sign_seq_id 变长18位String 可选 代扣签约订单唯一标识,代扣充值必传,其他充值不需传 不需要
银行卡号 card_no 变长32位String 可选 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡
阶段标志 step_flag 定长2位String 必须 01:短信发送 : 02:快捷支付
业务请求流水 biz_trans_id 变长20位String 必须 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母充值类型为二段式快捷时必填 与一阶段保持不变
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
对手方交易IP user_ip_addr 变长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 理财账户不允许进行支付,分账和作为手续费!
850502 系统未开放或暂时关闭,请稍后再试
850503 交易通讯超时,请发起查询交易
850504 交易状态未明,请查询对账结果
850505 重复签约
850506 交易失败,详情查看银行返回信息
850507 验卡失败,具体问题参见对应银行认证失败原因
850508 交易处理中(撤销)
850510 订单信息为空
850511 订单信息有误
850512 重复交易
850513 交易失败,订单已超时!
850514 批量文件格式错误
850519 订单系统错误
850520 持卡人信息为空
850521 持卡人信息有误
850522 持卡人系统错误
850523 卡信息为空
850524 卡信息有误
850525 卡系统错误
850526 卡系统错误
850529 业务受限
850530 业务系统信息为空
850531 业务系统信息有误
850532 业务系统错误
850533 金额超限
850534 查无此交易
850535 网关不支持签约交易
850536 与原交易信息不符
850537 已超过最大查询次数或操作过于频繁
850538 风险受限
850539 网关不支持解约交易!
850540 授权码为空
850541 批量状态不正确,无法下载
850542 扣款成功但交易超过规定支付时间
850543 二级商户号为空
850544 商品描述为空
850545 支付类型为空
850546 交易类型为空
850547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
850548 微信公众号支付subOpenId不能为空
850549 无签约记录
850550 账户信息有误
850551 交易金额低于下限
850552 交易失败,未在我方进行实名认证或认证不通过
850553 二级商户名为空!
850554 入驻类型为空或值不对!
850555 商户入驻信息不匹配!
850556 商户入驻失败!
850557 银行卡类型不支持
850558 认证失败
850559 交易次数超限
850560 交易失败,请联系发卡银行
850561 对不起,您所输的银行卡号有误,请核实后再试!
850562 交易失败,发卡银行不支持该商户,请更换其他银行卡
850563 卡状态不正确
850564 银行卡余额不足
850565 卡信息或银行预留手机号有误
850566 短信验证码已过期
850567 密码输入次数超限
850568 您的银行卡暂不支持该业务
850571 对不起,你所输的验证码有误,请核实后再试!
850572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
850573 对不起,您所输的户名有误,请核实后再试!
850574 对不起,您的证件类型有误,请核实后再试!
850575 对不起,您的所输证件号码有误,请核实后再试!
850576 对不起,您所输的手机号码有误,,请核实后再试!
850577 验证码发送失败
850578 验证码超限或超时
850579 对不起,您的用户信息未通过银行验证,请核实后再试!
850580 银行卡状态异常
850581 支付失败,请稍后再试
850582 退款失败,请稍后再试
850583 余额不足次数超限,请隔日再试
850584 单笔金额超限
850585 单日金额超限
850586 单月金额超限
850587 订单信息重复
850588 支付订单信息有误
850589 退款失败,退款金额与订单金额不符
850590 交易失败,参数不合法
850591 系统异常
850592 交易失败,银行系统繁忙,请稍后再试
850593 系统超时
850594 银行处理中,请稍后再试
850595 短信验证码不正确
850596 CVV或有效期错误
850597 短息服务异常
850598 短信验证码验证次数超限,请重新发送
8505F0 支付渠道问题
8505F1 交易失败,未开通银联认证支付
8505F2 交易失败,未添加白名单
8505F3 签约失败,请稍后再试
8505F4 该卡当日失败次数超过阀值
8505F5 退款失败,没有找到成功的交易记录
8505F6 查无协议号,须要重新签约!
8505P0 交易挂起,需要确认
8505S2 需跳转页面签约
8505B0 无可用支付方式
8505B1 消费超过该商户支持限额
8505C0 MCHID不存在
8505C1 二维码已过期
8505C2 授权码相关错误
8505C3 用户支付中,需要输入密码
8505C4 XML格式错误
8505C6 签名错误
8505C7 编码格式错误
8505C8 支付帐号错误
8505C9 APPID不存在
8505D0 获取顾客账户信息失败,请刷新付款码后重新收款
8505D1 appid和mch_id不匹配
8505D2 验签失败
8505D3 post数据为空
8505D4 无效transaction_id
8505D5 分账信息校验失败
8505D6 没有权限使用该产品
8505D7 卖家信息有误
8505D8 买家信息有误
8505D9 卖家买家账号相同
8505A0 透传银行错误描述
8505A1 风控拦截
8505U0 银行无签约信息,或已解约
8505U1 pnrpay_element无签约信息,或已解约
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",
     .......
   }

110 短信发送接口

功能说明

1、用于解绑快捷卡和代扣卡前的短信发送(非必须),解绑银行卡时也可根据实际场景决定是否需要该接口。2、用于228银联新快捷支付接口前短信发送。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为110
商户客户号 mer_cust_id 定长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20160307
业务类型 business_type 定长3位的String 必须 用户注册-B01,绑定取现卡-B02,找回登录密码-B03,找回支付密码-B04,解绑银行卡—105,银联新快捷—228
用户手机号 user_mobile 定长11位String 必须 待接收短信验证码的手机号

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为110
返回码 resp_code 定长6位String 必须 110000–调用成功,其他见返回码表
结果描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20160307
业务类型 business_type 定长3位的String 必须 解绑银行卡—105,银联新快捷—228
用户手机号 user_mobile 定长11位String 必须 待接收短信验证码的手机号

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "110",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026170",
       "order_id": "11010510",
       "order_date": "20180327",
       "business_type": "105",
       "user_mobile": "13666666661"
       }";

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

返回码

返回码 返回描述
110000 交易成功
110098 系统超时
110099 系统异常
110100 请求参数非法
110101 商户无此接口权限
110102 验证签名失败
110103 商户状态异常
110104 用户状态异常
110107 消息类型与签名内容不一致
110108 商户客户号与签名内容不一致
110109 版本号与签名内容不一致
110110 商户号不存在
110111 用户客户号不存在
110202 交易订单号重复
110210 短信验证码发送过于频繁
110211 短信验证码发送失败

128 短信验证接口

功能说明

配合110短信发送接口,验证110发送的短信验证码。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为128
商户客户号 mer_cust_id 定长16位的String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20160307
业务类型 business_type 定长3位的String 必须 用户注册-B01,绑定取现卡-B02,找回登录密码-B03,找回支付密码-B04,解绑银行卡—105
用户手机号 user_mobile 定长11位String 必须 待接收短信验证码的手机号
短信验证码 sms_code 定长6位String 必须 用于验证短信是否正确

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为128
返回码 resp_code 定长6位String 必须 128000–调用成功,其他见返回码表
结果描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位的String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位的String 必须 格式为YYYYMMDD,例如:20160307
业务类型 business_type 定长3位的String 必须 用户注册-B01,绑定取现卡-B02,找回登录密码-B03,找回支付密码-B04,解绑银行卡—105
用户手机号 user_mobile 定长11位String 必须 待接收短信验证码的手机号

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "128",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026170",
       "order_id": "12810510",
       "order_date": "20180327",
       "business_type": "105",
       "sms_code": "111111",
       "user_mobile": "13666666661"
       }";

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

返回码

返回码 返回描述
128000 交易成功
128098 系统超时
128099 系统异常
128100 请求参数非法
128101 商户无此接口权限
128102 验证签名失败
128103 商户状态异常
128104 用户状态异常
128107 消息类型与签名内容不一致
128108 商户客户号与签名内容不一致
128109 版本号与签名内容不一致
128110 商户号不存在
128111 用户客户号不存在
128202 交易订单号重复
128205 短信验证码验证失败
128206 短信验证码发送手机号与验证手机号不一致
128207 短信验证码或短信唯一标识为空
128208 短信验证码已失效请重新获取

105 银行卡解绑接口

功能说明

用于解绑快捷、代扣或取现卡,解绑前可以调用110短信发送接口(非必须),解绑时就会校验手机验证码。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本 version 固定2位String 必须 目前固定为10
消息类型 cmd_id 固定3位String 必须 每一种消息类型代表一种交易,此处为105
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
银行代码 bank_id 定长8位String 必须 具体见附件二:快捷支付支持银行列表
银行卡绑定ID card_id 变长20位String 可选 签约绑卡接口返回的绑卡ID,银行卡绑定ID与银行卡号不能同时为空
银行卡号 card_no 定长32位String 可选 银行卡预留手机号,银行卡绑定ID与银行卡号不能同时为空
银行卡预留手机号 card_mobile 定长11位String 可选 解绑快捷和代扣时,银行卡预留手机号必填
卡业务类型 card_buss_type 固定1位String 必须 0:取现,1:代扣,2:快捷,3:解绑取现、代扣和快捷
短信验证码日期 sms_order_date 定长8位String 可选 与sms_code对应的验证码发送订单日期
短信验证码订单号 sms_order_id 变长20位String 可选 与sms_code对应的验证码发送订单号
短信验证码 sms_code 定长6位String 可选 传短信验证码时,会校验验证码是否正确
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知商户解绑结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位String 可选 用于扩展请求参数
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为105
应答返回码 resp_code 定长6位的String 必须  
应答描述 resp_desc 变长String 必须  
商户客户号 mer_cust_id 定长16位的String 必须 商户唯一标识,由汇付生成
用户客户号 user_cust_id 定长16位的String 必须 用户唯一标识,由汇付生成
订单号 order_id 变长20位String 必须  
订单日期 order_date 定长8位String 必须 格式为“yyyyMMdd”
银行代码 bank_id 定长8位String 必须  
银行卡绑定ID card_id 变长20位String 可选 银行卡绑定ID
银行卡号 card_no 定长32位String 可选 银行卡预留手机号,银行卡绑定ID与银行卡号不能同时为空
卡业务类型 cardBussType 固定1位String 可选 0:取现,1:代扣,2:快捷
银行卡预留手机号 card_mobile 定长11位String 可选 银行卡预留手机号
短信验证码日期 sms_order_date 定长8位String 可选 与sms_code对应的验证码发送订单日期
短信验证码订单号 sms_order_id 变长20位String 可选 与sms_code对应的验证码发送订单号
短信验证码 sms_code 定长6位String 可选 短信验证码
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户解绑结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "105",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026170",
       "order_id": "2000008699212",
       "order_date": "20180327",
       "bank_id": "01020000",
       "card_id": "1000000093",
       "card_mobile": "13666666661",
       "card_buss_type": "2",
       "sms_order_date": "20180327",
       "sms_order_id": "11010510",
       "sms_code": "111111",
       "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 = "105";
 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": "105",
        "resp_code": "105000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "105",
     "resp_code": "105304",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
105000 交易成功
105098 系统超时
105099 系统异常
105100 请求参数非法
105101 商户无此接口权限
105102 验证签名失败
105103 商户状态异常
105104 用户状态异常
105107 消息类型与签名内容不一致
105108 商户客户号与签名内容不一致
105109 版本号与签名内容不一致
105110 商户号不存在
105111 用户客户号不存在
105301 短信验证码有误
105302 用户未绑定过该卡
105303 非代扣或快捷卡,不能解绑
105304 用户基本信息不存在
105305 验证卡信息失败
105306 银行卡解绑失败
105307 该银行卡未被绑定为取现卡
105308 该银行卡未被绑定为代扣卡
105309 该银行卡未被绑定为快捷卡

230 无卡收款短信发送接口

功能说明

发送短信验证码,以便在进行后续无卡收款中验证该短信验证码。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定230
商户客户号 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 必须 快捷/代扣支付时,必传
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
分账客户号 divCustId 变长16位String 必须 div_detail参数下的二级参数 分账客户号
分账账户号 divAcctId 变长9位String 必须 div_detail参数下的二级参数 分账账户号
分账金额 divAmt 变长14位String 必须 div_detail参数下的二级参数 分账金额,保留两位小数
是否冻结标志 divFreezeFg 定长2位String 必须 div_detail参数下的二级参数 冻结标志 否:00 是: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 可选 不能包含特殊字符:<>&’”|%#\^-
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 每一种消息类型代表一种交易,此处为230
应答返回码 resp_code 定长6位String 必须 230000–调用成功,其他见返回码附件表
应答返回描述 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 可选 用于扩展请求参数

返回码

返回码 返回描述
230000 交易成功
230002 请求已受理
230003 交易失败
230098 系统超时
230099 系统异常
230100 请求参数非法
230101 商户无此接口权限
230102 验证签名失败
230103 商户状态异常
230104 用户状态异常
230107 消息类型与签名内容不一致
230108 商户客户号与签名内容不一致
230109 版本号与签名内容不一致
230110 商户号不存在
230302 不支持此支付类型
230307 该用户未绑定快捷卡
230720 快捷支付只服务于个人或个体用户
230721 分账串内容不能超过五个
230722 分账串部分字段为空
230723 分账串金额格式错误
230724 分账串累计金额不等于订单金额
230725 分账信息用户状态异常
230726 分账信息账户状态异常
230727 分账信息异常
230728 分账串账户信息格式错误
230729 分账串账户异常
230739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "230",
            "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 = "230";
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": "230",
        "resp_code": "230000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "230",
     "resp_code": "230099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

231 无卡收款接口

功能说明

无卡收款接口是为了支持个人用户小额收款的支付需求。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为231
商户客户号 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 必须  
短信验证码 sms_code 定长6位String 必须  
分账账户串 div_detail 变长String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
分账客户号 divCustId 变长16位String 必须 div_detail参数下的二级参数 分账客户号
分账账户号 divAcctId 变长9位String 必须 div_detail参数下的二级参数 分账账户号
分账金额 divAmt 变长14位String 必须 div_detail参数下的二级参数 分账金额,保留两位小数
是否冻结标志 divFreezeFg 定长2位String 必须 div_detail参数下的二级参数 冻结标志 否:00 是: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 可选 不能包含特殊字符:<>&’”|%#\^-
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 每一种消息类型代表一种交易,此处为231
应答返回码 resp_code 定长6位String 必须 231000–调用成功,其他见返回码附件表
应答返回描述 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 必须  
短信验证码 sms_code 定长6位String 可选 二阶段支付,返回,与快捷绑卡时的银行预留手机号对应的短信验证码
分账账户串 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 可选 用于扩展请求参数

返回码

返回码 返回描述
231000 交易成功
231002 请求已受理
231003 交易失败
231099 系统异常
231100 请求参数非法
231101 商户无此接口权限
231102 验证签名失败
231103 商户状态异常
231104 用户状态异常
231105 账户状态异常
231107 消息类型与签名内容不一致
231108 商户客户号与签名内容不一致
231109 版本号与签名内容不一致
231110 商户号不存在
231202 交易订单号重复
231204 商户配置异常
231210 短信验证码发送过于频繁
231300 不支持此充值银行
231307 该用户未绑定快捷卡
231314 充值手续费账户状态不正常
231720 快捷支付只服务于个人或个体用户
231721 分账串内容不能超过五个
231722 分账串部分字段为空
231723 分账串金额格式错误
231724 分账串累计金额不等于订单金额
231725 分账信息用户状态异常
231726 分账信息账户状态异常
231727 分账信息异常
231728 分账串账户信息格式错误
231729 分账串账户异常
231730 快捷支付卡有变更,请重新获取验证码
231731 快捷支付分账转账失败
231732 快捷支付分账转账表处理失败
231733 分账支付明细表处理失败
231734 该商户客户号网银支付网关号未配置
231735 商户无目标支付网关权限
231736 快捷支付交易金额不一致
231737 支付明细表处理失败
231738 快捷支付分账串内容不一致
231739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "231",
       "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 = "231";
 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": "231",
        "resp_code": "231000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "231",
     "resp_code": "231099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

228 银联新快捷支付接口

功能说明

银联新快捷支付,需先调用 110短信发送接口 获取短信验证码。

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为228
商户客户号 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 必须 分账账户必须是入账客户的账户 入账客户号和入账账户号为空的时候必填 数据格式: [{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’},{‘divCustId’:‘6666000000025666’,’divAcctId’:‘78841’,’divAmt’:‘50.00’,’divFreezeFg’:‘01’}]
银行卡号 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 可选 用于扩展请求参数
短信验证码日期 sms_order_date 定长8位String 必须 与sms_code对应的验证码发送订单日期
短信验证码订单号 sms_order_id 变长20位String 必须 与sms_code对应的验证码发送订单号
短信验证码 sms_code 定长6位String 必须 短信验证码
风险信息 risk_info Json(1500) 必须 具体参数请查看下方风险信息表,数据格式为:[{‘deviceID’:‘10242142142’, ‘deviceType’:‘4’… ‘riskReasonCode’: ‘100’}]
页面返回地址 ret_url 变长128位的String 可选  
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

分账账户串div_detail:

分账客户号 divCustId 变长16位String 必须 div_detail参数下的二级参数 分账客户号
分账账户号 divAcctId 变长9位String 必须 div_detail参数下的二级参数 分账账户号
分账金额 divAmt 变长14位String 必须 div_detail参数下的二级参数 分账金额,保留两位小数
是否冻结标志 divFreezeFg 定长2位String 必须 div_detail参数下的二级参数 冻结标志,默认为是 否:00 是:01

风险信息risk_info:

子域名 标识 子域格式 类型 说明
设备标识 deviceID ANS 1..64 必须 移动终端设备的唯一标识
设备类型 deviceType ANS 1..2 必须 每类设备对应一个整数值,取值范围从 1 至 99。 1:手机,2:平板,3:手表,4:PC
银行预留手机号 mobile ANS 1..64 必须 银行卡预留手机号码 仅 1 个,11 位,不包括+86 等信息
应用提供方账户 ID accountIdHash ANS 1..64 必须 用来标识用户在智能设备上登录账号 ID 信息的哈希值,与用户登录账号 ID 是一一对应关系,为登录账号 ID 的替换值。
IP sourceIP ANS 1..64 必须 绑卡设备所在的公网 IP,可用于定位所属地区,不是 wifi 连接时的局域网 IP。
设备 GPS 位置 deviceLocation ANS 1..32 可选 格式为纬度/经度,+表示北纬、东经,-表示南纬、西经。举例:+37.12/-121.23
设备 SIM 卡号码 fullDeviceNumber ANS 1..32 可选 持卡人用来做设备卡加载时所使用设备的号码,多个号码用逗号隔开
设备SIM卡数量 deviceSimNumber ANS 1..8 可选 智能设备中的SIM卡数量。
设备使用语言 deviceLanguage ANS 3 可选 移动支付设备所设定的使用语言,语言代码取值遵从ISO639-3标准。
设备型号 deviceName ANS 1..100 可选 手机型号
总体风险评级 riskScore ANS 1 可选 风险评级, 1-5分,5分最高。
风险评级版本号 riskStandardVersion ANS 1..8 可选 设备厂商给出加载流程风险建议时所基于的风险判断原则对应的版本。
设备评级 deviceScore ANS 1 可选 设备厂商给设备的评分,1-5分,5分可信度越高。
账户注册日期 usrRgstrDt ANS 8 可选 8位日期字符yyyymmdd
绑卡方式 captureMethod ANS 1..15 可选 表示绑卡时卡号录入方式: manual:用户手输入卡号, camera:表示摄像头捕捉得到卡号, nfc:nfc方式读取卡号, unknow:未知的获取卡号方式。 经手工修改卡号后,均应填写为manual,表示手工输入。
绑卡渠道 applyChannel ANS 2 可选 01:银行自有渠道,02:非银行渠道
账户关键信息修改时间 accountEmailLife ANS1..2 可选 设备用户重要信息修改时间,最近一次修改email距今X个月,X的数值范围:0-24,表示0-24个月,大于24个月赋值24。
持卡人姓名 cardHolderName ANS1..256 可选 持卡人姓名,名在前,姓在后
持卡人账单地址 billingAddress ANS1..256 可选 持卡人账单地址信息
持卡人邮编 billingZip ANS1..16 可选 持卡人邮编信息
账户评级 accountScore ANS 1 可选 设备厂商给用户账户的评分,取值从1到5。
设备SIM卡号码评级 phoneNumberScore ANS 1 可选 设备号码评分,加载流程对应手机号信任评级级别,取值从1到5。
评级原因码 riskReasonCode ANS 1..100 可选 设备厂商给出的风险等级判断原因,多个原因用逗号分隔

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 固定为228
应答返回码 resp_code 定长6位String 必须 228000–调用成功,其他见返回码附件表
应答返回描述 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 可选 用于扩展请求参数
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
手续费金额 fee_amt 变长14位String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长16位String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
页面返回地址 ret_url 变长128位的String 可选  

返回码

返回码 返回描述
228000 交易成功
228002 请求已受理
228002 交易订单号重复
228003 交易失败
228099 系统异常
228100 请求参数非法
228101 商户无此接口权限
228102 验证签名失败
228103 商户状态异常
228110 商户号不存在
228204 商户配置异常
228205 短信验证码验证失败
228205 短信验证码验证失败
228206 短信验证码发送手机号与验证手机号不一致
228207 短信验证码或短信唯一标识为空
228208 短信验证码已失效请重新获取
228217 当前商户不支持贷记卡
228234 银行卡相关信息不完整或格式不正确
228303 银行卡号与银行不匹配
228340 风险信息解析失败
228341 风险信息关键信息不能为空
228342 卡号格式不正确,加密失败
228343 卡bin校验失败
228344 手续费计算失败
228345 缓存数据获取失败
228346 商户路由未配置
228347 二维码URL获取失败
228348 银联交易序列号获取失败
228349 正扫付款失败
228720 快捷支付只服务于个人或个体用户
228721 分账串内容不能超过五个
228722 分账串部分字段为空
228723 分账串金额格式错误
228724 分账串累计金额不等于订单金额
228725 分账信息用户状态异常
228726 分账信息账户状态异常
228727 分账信息异常
228728 分账串账户信息格式错误
228729 分账串账户异常
228732 分账串客户号信息格式错误
228733 分账支付明细处理失败
228737 支付明细处理失败
228741 分账串内容重复

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "228",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026303",
       "order_id": "2011887094",
       "order_date": "20180327",
       "trans_amt": "6.95",
       "div_detail": "[{'divCustId':'6666000000026185','divAcctId':'79704','divAmt':'6.92','divFreezeFg':'01'},{'divCustId':'6666000000026086','divAcctId':'79506','divAmt':'0.03','divFreezeFg':'00'}]",
       "card_no":"6225768612148888",
       "card_ mobile": "13761708192",
       "card_prov":"0300",
       "card_area":"0311",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "sms_code": "111111",
       "sms_order_date":"20180327",
       "sms_order_id":"20110000005",
       "risk_info":"[{'deviceID':'10242142142', 'deviceType':'4'... 'riskReasonCode': '100'}]",
       "ret_url": "",
       "mer_priv": "test",
       "extension": "test"
       }";

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

235 开通/关闭服务费服务

功能说明

本接口用于商户开通/关闭服务费服务。

调用方式:系统调用

请求参数

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

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 固定为235
应答返回码 resp_code 定长6位String 必须 235000–调用成功,其他见返回码附件表
应答返回描述 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) 必须是外网地址
页面返回URL ret_url 变长120位的String 可选 交易完成后,本平台系统把同步交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
操作类型 oper_type 定长2位String 必须 0:关闭,1:开启

返回码

返回码 返回描述
235000 交易成功
235003 交易失败
235098 系统超时
235099 系统异常
235100 请求参数非法
235101 商户无此接口权限
235102 验证签名失败
235103 商户状态异常
235104 用户状态异常
235107 消息类型与签名内容不一致
235108 商户客户号与签名内容不一致
235109 版本号与签名内容不一致

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "235",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000026303",
       "order_date": "20180327",
       "order_id": "2160099077",
       "oper_type": "1",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "ret_url": "http://baidu.com",
       "mer_priv": "",
       "extension": "",
       }";

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

160 快捷小额免密支付

功能说明

从用户事先绑定好的银行卡里,免密扣取订单金额(额度有一定的限制)到指定的账户。用户若未绑快捷卡,可执行812接口先进行绑卡

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

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为160
商户客户号 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 (快捷支付时的返回参数)
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
入账账户号 in_acct_id 变长9位String 可选 开户返回的acct_id,若是分给平台自己,可以通过邮件查找商户客户号和子账号信息。(in_cust_id同理)
分账账户串 div_detail 变长String 可选 业务类型为支付时必传,分账串使用UTF-8字符集URLEncode编码后传入;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
商户后台应答地址 bg_ret_url 变长128位String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL中请不要包含特殊字符 2) 必须是外网地址
商户私有域 mer_priv 变长120位String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。 注意:如参数中包含中文,应对参数进行Base64加密后再使用。
扩展域 extension 变长512位String 可选 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见4.2.13.二级商户号录入接口
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
行业类型 tm_type 定长4位的String 可选 0100:住宿;0200:餐饮;0300:电器;0400:服饰;0500:旅游;0600:珠宝;0700:汽车服务;0800:美容养生;0900:酒吧,夜总会;1000:数码电脑;1100:美妆护肤;1200:百货;1300:家装建材;
备注1 remark1 定长2位String 可选 参考说明
备注2 remark2 定长6位String 可选 参考说明
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
对手方交易IP user_ip_addr 变长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:不冻结

注:如果支付时不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号;分账串最大长度限制为5条

同步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长String 必须 每一种消息类型代表一种交易,此处为160
应答返回码 resp_code 定长6位String 必须 160000–调用成功,其他见:返回码表
应答返回描述 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位系统流水号
绑定银行卡ID bind_card_id 变长20位String 必须 付款人快捷支付时的快捷绑卡的ID (快捷支付时的返回参数)
交易金额 trans_amt 变长14位String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长16位String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
入账账户号 in_acct_id 变长9位String 可选 开户返回的acct_id,若是分给平台自己,可以通过邮件查找商户客户号和子账号信息。(in_cust_id同理)
分账账户串 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 可选 用于扩展请求参数

返回码

返回码 返回描述
160000 交易成功
160002 请求已受理
160003 交易失败
160099 系统异常
160100 请求参数非法
160101 商户无此接口权限
160102 验证签名失败
160103 商户状态异常
160104 用户状态异常
160107 消息类型与签名内容不一致
160108 商户客户号与签名内容不一致
160109 版本号与签名内容不一致
160110 商户号不存在
160111 用户客户号不存在
160202 交易订单号重复
160204 商户配置异常
160228 (入账客户号、入账账户号)与分账串信息必须输入一项
160231 入账用户状态异常
160306 入账分账串信息不正确
160314 支付手续费账户状态不正常
160321 支付手续费未配置
160329 理财账户不允许进行支付,分账和作为手续费!
160727 分账信息异常
160315 手续费金额不得大于等于交易金额
160752 交易金额超限
160563 卡状态不正确
160564 银行卡余额不足

代码示例

java

String valueObj = "{
            "version": "10",
            "cmd_id": "849",
            "mer_cust_id": "6666000000026086",
            "user_cust_id": "6666000000030895",
            "order_date": "20180816",
            "order_id": "2018081615344454",
            "bind_card_id": "10008932543",
            "trans_amt": "93",
            "in_cust_id": "6666000000026086",
            "in_acct_id": "79506",
            "div_detail":""
            "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
            "mer_priv": "test_merpriv",
            "extension": "test_extension",
            "dev_info_json":"{\"devType\":\"1\",\"iMEI\":\"355320084666603\",\"ipAddr\":\"172.31.30.188\"}"}
    }";

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

161 快捷绑卡cvv2版聚合版一阶段短信发送

功能说明

本接口需要配合162快捷绑卡cvv2版聚合版二阶段绑卡支付,用于发送快捷短信。

  • 有页面,该接口订单号order_id需与162接口订单号order_id一致。

调用方式:页面浏览器调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为161
商户客户号 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 可选 div_detail和下方的(in_cust_id,in_acct_id)两者必填一项,且只能填一项;分账串定义可参照下表;注:如果不需要分账给多个人的话,就不要传分账账户串,直接传入账客户号和入账账户号
数据格式:[{‘divCustId’:‘6666000000025350’,’divAcctId’:‘78276’,’divAmt’:‘50.00’,’divFreezeFg’:‘00’}],可分给多个对象,每个对象大括号{}用逗号隔开
该参数表示分账对象,将金额分给虚拟用户的账户中,divCustId和divAcctId即为开户接口返回的user_cust_id和acct_id,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息
入账客户号 in_cust_id 定长16位String 可选 分账串为空的场合必填,in_cust_id表示入账的用户客户号,即开户接口返回的user_cust_id
入账账户号 in_acct_id 变长9位String 可选 分账串为空的场合必填,in_acct_id表示入账的用户账户号,即开户接口返回的acct_id
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_ mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
银行卡开户省份 card_prov 定长4位String 可输 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位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 : 移动端
设备信息 dev_info_json 变长1024位的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 可选 不能包含特殊字符:<>&’”|%#\^-
行业类型 tm_type 定长4位的String 可选 0100:住宿;0200:餐饮;0300:电器;0400:服饰;0500:旅游;0600:珠宝;0700:汽车服务;0800:美容养生;0900:酒吧,夜总会;1000:数码电脑;1100:美妆护肤;1200:百货;1300:家装建材;
增值服务 value_added_service 定长2位的String 可选 01-优选路由
备注1 remark1 定长2位String 可选 参考说明
备注2 remark2 定长6位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 必须 固定为161
应答返回码 resp_code 定长6位String 必须 161000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
行业类型 tm_type 定长4位的String 可选  
增值服务 value_added_service 定长2位的String 可选 01-优选路由
备注1 remark1 定长2位String 可选 参考说明
备注2 remark2 定长6位String 可选 参考说明

返回码

返回码 返回描述
161000 交易成功
161003 交易失败
161002 请求已受理
161317 验证码发送失败
161318 验证码发送成功
161098 系统超时
161099 系统异常
161100 请求参数非法
161101 商户无此接口权限
161102 验证签名失败
161103 商户状态异常
161104 用户状态异常
161107 消息类型与签名内容不一致
161108 商户客户号与签名内容不一致
161109 版本号与签名内容不一致
161202 交易订单号重复
161210 短信验证码发送过于频繁
161301 省份地区信息非法
161302 只有个人用户和个体户能快捷支付
161303 入账客户号、入账账户号与分账串信息必须输入一项
161304 入账客户号、入账账户号与分账串信息不可同时输入
161308 商户支付基础信息未配置
161309 支付手续费账户状态不正常
161310 支付手续费未配置
161323 支付手续费只能向商户收取
161727 分账信息异常
161721 分账串内容不能超过五个
161722 分账串部分字段为空
161723 分账串金额格式错误
161728 分账串账户信息格式错误
161729 分账串账户异常
161726 分账信息账户状态异常
161725 分账信息用户状态异常
161741 分账串内容重复
161732 分账串客户号信息格式错误
161724 分账串累计金额不等于订单金额
161739 快捷支付短信发送异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "161",
       "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",
       "ret_url":"http://192.168.0.74:8001/npayCallPage/pageHandle"
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "",
       "extension": "",
       "request_type":"01",
   "dev_info_json":"{\"devType\":\"1\",\"iMEI\":\"355320084666603\",\"ipAddr\":\"172.31.30.188\"}",
       "payer_term_type": "",
       "payer_term_no": "",
       "payee_term_type": "",
       "payee_term_no": "",
       "goods_short_name": "",
       "tm_type":"0100",
       "value_added_service": "",
       "remark1":"11",
       "remark2":"123456"
       }";

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

162 快捷绑卡cvv2版聚合版二阶段绑卡+支付

功能说明

本接口需要配合161快捷绑卡cvv2版聚合版一阶段短信发送接口一起调用,先调161接口再调162接口,完成绑卡和支付。如果用户已绑卡,不会重复绑卡。即绑卡+快捷支付二合一接口。

  • 该接口订单号order_id需与161接口订单号order_id一致。
  • 用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 固定为162
商户客户号 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 必须  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
二级商户号 secondary_mer_id 定长10位的String 可选 对于开启二级商户模式的商户,必须输入其配下的二级商户号
设备信息 dev_info_json 变长1024位String 必须 参见 设备静态信息
扩展域 extension 变长512位的String 可选 用于扩展请求参数。如果传入的 extension 是 json 格式且 key 的关键字等于 agentInfo,那么传入的代理商信息会进行风控校验,代理商内容示例:{“agentInfo”:{“agent1Id”:”1111”,”agent1Name”:”1级代理商”,”agent2Id”:”2222”,”agent2Name”:”2级代理商”,”agent3Id”:”3333”,”agent3Name”:”3级代理商”,”agent4Id”:”4444”,”agent4Name”:”4级代理商”,”agent5Id”:”5555”,”agent5Name”:”5级代理商”}}
交易发生地 transaction_addr 变长128位String 必须  
资金用途 purpose 变长128位String 必须  
对手方交易IP user_ip_addr 变长20位String 必须  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 变长3位String 必须 固定为161
应答返回码 resp_code 定长6位String 必须 161000–调用成功,其他见返回码
应答返回描述 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 可选 手续费扣款子账户号
服务费 gua_service_amt 变长14位的String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回码

返回码 返回描述
162000 交易成功
162002 请求已受理
162003 交易失败
162098 系统超时
162099 系统异常
162100 请求参数非法
162101 商户无此接口权限
162102 验证签名失败
162103 商户状态异常
162104 用户状态异常
162107 消息类型与签名内容不一致
162108 商户客户号与签名内容不一致
162109 版本号与签名内容不一致
162201 页面数据被篡改
162202 交易订单号重复
162204 商户配置异常
162302 只有个人用户和个体户能快捷支付
162308 商户支付基础信息未配置
162309 支付手续费账户状态不正常
162310 支付手续费未配置
162312 操作超时,请重试
162313 请获取验证码
162315 银行卡号与银行、卡类型信息不匹配
162320 用户有快捷卡正在绑定中,请勿重复绑卡
162323 支付手续费只能向商户收取
162502 系统未开放或暂时关闭,请稍后再试
162503 交易通讯超时,请发起查询交易
162504 交易状态未明,请查询对账结果
162505 重复签约
162506 交易失败,详情查看银行返回信息
162507 验卡失败,具体问题参见对应银行认证失败原因
162508 交易处理中(撤销)
162510 订单信息为空
162511 订单信息有误
162512 重复交易
162513 交易失败,订单已超时!
162514 批量文件格式错误
162519 订单系统错误
162520 持卡人信息为空
162521 持卡人信息有误
162522 持卡人系统错误
162523 卡信息为空
162524 卡信息有误
162525 卡系统错误
162526 卡系统错误
162529 业务受限
162530 业务系统信息为空
162531 业务系统信息有误
162532 业务系统错误
162533 金额超限
162534 查无此交易
162535 网关不支持签约交易
162536 与原交易信息不符
162537 已超过最大查询次数或操作过于频繁
162538 风险受限
162539 网关不支持解约交易!
162540 授权码为空
162541 批量状态不正确,无法下载
162542 扣款成功但交易超过规定支付时间
162543 二级商户号为空
162544 商品描述为空
162545 支付类型为空
162546 交易类型为空
162547 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空
162548 微信公众号支付subOpenId不能为空
162549 无签约记录
162550 账户信息有误
162551 交易金额低于下限
162552 交易失败,未在我方进行实名认证或认证不通过
162553 二级商户名为空!
162554 入驻类型为空或值不对!
162555 商户入驻信息不匹配!
162556 商户入驻失败!
162557 银行卡类型不支持
162558 认证失败
162559 交易次数超限
162560 交易失败,请联系发卡银行
162561 对不起,您所输的银行卡号有误,请核实后再试!
162562 交易失败,发卡银行不支持该商户,请更换其他银行卡
162563 卡状态不正确
162564 银行卡余额不足
162565 卡信息或银行预留手机号有误
162566 短信验证码已过期
162567 密码输入次数超限
162568 您的银行卡暂不支持该业务
162571 对不起,你所输的验证码有误,请核实后再试!
162572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡
162573 对不起,您所输的户名有误,请核实后再试!
162574 对不起,您的证件类型有误,请核实后再试!
162575 对不起,您的所输证件号码有误,请核实后再试!
162576 对不起,您所输的手机号码有误,,请核实后再试!
162577 验证码发送失败
162578 验证码超限或超时
162579 对不起,您的用户信息未通过银行验证,请核实后再试!
162580 银行卡状态异常
162581 支付失败,请稍后再试
162582 退款失败,请稍后再试
162583 余额不足次数超限,请隔日再试
162584 单笔金额超限
162585 单日金额超限
162586 单月金额超限
162587 订单信息重复
162588 支付订单信息有误
162589 退款失败,退款金额与订单金额不符
162590 交易失败,参数不合法
162591 系统异常
162592 交易失败,银行系统繁忙,请稍后再试
162593 系统超时
162594 银行处理中,请稍后再试
162595 短信验证码不正确
162596 CVV或有效期错误
162597 短息服务异常
162598 短信验证码验证次数超限,请重新发送
1625F0 支付渠道问题
1625F1 交易失败,未开通银联认证支付
1625F2 交易失败,未添加白名单
1625F3 签约失败,请稍后再试
1625F4 该卡当日失败次数超过阀值
1625F5 退款失败,没有找到成功的交易记录
1625F6 查无协议号,须要重新签约!
1625P0 交易挂起,需要确认
1625S2 需跳转页面签约
1625B0 无可用支付方式
1625B1 消费超过该商户支持限额
1625C0 MCHID不存在
1625C1 二维码已过期
1625C2 授权码相关错误
1625C3 用户支付中,需要输入密码
1625C4 XML格式错误
1625C6 签名错误
1625C7 编码格式错误
1625C8 支付帐号错误
1625C9 APPID不存在
1625D0 获取顾客账户信息失败,请刷新付款码后重新收款
1625D1 appid和mch_id不匹配
1625D2 验签失败
1625D3 post数据为空
1625D4 无效transaction_id
1625D5 分账信息校验失败
1625D6 没有权限使用该产品
1625D7 卖家信息有误
1625D8 买家信息有误
1625D9 卖家买家账号相同
1625A0 透传银行错误描述
1625A1 风控拦截
1625U0 银行无签约信息,或已解约
1625U1 pnrpay_element无签约信息,或已解约
162743 请获取验证码
162744 信息更新异常

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "162",
       "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 = "162";
 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": "162",
        "resp_code": "162000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "162",
      "resp_code": "162099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }