代扣类接口¶
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 | 验证码发送中 |
113 消费类订单录入接口¶
功能说明¶
用于用户录入消费类订单信息(例如分期买手机时订单总金额),以便后续进行代扣。同一个产品订单可以被多个用户签约,相互独立、互不占用订单额度。
- 一般配合817前台和809后台代扣签约绑卡接口使用,如果是消费类代扣,则需要先调113接口再调817或809接口,产品编号(product_id)需一致。
调用方式:系统调用
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 必须 | 默认为10,可扩展 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 113 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | |
| 订单号 | order_id | 变长20位String | 必须 | 商户系统生成,商户下唯一 |
| 订单日期 | order_date | 定长8 位String | 必须 | YYYYMMDD |
| 项目ID | product_id | 变长20位String | 必须 | |
| 项目总金额 | product_amt | 变长14位的String | 必须 | 金额格式是###.00 |
| 项目期数 | product_periods | 变长14位的String | 必须 | |
| 项目开始时间 | product_start_time | 定长14位的String | 必须 | yyyyMMddHHmmss |
| 项目结束时间 | product_end_time | 定长14位的String | 必须 | |
| 项目所在地 | product_location | 定长4位的String | 必须 | 省份编号 |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户信息录入结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长120位的String | 必须 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
| 入参扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
返回参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 变长String | 必须 | 113 |
| 应答返回码 | resp_code | 定长6位的String | 必须 | |
| 应答描述 | resp_desc | 变长String | 必须 | |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | |
| 订单号 | order_id | 变长20位String | 必须 | 商户系统生成,商户下唯一 |
| 订单日期 | order_date | 定长8 位String | 必须 | YYYYMMDD |
| 项目ID | product_id | 变长16位String | 必须 | |
| 项目总金额 | product_amt | 变长14位的String | 必须 | 金额格式是###.00 |
| 项目期数 | product_periods | 变长14位的String | 必须 | |
| 项目开始时间 | product_start_time | 变长14位的String | 必须 | |
| 项目结束时间 | product_end_time | 变长14位的String | 必须 | |
| 项目所在地 | product_location | 定长4位的String | 必须 | |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户信息录入结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
| 返参扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "113",
"mer_cust_id": "6666000000026086",
"order_id": "2220001",
"order_date": "20180816",
"product_id": "1014",
"product_amt": "120.01",
"product_periods": "11111",
"product_start_time": "20180815151200",
"product_end_time": "20180815201200",
"product_location": "0031",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "113";
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": "113",
"resp_code": "113000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "113",
"resp_code": "113099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
| 返回码 | 返回描述 |
| 113000 | 交易成功 |
| 113099 | 系统异常 |
| 113100 | 请求参数非法 |
| 113101 | 商户无此接口权限 |
| 113102 | 验证签名失败 |
| 113103 | 商户状态异常 |
| 113104 | 用户状态异常 |
| 113202 | 交易订单号重复 |
| 113301 | 项目开始时间晚于或等于项目结束时间 |
115 非消费类代扣签约绑卡接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 是 | 目前固定为10 |
| 消息类型 | cmd_id | 定长3位String | 是 | 每一种消息类型代表一种交易,此处为“115” |
| 商户客户号 | mer_cust_id | 定长16位String | 是 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 是 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 是 | 格式为“yyyyMMdd” 注:请和绑卡短信发送接口的订单日期一致 |
| 订单号 | order_id | 变长20位String | 是 | 由商户的系统生成,订单号和订单日期保证唯一 注:请和绑卡短信发送接口的订单号一致 |
| 开户银行代号 | 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 | 是 | |
| 商户后台应答地址 | 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 | 是 | 每一种消息类型代表一种交易,此处为”115” |
| 应答返回码 | resp_code | 定长6位String | 是 | 115000–调用成功,其他见返回码表 |
| 应答返回描述 | resp_desc | 变长String | 是 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长16位String | 是 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 是 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 是 | 格式为“yyyyMMdd” |
| 订单号 | order_id | 变长20位String | 是 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 是 | 组成规则:8位本平台日期+ 10位系统流水号 |
| 开户银行代号 | bank_id | 变长8位String | 是 | 对应订单录入中产品ID |
| 银行卡号 | card_no | 变长32位String | 是 | 本次代扣签约绑卡绑定的银行卡号掩码 |
| 绑定银行卡ID | bind_card_id | 变长20位String | 是 | 用于代扣支付交易 |
| 商户后台应答地址 | 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": "115",
"mer_cust_id": "6666000000217291",
"user_cust_id": "6666000000291215",
"order_date": "20180402",
"order_id": "0020180372",
"product_id": "P0000001",
"bank_id": "03134402",
"dc_flag": "0",
"card_no": "6230580000038076969",
"card_mobile": "13761708192",
"card_prov": "0031",
"card_area": "3100",
"sms_code": "219062",
"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 = "115";
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": "115",
"resp_code": "115000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "115",
"resp_code": "115099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
| 返回码 | 返回描述 |
| 115000 | 交易成功 |
| 115003 | 交易失败 |
| 115098 | 系统超时 |
| 115099 | 系统异常 |
| 115100 | 请求参数非法 |
| 115101 | 商户无此接口权限 |
| 115102 | 验证签名失败 |
| 115103 | 商户状态异常 |
| 115107 | 消息类型与签名内容不一致 |
| 115108 | 商户客户号与签名内容不一致 |
| 115109 | 版本号与签名内容不一致 |
| 115110 | 商户号不存在 |
| 115202 | 订单号重复 |
| 115204 | 商户配置异常 |
| 115205 | 短信验证码不正确 |
| 115303 | 银行卡号与银行不匹配 |
| 115304 | 银行卡类型错误 |
| 115308 | 省份地区信息非法 |
| 115312 | 企业用户/商户不支持代扣绑卡 |
| 115314 | 请获取验证码 |
| 115315 | 银行卡信息有更新,请重新获取验证码 |
| 115320 | 当前商户不支持贷记卡 |
| 115321 | 当前商户不支持借记卡 |
| 115502 | 系统未开放或暂时关闭,请稍后再试 |
| 115503 | 交易通讯超时,请发起查询交易 |
| 115504 | 交易状态未明,请查询对账结果 |
| 115505 | 重复签约 |
| 115506 | 交易失败,详情查看银行返回信息 |
| 115507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 115508 | 交易处理中(撤销) |
| 115510 | 订单信息为空 |
| 115511 | 订单信息有误 |
| 115512 | 重复交易 |
| 115513 | 交易失败,订单已超时! |
| 115514 | 批量文件格式错误 |
| 115519 | 订单系统错误 |
| 115520 | 持卡人信息为空 |
| 115521 | 持卡人信息有误 |
| 115522 | 持卡人系统错误 |
| 115523 | 卡信息为空 |
| 115524 | 卡信息有误 |
| 115525 | 卡系统错误 |
| 115526 | 卡系统错误 |
| 115529 | 业务受限 |
| 115530 | 业务系统信息为空 |
| 115531 | 业务系统信息有误 |
| 115532 | 业务系统错误 |
| 115533 | 金额超限 |
| 115534 | 查无此交易 |
| 115535 | 网关不支持签约交易 |
| 115536 | 与原交易信息不符 |
| 115537 | 已超过最大查询次数或操作过于频繁 |
| 115538 | 风险受限 |
| 115539 | 网关不支持解约交易! |
| 115540 | 授权码为空 |
| 115541 | 批量状态不正确,无法下载 |
| 115542 | 扣款成功但交易超过规定支付时间 |
| 115543 | 二级商户号为空 |
| 115544 | 商品描述为空 |
| 115545 | 支付类型为空 |
| 115546 | 交易类型为空 |
| 115547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 115548 | 微信公众号支付subOpenId不能为空 |
| 115549 | 无签约记录 |
| 115550 | 账户信息有误 |
| 115551 | 交易金额低于下限 |
| 115552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 115553 | 二级商户名为空! |
| 115554 | 入驻类型为空或值不对! |
| 115555 | 商户入驻信息不匹配! |
| 115556 | 商户入驻失败! |
| 115557 | 银行卡类型不支持 |
| 115558 | 认证失败 |
| 115559 | 交易次数超限 |
| 115560 | 交易失败,请联系发卡银行 |
| 115561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 115562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 115563 | 卡状态不正确 |
| 115564 | 银行卡余额不足 |
| 115565 | 卡信息或银行预留手机号有误 |
| 115566 | 短信验证码已过期 |
| 115567 | 密码输入次数超限 |
| 115568 | 您的银行卡暂不支持该业务 |
| 115571 | 对不起,你所输的验证码有误,请核实后再试! |
| 115572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 115573 | 对不起,您所输的户名有误,请核实后再试! |
| 115574 | 对不起,您的证件类型有误,请核实后再试! |
| 115575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 115576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 115577 | 验证码发送失败 |
| 115578 | 验证码超限或超时 |
| 115579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 115580 | 银行卡状态异常 |
| 115581 | 支付失败,请稍后再试 |
| 115582 | 退款失败,请稍后再试 |
| 115583 | 余额不足次数超限,请隔日再试 |
| 115584 | 单笔金额超限 |
| 115585 | 单日金额超限 |
| 115586 | 单月金额超限 |
| 115587 | 订单信息重复 |
| 115588 | 支付订单信息有误 |
| 115589 | 退款失败,退款金额与订单金额不符 |
| 115590 | 交易失败,参数不合法 |
| 115591 | 系统异常 |
| 115592 | 交易失败,银行系统繁忙,请稍后再试 |
| 115593 | 系统超时 |
| 115594 | 银行处理中,请稍后再试 |
| 115595 | 短信验证码不正确 |
| 115596 | CVV或有效期错误 |
| 115597 | 短息服务异常 |
| 115598 | 短信验证码验证次数超限,请重新发送 |
| 1155F0 | 支付渠道问题 |
| 1155F1 | 交易失败,未开通银联认证支付 |
| 1155F2 | 交易失败,未添加白名单 |
| 1155F3 | 签约失败,请稍后再试 |
| 1155F4 | 该卡当日失败次数超过阀值 |
| 1155F5 | 退款失败,没有找到成功的交易记录 |
| 1155F6 | 查无协议号,须要重新签约! |
| 1155P0 | 交易挂起,需要确认 |
| 1155S2 | 需跳转页面签约 |
| 1155B0 | 无可用支付方式 |
| 1155B1 | 消费超过该商户支持限额 |
| 1155C0 | MCHID不存在 |
| 1155C1 | 二维码已过期 |
| 1155C2 | 授权码相关错误 |
| 1155C3 | 用户支付中,需要输入密码 |
| 1155C4 | XML格式错误 |
| 1155C6 | 签名错误 |
| 1155C7 | 编码格式错误 |
| 1155C8 | 支付帐号错误 |
| 1155C9 | APPID不存在 |
| 1155D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 1155D1 | appid和mch_id不匹配 |
| 1155D2 | 验签失败 |
| 1155D3 | post数据为空 |
| 1155D4 | 无效transaction_id |
| 1155D5 | 分账信息校验失败 |
| 1155D6 | 没有权限使用该产品 |
| 1155D7 | 卖家信息有误 |
| 1155D8 | 买家信息有误 |
| 1155D9 | 卖家买家账号相同 |
| 1155A0 | 透传银行错误描述 |
| 1155A1 | 风控拦截 |
| 1155U0 | 银行无签约信息,或已解约 |
| 1155U1 | pnrpay_element无签约信息,或已解约 |
817 前台代扣绑卡代开户接口¶
功能说明¶
使用该接口让商户在前台代扣绑卡和开户(若未开过户的话),即开户+代扣绑卡二合一接口(有页面)。
- 如果是消费类代扣,则需要先调113接口再调817接口。
调用方式:页面返回
接口类型:页面应答 + 异步应答
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 必须 | 目前固定为10 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为817 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
| 订单号 | order_id | 变长20位String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长20位String | 可选 | 对应产品录入中产品ID |
| 产品订单号 | product_order_id | 变长20位String | 可选 | 由商户的系统生成,本次签约的产品订单号,产品订单号保证唯一 |
| 开户名 | user_name | 变长50位String | 必须 | 用户的真实姓名 |
| 身份证号 | cert_id | 定长18位String | 必须 | 用户身份证号 |
| 开户银行代号 | bank_id | 变长8位String | 必须 | 具体见附件一中:代扣充值支持银行列表 |
| 银行卡号 | card_no | 变长32位String | 必须 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长1位String | 必须 | D–借记,储蓄卡C–贷记,信用卡 注:本接口暂仅支持借记卡 |
| 银行预留手机号 | card_mobile | 变长11位String | 必须 | 银行开户时的预留手机号 |
| 银行卡开户省份 | card_prov | 定长4位String | 可选 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长4位String | 可选 | 银行卡开户地区 |
| 页面返回URL | ret_url | 变长128位String | 可选 | 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上。注意: 1) URL应使用UTF-8字符集URLEncode编码后传入 2)URL中请不要包含特殊字符 3) 必须是外网地址 |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 后台异步通知商户开户结果 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数;若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”}二级商户号由汇付生成,详见4.2.13.二级商户号录入接口 |
| 页面类型 | 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 | 必须 | 每一种消息类型代表一种交易,此处为817 |
| 应答返回码 | resp_code | 定长6位String | 必须 | 817000–调用成功,其他见返回码表 |
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 可选 | 由汇付生成,用户的唯一性标识 |
| 用户账户号 | acct_id | 变长8位String | 可选 | 用户账户号 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
| 订单号 | order_id | 变长20位String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+10位系统流水号 |
| 开户标识 | reg_flag | 定长8位String | 必须 | 00000000:新开户 00000001:已开户 |
| 手续费金额 | fee_amt | 变长14位String | 可选 | 手续费金额,格式为###.00 |
| 手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长128位String | 必须 | 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文 |
| 页面返回URL | ret_url | 变长128位String | 可选 | 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "817",
"mer_cust_id": "6666000000026086",
"user_cust_id": "6666000000026189",
"order_id": "201572184",
"order_date": "20170828",
"bank_id": "01050000",
"card_no": "6212840000000012345",
"ret_url": "",
"user_name": "",
"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://mertest.chinapnr.com/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "817";
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": "817",
"resp_code": "817000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
成功响应:
200
{
"cmd_id": "817",
"resp_code": "817099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
| 前台页面代开户(cmd_id=817) | |
| 817000 | 交易成功 |
| 817002 | 请求已受理 |
| 817003 | 交易失败 |
| 817099 | 系统异常 |
| 817100 | 请求参数非法 |
| 817101 | 商户无此接口权限 |
| 817102 | 验证签名失败 |
| 817103 | 商户状态异常 |
| 817104 | 用户状态异常 |
| 817107 | 消息类型与签名内容不一致 |
| 817108 | 商户客户号与签名内容不一致 |
| 817109 | 版本号与签名内容不一致 |
| 817204 | 商户配置异常 |
| 817318 | 用户已绑定代扣卡,请勿重复申请 |
| 817316 | 手机号与已绑定卡记录不匹配 |
| 817312 | 企业用户/商户不支持代扣绑卡 |
| 817308 | 省份地区信息非法 |
| 817310 | 产品信息校验失败 |
| 817202 | 交易订单号重复 |
| 817303 | 银行卡号与银行不匹配 |
| 817304 | 该银行卡非借记卡 |
| 817317 | 产品编号已签约 |
| 817216 | 页面已失效 |
| 817250 | 风控信息验证失败 |
| 817112 | 账号不存在 |
| 817203 | 账户可用余额不足 |
| 817450 | 个人用户开户失败 |
| 817305 | 手续费收取失败 |
| 817210 | 短信验证码发送过于频繁 |
| 817307 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 817212 | 账户余额查询失败 |
| 817502 | 系统未开放或暂时关闭,请稍后再试 |
| 817503 | 交易通讯超时,请发起查询交易 |
| 817504 | 交易状态未明,请查询对账结果 |
| 817505 | 重复签约 |
| 817506 | 交易失败,详情查看银行返回信息 |
| 817507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 817508 | 交易处理中(撤销) |
| 817510 | 订单信息为空 |
| 817511 | 订单信息有误 |
| 817512 | 重复交易 |
| 817513 | 交易失败,订单已超时! |
| 817514 | 批量文件格式错误 |
| 817519 | 订单系统错误 |
| 817520 | 持卡人信息为空 |
| 817521 | 持卡人信息有误 |
| 817522 | 持卡人系统错误 |
| 817523 | 卡信息为空 |
| 817524 | 卡信息有误 |
| 817525 | 卡系统错误 |
| 817526 | 卡系统错误 |
| 817529 | 业务受限 |
| 817530 | 业务系统信息为空 |
| 817531 | 业务系统信息有误 |
| 817532 | 业务系统错误 |
| 817533 | 金额超限 |
| 817534 | 查无此交易 |
| 817535 | 网关不支持签约交易 |
| 817536 | 与原交易信息不符 |
| 817537 | 已超过最大查询次数或操作过于频繁 |
| 817538 | 风险受限 |
| 817539 | 网关不支持解约交易! |
| 817540 | 授权码为空 |
| 817541 | 批量状态不正确,无法下载 |
| 817542 | 扣款成功但交易超过规定支付时间 |
| 817543 | 二级商户号为空 |
| 817544 | 商品描述为空 |
| 817545 | 支付类型为空 |
| 817546 | 交易类型为空 |
| 817547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 817548 | 微信公众号支付subOpenId不能为空 |
| 817549 | 无签约记录 |
| 817550 | 账户信息有误 |
| 817551 | 交易金额低于下限 |
| 817552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 817553 | 二级商户名为空! |
| 817554 | 入驻类型为空或值不对! |
| 817555 | 商户入驻信息不匹配! |
| 817556 | 商户入驻失败! |
| 817557 | 银行卡类型不支持 |
| 817558 | 认证失败 |
| 817559 | 交易次数超限 |
| 817560 | 交易失败,请联系发卡银行 |
| 817561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 817562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 817563 | 卡状态不正确 |
| 817564 | 银行卡余额不足 |
| 817565 | 卡信息或银行预留手机号有误 |
| 817566 | 短信验证码已过期 |
| 817567 | 密码输入次数超限 |
| 817568 | 您的银行卡暂不支持该业务 |
| 817571 | 对不起,你所输的验证码有误,请核实后再试! |
| 817572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 817573 | 对不起,您所输的户名有误,请核实后再试! |
| 817574 | 对不起,您的证件类型有误,请核实后再试! |
| 817575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 817576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 817577 | 验证码发送失败 |
| 817578 | 验证码超限或超时 |
| 817579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 817580 | 银行卡状态异常 |
| 817581 | 支付失败,请稍后再试 |
| 817582 | 退款失败,请稍后再试 |
| 817583 | 余额不足次数超限,请隔日再试 |
| 817584 | 单笔金额超限 |
| 817585 | 单日金额超限 |
| 817586 | 单月金额超限 |
| 817587 | 订单信息重复 |
| 817588 | 支付订单信息有误 |
| 817589 | 退款失败,退款金额与订单金额不符 |
| 817590 | 交易失败,参数不合法 |
| 817591 | 系统异常 |
| 817592 | 交易失败,银行系统繁忙,请稍后再试 |
| 817593 | 系统超时 |
| 817594 | 银行处理中,请稍后再试 |
| 817595 | 短信验证码不正确 |
| 817596 | CVV或有效期错误 |
| 817597 | 短息服务异常 |
| 817598 | 短信验证码验证次数超限,请重新发送 |
| 8175F0 | 支付渠道问题 |
| 8175F1 | 交易失败,未开通银联认证支付 |
| 8175F2 | 交易失败,未添加白名单 |
| 8175F3 | 签约失败,请稍后再试 |
| 8175F4 | 该卡当日失败次数超过阀值 |
| 8175F5 | 退款失败,没有找到成功的交易记录 |
| 8175F6 | 查无协议号,须要重新签约! |
| 8175P0 | 交易挂起,需要确认 |
| 8175S2 | 需跳转页面签约 |
| 8175B0 | 无可用支付方式 |
| 8175B1 | 消费超过该商户支持限额 |
| 8175C0 | MCHID不存在 |
| 8175C1 | 二维码已过期 |
| 8175C2 | 授权码相关错误 |
| 8175C3 | 用户支付中,需要输入密码 |
| 8175C4 | XML格式错误 |
| 8175C6 | 签名错误 |
| 8175C7 | 编码格式错误 |
| 8175C8 | 支付帐号错误 |
| 8175C9 | APPID不存在 |
| 8175D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 8175D1 | appid和mch_id不匹配 |
| 8175D2 | 验签失败 |
| 8175D3 | post数据为空 |
| 8175D4 | 无效transaction_id |
| 8175D5 | 分账信息校验失败 |
| 8175D6 | 没有权限使用该产品 |
| 8175D7 | 卖家信息有误 |
| 8175D8 | 买家信息有误 |
| 8175D9 | 卖家买家账号相同 |
| 8175A0 | 透传银行错误描述 |
| 8175A1 | 风控拦截 |
| 8175U0 | 银行无签约信息,或已解约 |
| 8175U1 | pnrpay_element无签约信息,或已解约 |
809 后台代扣绑卡代开户接口¶
功能说明¶
实现消费分期及非消费分期代扣签约绑卡短信请求和签约绑卡和开户(若未开户的话),即开户+代扣绑卡二合一接口,该接口需调用2次,第一次调用时,step_flag传01获取验证码(四要素验证通过的情况下才会发短信,验证不通过则不会发送验证码),获取验证码后第二次调用该接口,step_flag传02验证短信并确认绑卡。前后两次订单号不要一样,但是bind_trans_id必须一致。
- 如果是消费类代扣,则需要先调113接口再调809接口。
- 纯API接口版,无页面
调用方式:系统调用
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 是 | 目前固定为11 |
| 消息类型 | cmd_id | 定长3位String | 是 | 每一种消息类型代表一种交易,此处为“809” |
| 商户客户号 | mer_cust_id | 定长16位String | 是 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 否 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 是 | 格式为“yyyyMMdd” |
| 订单号 | order_id | 变长20位String | 是 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长20位String | 否 | 对应订单录入中产品ID |
| 产品订单号 | product_order_id | 变长20位String | 否 | 本次签约的产品订单号,product_id填写的情况下,必填。 |
| 开户名 | user_name | 变长50位String | 是 | 用户的真实姓名 |
| 开户银行代号 | bank_id | 变长8位String | 是 | 具体见附件:开户银行代号 |
| 银行卡号 | card_no | 变长32位String | 是 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长1位String | 是 | D–借记,储蓄卡 C–贷记,信用卡 注:本接口暂仅支持借记卡 |
| 身份证号 | cert_id | 定长18位String | 否 | 用户客户号跟身份证号至少传一个 |
| 银行预留手机号 | card_ mobile | 变长11位String | 是 | 银行开户时的预留手机号 |
| 银行卡开户省份 | card_prov | 定长4位String | 是 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长4位String | 是 | 银行卡开户地区 |
| 阶段标志 | step_flag | 定长2位String | 是 | 01:发短信阶段 02:验证短信阶段 |
| 短信验证码 | sms_code | 定长6位String | 可选 | 与本次快捷绑卡时的银行预留手机号对应的短信验证码 |
| 绑卡请求流水 | bind_trans_id | 变长20位String | 是 | 标志一个绑卡请求,商户下判断唯一,只能是数字和字母 |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 是 | 后台异步通知商户开户结果 |
| 商户私有域 | mer_priv | 变长120位的String | 否 | 为商户的自定义字段 |
| 扩展域 | extension | 变长512位的String | 否 | 用于扩展请求参数 |
| 设备信息 | 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 | 必须 | 每一种消息类型代表一种交易,此处为809 |
| 应答返回码 | resp_code | 定长6位String | 必须 | 809000–调用成功,其他见返回码附件表 |
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 必须 | 由汇付生成,用户的唯一性标识 |
| 用户账户号 | acct_id | 变长8位String | 可选 | 用户账户号 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
| 订单号 | order_id | 变长20位String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长20位String | 必须 | 对应订单录入中产品ID |
| 产品订单号 | product_order_id | 变长20位String | 必须 | 本次签约的产品订单号 |
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+ 10位系统流水号 |
| 开户标识 | reg_flag | 定长8位String | 必须 | 00000000:新开户 00000001:已开户 |
| 开户银行代号 | bank_id | 变长8位String | 必须 | 对应产品录入中产品ID |
| 银行卡号 | card_no | 变长32位String | 必须 | 待绑定的银行卡卡号 |
| 手续费金额 | fee_amt | 变长14位String | 可选 | 手续费金额,格式为###.00 |
| 手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 后台异步通知商户开户结果 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
返回码¶
| 返回码 | 返回描述 |
| 809099 | 系统异常 |
| 809002 | 请求已受理 |
| 809003 | 交易失败 |
| 809100 | 请求参数非法 |
| 809102 | 验证签名失败 |
| 809103 | 商户状态异常 |
| 809104 | 用户状态异常 |
| 809105 | 账户状态异常 |
| 809110 | 商户号不存在 |
| 809111 | 用户客户号不存在 |
| 809112 | 账号不存在 |
| 809113 | 过渡账户不能出账 |
| 809202 | 交易订单号重复 |
| 809203 | 账户可用余额不足 |
| 809204 | 商户配置异常 |
| 809210 | 短信验证码发送过于频繁 |
| 809212 | 账户余额查询失败 |
| 809300 | 当前商户不支持借记卡 |
| 809301 | 当前商户不支持贷记卡 |
| 809302 | 当前银行卡已绑过快捷卡 |
| 809303 | 银行卡号与银行不匹配 |
| 809304 | 个人用户开户失败 |
| 809305 | 手续费收取失败 |
| 809307 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 809308 | 省份地区信息非法 |
| 809309 | 该银行卡号与卡类型不匹配 |
| 809310 | 产品信息校验失败 |
| 809312 | 企业用户/商户不支持代扣绑卡 |
| 809314 | 请获取验证码 |
| 809316 | 手机号与已绑定卡记录不匹配 |
| 809317 | 产品编号已签约 |
| 809318 | 用户已绑定代扣卡,请勿重复申请 |
| 809320 | 该商户不支持贷记卡 |
| 809321 | 该商户不支持借记卡 |
| 809329 | 理财账户不允许进行支付,分账和作为手续费 |
| 809416 | 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡 |
| 809502 | 系统未开放或暂时关闭,请稍后再试 |
| 809503 | 交易通讯超时,请发起查询交易 |
| 809504 | 交易状态未明,请查询对账结果 |
| 809505 | 重复签约 |
| 809506 | 交易失败,详情查看银行返回信息 |
| 809507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 809508 | 交易处理中(撤销) |
| 809510 | 订单信息为空 |
| 809511 | 订单信息有误 |
| 809512 | 重复交易 |
| 809513 | 交易失败,订单已超时! |
| 809514 | 批量文件格式错误 |
| 809519 | 订单系统错误 |
| 809520 | 持卡人信息为空 |
| 809521 | 持卡人信息有误 |
| 809522 | 持卡人系统错误 |
| 809523 | 卡信息为空 |
| 809524 | 卡信息有误 |
| 809525 | 卡系统错误 |
| 809526 | 卡系统错误 |
| 809529 | 业务受限 |
| 809530 | 业务系统信息为空 |
| 809531 | 业务系统信息有误 |
| 809532 | 业务系统错误 |
| 809533 | 金额超限 |
| 809534 | 查无此交易 |
| 809535 | 网关不支持签约交易 |
| 809536 | 与原交易信息不符 |
| 809537 | 已超过最大查询次数或操作过于频繁 |
| 809538 | 风险受限 |
| 809539 | 网关不支持解约交易! |
| 809540 | 授权码为空 |
| 809541 | 批量状态不正确,无法下载 |
| 809542 | 扣款成功但交易超过规定支付时间 |
| 809543 | 二级商户号为空 |
| 809544 | 商品描述为空 |
| 809545 | 支付类型为空 |
| 809546 | 交易类型为空 |
| 809547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 809548 | 微信公众号支付subOpenId不能为空 |
| 809549 | 无签约记录 |
| 809550 | 账户信息有误 |
| 809551 | 交易金额低于下限 |
| 809552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 809553 | 二级商户名为空! |
| 809554 | 入驻类型为空或值不对! |
| 809555 | 商户入驻信息不匹配! |
| 809556 | 商户入驻失败! |
| 809557 | 银行卡类型不支持 |
| 809558 | 认证失败 |
| 809559 | 交易次数超限 |
| 809560 | 交易失败,请联系发卡银行 |
| 809561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 809562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 809563 | 卡状态不正确 |
| 809564 | 银行卡余额不足 |
| 809565 | 卡信息或银行预留手机号有误 |
| 809566 | 短信验证码已过期 |
| 809567 | 密码输入次数超限 |
| 809568 | 您的银行卡暂不支持该业务 |
| 809571 | 对不起,你所输的验证码有误,请核实后再试! |
| 809572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 809573 | 对不起,您所输的户名有误,请核实后再试! |
| 809574 | 对不起,您的证件类型有误,请核实后再试! |
| 809575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 809576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 809577 | 验证码发送失败 |
| 809578 | 验证码超限或超时 |
| 809579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 809580 | 银行卡状态异常 |
| 809581 | 支付失败,请稍后再试 |
| 809582 | 退款失败,请稍后再试 |
| 809583 | 余额不足次数超限,请隔日再试 |
| 809584 | 单笔金额超限 |
| 809585 | 单日金额超限 |
| 809586 | 单月金额超限 |
| 809587 | 订单信息重复 |
| 809588 | 支付订单信息有误 |
| 809589 | 退款失败,退款金额与订单金额不符 |
| 809590 | 交易失败,参数不合法 |
| 809591 | 系统异常 |
| 809592 | 交易失败,银行系统繁忙,请稍后再试 |
| 809593 | 系统超时 |
| 809594 | 银行处理中,请稍后再试 |
| 809595 | 短信验证码不正确 |
| 809596 | CVV或有效期错误 |
| 809597 | 短息服务异常 |
| 809598 | 短信验证码验证次数超限,请重新发送 |
| 8095F0 | 支付渠道问题 |
| 8095F1 | 交易失败,未开通银联认证支付 |
| 8095F2 | 交易失败,未添加白名单 |
| 8095F3 | 签约失败,请稍后再试 |
| 8095F4 | 该卡当日失败次数超过阀值 |
| 8095F5 | 退款失败,没有找到成功的交易记录 |
| 8095F6 | 查无协议号,须要重新签约! |
| 8095P0 | 交易挂起,需要确认 |
| 8095S2 | 需跳转页面签约 |
| 8095B0 | 无可用支付方式 |
| 8095B1 | 消费超过该商户支持限额 |
| 8095C0 | MCHID不存在 |
| 8095C1 | 二维码已过期 |
| 8095C2 | 授权码相关错误 |
| 8095C3 | 用户支付中,需要输入密码 |
| 8095C4 | XML格式错误 |
| 8095C6 | 签名错误 |
| 8095C7 | 编码格式错误 |
| 8095C8 | 支付帐号错误 |
| 8095C9 | APPID不存在 |
| 8095D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 8095D1 | appid和mch_id不匹配 |
| 8095D2 | 验签失败 |
| 8095D3 | post数据为空 |
| 8095D4 | 无效transaction_id |
| 8095D5 | 分账信息校验失败 |
| 8095D6 | 没有权限使用该产品 |
| 8095D7 | 卖家信息有误 |
| 8095D8 | 买家信息有误 |
| 8095D9 | 卖家买家账号相同 |
| 8095A0 | 透传银行错误描述 |
| 8095A1 | 风控拦截 |
| 8095U0 | 银行无签约信息,或已解约 |
| 8095U1 | pnrpay_element无签约信息,或已解约 |
代码示例¶
java
String valueObj = "{
"cmd_id": "809",
"version": "11",
"bank_id": "01050000",
"bind_trans_id": "2018081413374",
"card_area": "3100",
"card_mobile": "14012312310",
"card_no": "6232511231312345",
"card_prov": "0031",
"cert_id": "140926198306051290",
"dc_flag": "D",
"mer_cust_id": "6666000000026086",
"order_date": "20180814",
"order_id": "2018081413375",
"product_id": "12",
"product_order_id": "2018081413374",
"sms_code": "111111",
"step_flag": "01",
"user_cust_id": "",
"user_name": "唉皮皮",
"bg_ret_url": "http://192.168.0.70:8081/asharp/acceptbgret/virgo"
"mer_priv": "test_merpriv",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "809";
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": "809",
"resp_code": "809000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
成功响应:
200
{
"cmd_id": "809",
"resp_code": "809099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
849 签约代扣支付接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 必须 | 目前固定为10 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为849 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 必须 | 付款客户号 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一,20位内数字或字母的组合 |
| 充值类型 | recharge_type | 定长8位String | 必须 | 02020003: 代扣 |
| 交易类型 | trans_type | 定长8位String | 必须 | 02020101:支付 02020103:非消费代扣支付 |
| 交易金额 | trans_amt | 变长14位String | 必须 | 交易金额,格式为###.00 |
| 入账客户号 | in_cust_id | 定长16位String | 可选 | 业务类型为支付时必传,且入账客户号不能是充值客户本人 |
| 入账账户号 | in_acct_id | 变长9位String | 可选 | 开户返回的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,若分给平台自己,可通过上线邮件中查找商户客户号和子账号信息 | ||||
| 手续费扣款客户号 | fee_cust_id | 定长16位String | 可选 | 业务类型为支付时必传,且入账客户号不能是充值客户本人 |
| 手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 开户返回的acct_id,若是分给平台自己,可以通过邮件查找商户客户号和子账号信息。(in_cust_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 | 可选 | |
| 代扣签约流水 | sign_seq_id | 变长18位String | 必须 | 代扣签约绑卡时返回的唯一签约流水号platform_seq_id |
| 银行卡号 | card_no | 变长32位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 | 必须 | 每一种消息类型代表一种交易,此处为849 |
| 应答返回码 | resp_code | 定长6位String | 必须 | 849000–调用成功,其他见:返回码表 |
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述,中文为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 可选 | 付款客户号,交易类型为免注册网银支付时,非必传 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一,20位内数字或字母的组合 |
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+10位系统流水号 |
| 交易类型 | trans_type | 定长8位String | 可选 | 02020101:支付 02020103:非消费金融代扣支付 |
| 充值类型 | recharge_type | 定长8位String | 可选 | 02020000: 个人网银,02020001: 企业网银 |
| 交易金额 | trans_amt | 变长14位String | 必须 | 交易金额,格式为###.00 |
| 代扣签约流水 | sign_seq_id | 变长18位String | 可选 | 代扣签约订单唯一标识,代扣充值必传,其他充值不需传 |
| 入账客户号 | in_cust_id | 定长16位String | 可选 | 业务类型为支付时必传,且入账客户号不能是充值客户本人 |
| 分账账户串 | div_detail | 变长String | 可选 | 业务类型为支付时必传,分账账户必须是入账客户的账户,数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”}],分账串金额之和需等于充值金额,支持1条分账指令 |
| 手续费金额 | fee_amt | 变长14位String | 可选 | 手续费金额,格式为###.00 |
| 手续费扣款客户号 | fee_cust_id | 定长16位String | 可选 | 手续费扣款客户号 |
| 手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长128位String | 必须 | 返参中的URL为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文。 |
| 商户私有域 | mer_priv | 变长120位String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用。 |
| 扩展域 | extension | 变长512位String | 可选 | 用于扩展请求参数 |
| 银行卡号 | card_no | 变长32位String | 可选 | 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡 |
| 业务请求流水 | biz_trans_id | 变长20位String | 可选 | 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母充值类型为二段式快捷时必填 |
返回码¶
| 返回码 | 返回描述 |
| 849000 | 交易成功 |
| 849002 | 请求已受理 |
| 849003 | 交易失败 |
| 849099 | 系统异常 |
| 849100 | 请求参数非法 |
| 849101 | 商户无此接口权限 |
| 849102 | 验证签名失败 |
| 849103 | 商户状态异常 |
| 849104 | 用户状态异常 |
| 849107 | 消息类型与签名内容不一致 |
| 849108 | 商户客户号与签名内容不一致 |
| 849109 | 版本号与签名内容不一致 |
| 849110 | 商户号不存在 |
| 849111 | 用户客户号不存在 |
| 849202 | 交易订单号重复 |
| 849204 | 商户配置异常 |
| 849215 | 请补录身份信息 |
| 849228 | (入账客户号、入账账户号)与分账串信息必须输入一项 |
| 849230 | 入账客户号和入账账户号必须同时输入 |
| 849231 | 入账用户状态异常 |
| 849302 | 不支持此支付类型 |
| 849303 | 商户支付基础信息未配置 |
| 849305 | 入账客户信息不正确 |
| 849306 | 入账分账串信息不正确 |
| 849308 | 该用户未绑定代扣卡 |
| 849309 | 该用户代扣协议不存在或状态异常 |
| 849311 | 企业用户或商户不支持代扣充值 |
| 849313 | 该充值银行与用户快捷或代扣卡不匹配 |
| 849314 | 支付手续费账户状态不正常 |
| 849318 | 代扣卡不存在或状态异常 |
| 849321 | 支付手续费未配置 |
| 849329 | 理财账户不允许进行支付,分账和作为手续费! |
| 849727 | 分账信息异常 |
| 849733 | 分账支付明细处理失败 |
| 849737 | 支付明细处理失败 |
| 849748 | 二级商户号不存在 |
| 849749 | 二级商户号状态异常 |
| 849315 | 手续费金额不得大于等于交易金额 |
| 849502 | 系统未开放或暂时关闭,请稍后再试 |
| 849503 | 交易通讯超时,请发起查询交易 |
| 849504 | 交易状态未明,请查询对账结果 |
| 849505 | 重复签约 |
| 849506 | 交易失败,详情查看银行返回信息 |
| 849507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 849508 | 交易处理中(撤销) |
| 849510 | 订单信息为空 |
| 849511 | 订单信息有误 |
| 849512 | 重复交易 |
| 849513 | 交易失败,订单已超时! |
| 849514 | 批量文件格式错误 |
| 849519 | 订单系统错误 |
| 849520 | 持卡人信息为空 |
| 849521 | 持卡人信息有误 |
| 849522 | 持卡人系统错误 |
| 849523 | 卡信息为空 |
| 849524 | 卡信息有误 |
| 849525 | 卡系统错误 |
| 849526 | 卡系统错误 |
| 849529 | 业务受限 |
| 849530 | 业务系统信息为空 |
| 849531 | 业务系统信息有误 |
| 849532 | 业务系统错误 |
| 849533 | 金额超限 |
| 849534 | 查无此交易 |
| 849535 | 网关不支持签约交易 |
| 849536 | 与原交易信息不符 |
| 849537 | 已超过最大查询次数或操作过于频繁 |
| 849538 | 风险受限 |
| 849539 | 网关不支持解约交易! |
| 849540 | 授权码为空 |
| 849541 | 批量状态不正确,无法下载 |
| 849542 | 扣款成功但交易超过规定支付时间 |
| 849543 | 二级商户号为空 |
| 849544 | 商品描述为空 |
| 849545 | 支付类型为空 |
| 849546 | 交易类型为空 |
| 849547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 849548 | 微信公众号支付subOpenId不能为空 |
| 849549 | 无签约记录 |
| 849550 | 账户信息有误 |
| 849551 | 交易金额低于下限 |
| 849552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 849553 | 二级商户名为空! |
| 849554 | 入驻类型为空或值不对! |
| 849555 | 商户入驻信息不匹配! |
| 849556 | 商户入驻失败! |
| 849557 | 银行卡类型不支持 |
| 849558 | 认证失败 |
| 849559 | 交易次数超限 |
| 849560 | 交易失败,请联系发卡银行 |
| 849561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 849562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 849563 | 卡状态不正确 |
| 849564 | 银行卡余额不足 |
| 849565 | 卡信息或银行预留手机号有误 |
| 849566 | 短信验证码已过期 |
| 849567 | 密码输入次数超限 |
| 849568 | 您的银行卡暂不支持该业务 |
| 849571 | 对不起,你所输的验证码有误,请核实后再试! |
| 849572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 849573 | 对不起,您所输的户名有误,请核实后再试! |
| 849574 | 对不起,您的证件类型有误,请核实后再试! |
| 849575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 849576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 849577 | 验证码发送失败 |
| 849578 | 验证码超限或超时 |
| 849579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 849580 | 银行卡状态异常 |
| 849581 | 支付失败,请稍后再试 |
| 849582 | 退款失败,请稍后再试 |
| 849583 | 余额不足次数超限,请隔日再试 |
| 849584 | 单笔金额超限 |
| 849585 | 单日金额超限 |
| 849586 | 单月金额超限 |
| 849587 | 订单信息重复 |
| 849588 | 支付订单信息有误 |
| 849589 | 退款失败,退款金额与订单金额不符 |
| 849590 | 交易失败,参数不合法 |
| 849591 | 系统异常 |
| 849592 | 交易失败,银行系统繁忙,请稍后再试 |
| 849593 | 系统超时 |
| 849594 | 银行处理中,请稍后再试 |
| 849595 | 短信验证码不正确 |
| 849596 | CVV或有效期错误 |
| 849597 | 短息服务异常 |
| 849598 | 短信验证码验证次数超限,请重新发送 |
| 8495F0 | 支付渠道问题 |
| 8495F1 | 交易失败,未开通银联认证支付 |
| 8495F2 | 交易失败,未添加白名单 |
| 8495F3 | 签约失败,请稍后再试 |
| 8495F4 | 该卡当日失败次数超过阀值 |
| 8495F5 | 退款失败,没有找到成功的交易记录 |
| 8495F6 | 查无协议号,须要重新签约! |
| 8495P0 | 交易挂起,需要确认 |
| 8495S2 | 需跳转页面签约 |
| 8495B0 | 无可用支付方式 |
| 8495B1 | 消费超过该商户支持限额 |
| 8495C0 | MCHID不存在 |
| 8495C1 | 二维码已过期 |
| 8495C2 | 授权码相关错误 |
| 8495C3 | 用户支付中,需要输入密码 |
| 8495C4 | XML格式错误 |
| 8495C6 | 签名错误 |
| 8495C7 | 编码格式错误 |
| 8495C8 | 支付帐号错误 |
| 8495C9 | APPID不存在 |
| 8495D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 8495D1 | appid和mch_id不匹配 |
| 8495D2 | 验签失败 |
| 8495D3 | post数据为空 |
| 8495D4 | 无效transaction_id |
| 8495D5 | 分账信息校验失败 |
| 8495D6 | 没有权限使用该产品 |
| 8495D7 | 卖家信息有误 |
| 8495D8 | 买家信息有误 |
| 8495D9 | 卖家买家账号相同 |
| 8495A0 | 透传银行错误描述 |
| 8495A1 | 风控拦截 |
| 8495U0 | 银行无签约信息,或已解约 |
| 8495U1 | pnrpay_element无签约信息,或已解约 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "849",
"mer_cust_id": "6666000000026086",
"user_cust_id": "6666000000030895",
"order_date": "20180816",
"order_id": "2018081615344454",
"open_id": "3",
"app_id": "01050000",
"good_tag": "D",
"raw_flag": "6232511231322345",
"trans_amt": "93",
"in_cust_id": "",
"divCustId": "",
"divFreezeFg": "",
"divAcctId": "",
"in_acct_id": "",
"divAmt": "",
"biz_trans_id": "",
"goods_desc": "",
"call_back_url": "",
"order_expire_time": "",
"goods_type": "",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"sign_seq_id": "",
"secondary_mer_id": "",
"mer_priv": "test_merpriv",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "849";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "849",
"resp_code": "849000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "849",
"resp_code": "849099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
825 直接代扣支付¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 必须 | 目前固定为10 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为825 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一,20位内数字或字母的组合 |
| 付款方姓名 | user_name | 变长50位String | 必须 | 用户的真实姓名,中文应使用UTF-8字符集URLEncode编码后传入 |
| 付款方证件类型 | cert_type | 定长8位String | 必须 | 01020100:身份证 01020101:护照 01020102:军官证 01020104:回乡证 01020106:台胞证 01020107:其他 目前仅支持身份证 |
| 付款方证件号 | cert_id | 变长20位String | 必须 | 付款方证件号码,与证件类型对应 |
| 付款方银行预留手机号 | card_mobile | 变长11位String | 必须 | 付款方银行预留手机号,变长11位数字 |
| 付款方银行卡号 | card_no | 变长32位String | 必须 | 付款方银行卡号,变长32位数字 |
| 交易金额 | trans_amt | 变长14位String | 必须 | 交易金额,格式为###.00 |
| 银行账户类型 | card_type | 定长8位String | 必须 | 01050001:对公账户 01050000:对私账户 目前仅支持对私 |
| 入款方账户号 | in_cust_acct_id | 变长9位String | 必须 | 入款方账户号 |
| 入款方用户号 | in_cust_id | 定长16位String | 必须 | 入款方客户号,不能是出款方客户号 |
| 商户后台应答地址 | bg_ret_url | 变长128位String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。 注意: 1) URL中请不要包含特殊字符串 2) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长120位String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用 |
| 扩展域 | extension | 变长512位String | 可选 | 用于扩展请求参数 若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见4.2.9.二级商户号录入接口 |
| 设备信息 | dev_info_json | 变长1024位String | 必须 | 参见 设备静态信息 。 |
| 交易发生地 | transaction_addr | 变长128位String | 必须 | |
| 资金用途 | purpose | 变长128位String | 必须 | |
| 对手方交易IP | user_ip_addr | 变长20位String | 必须 |
返回参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为825 |
| 应答返回码 | resp_code | 定长6位String | 必须 | 825000–调用成功,其他见附件四:返回码表 |
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述,中文为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一,20位内数字或字母的组合 |
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+10位系统流水号 |
| 手续费金额 | fee_amt | 变长14位String | 可选 | 手续费金额,格式为###.00 |
| 手续费扣款客户号 | fee_cust_id | 定长16位String | 可选 | 手续费扣款客户号 |
| 手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 手续费扣款子账户号 |
返回码¶
| 返回码 | 返回描述 |
| 825000 | 交易成功 |
| 825002 | 请求已受理 |
| 825003 | 交易失败 |
| 825099 | 系统异常 |
| 825100 | 请求参数非法 |
| 825102 | 验证签名失败 |
| 825103 | 商户状态异常 |
| 825104 | 用户状态异常 |
| 825105 | 账户状态异常 |
| 825110 | 商户号不存在 |
| 825202 | 交易订单号重复 |
| 825303 | 商户支付基础信息未配置 |
| 825314 | 支付手续费账户状态不正常 |
| 825321 | 支付手续费未配置 |
| 825322 | 入账账户不正确 |
| 825323 | 该银行卡非借记卡 |
| 825502 | 系统未开放或暂时关闭,请稍后再试 |
| 825503 | 交易通讯超时,请发起查询交易 |
| 825504 | 交易状态未明,请查询对账结果 |
| 825505 | 重复签约 |
| 825506 | 交易失败,详情查看银行返回信息 |
| 825507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 825508 | 交易处理中(撤销) |
| 825510 | 订单信息为空 |
| 825511 | 订单信息有误 |
| 825512 | 重复交易 |
| 825513 | 交易失败,订单已超时! |
| 825514 | 批量文件格式错误 |
| 825519 | 订单系统错误 |
| 825520 | 持卡人信息为空 |
| 825521 | 持卡人信息有误 |
| 825522 | 持卡人系统错误 |
| 825523 | 卡信息为空 |
| 825524 | 卡信息有误 |
| 825525 | 卡系统错误 |
| 825526 | 卡系统错误 |
| 825529 | 业务受限 |
| 825530 | 业务系统信息为空 |
| 825531 | 业务系统信息有误 |
| 825532 | 业务系统错误 |
| 825533 | 金额超限 |
| 825534 | 查无此交易 |
| 825535 | 网关不支持签约交易 |
| 825536 | 与原交易信息不符 |
| 825537 | 已超过最大查询次数或操作过于频繁 |
| 825538 | 风险受限 |
| 825539 | 网关不支持解约交易! |
| 825540 | 授权码为空 |
| 825541 | 批量状态不正确,无法下载 |
| 825542 | 扣款成功但交易超过规定支付时间 |
| 825543 | 二级商户号为空 |
| 825544 | 商品描述为空 |
| 825545 | 支付类型为空 |
| 825546 | 交易类型为空 |
| 825547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 825548 | 微信公众号支付subOpenId不能为空 |
| 825549 | 无签约记录 |
| 825550 | 账户信息有误 |
| 825551 | 交易金额低于下限 |
| 825552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 825553 | 二级商户名为空! |
| 825554 | 入驻类型为空或值不对! |
| 825555 | 商户入驻信息不匹配! |
| 825556 | 商户入驻失败! |
| 825557 | 银行卡类型不支持 |
| 825558 | 认证失败 |
| 825559 | 交易次数超限 |
| 825560 | 交易失败,请联系发卡银行 |
| 825561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 825562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 825563 | 卡状态不正确 |
| 825564 | 银行卡余额不足 |
| 825565 | 卡信息或银行预留手机号有误 |
| 825566 | 短信验证码已过期 |
| 825567 | 密码输入次数超限 |
| 825568 | 您的银行卡暂不支持该业务 |
| 825571 | 对不起,你所输的验证码有误,请核实后再试! |
| 825572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 825573 | 对不起,您所输的户名有误,请核实后再试! |
| 825574 | 对不起,您的证件类型有误,请核实后再试! |
| 825575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 825576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 825577 | 验证码发送失败 |
| 825578 | 验证码超限或超时 |
| 825579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 825580 | 银行卡状态异常 |
| 825581 | 支付失败,请稍后再试 |
| 825582 | 退款失败,请稍后再试 |
| 825583 | 余额不足次数超限,请隔日再试 |
| 825584 | 单笔金额超限 |
| 825585 | 单日金额超限 |
| 825586 | 单月金额超限 |
| 825587 | 订单信息重复 |
| 825588 | 支付订单信息有误 |
| 825589 | 退款失败,退款金额与订单金额不符 |
| 825590 | 交易失败,参数不合法 |
| 825591 | 系统异常 |
| 825592 | 交易失败,银行系统繁忙,请稍后再试 |
| 825593 | 系统超时 |
| 825594 | 银行处理中,请稍后再试 |
| 825595 | 短信验证码不正确 |
| 825596 | CVV或有效期错误 |
| 825597 | 短息服务异常 |
| 825598 | 短信验证码验证次数超限,请重新发送 |
| 8255F0 | 支付渠道问题 |
| 8255F1 | 交易失败,未开通银联认证支付 |
| 8255F2 | 交易失败,未添加白名单 |
| 8255F3 | 签约失败,请稍后再试 |
| 8255F4 | 该卡当日失败次数超过阀值 |
| 8255F5 | 退款失败,没有找到成功的交易记录 |
| 8255F6 | 查无协议号,须要重新签约! |
| 8255P0 | 交易挂起,需要确认 |
| 8255S2 | 需跳转页面签约 |
| 8255B0 | 无可用支付方式 |
| 8255B1 | 消费超过该商户支持限额 |
| 8255C0 | MCHID不存在 |
| 8255C1 | 二维码已过期 |
| 8255C2 | 授权码相关错误 |
| 8255C3 | 用户支付中,需要输入密码 |
| 8255C4 | XML格式错误 |
| 8255C6 | 签名错误 |
| 8255C7 | 编码格式错误 |
| 8255C8 | 支付帐号错误 |
| 8255C9 | APPID不存在 |
| 8255D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 8255D1 | appid和mch_id不匹配 |
| 8255D2 | 验签失败 |
| 8255D3 | post数据为空 |
| 8255D4 | 无效transaction_id |
| 8255D5 | 分账信息校验失败 |
| 8255D6 | 没有权限使用该产品 |
| 8255D7 | 卖家信息有误 |
| 8255D8 | 买家信息有误 |
| 8255D9 | 卖家买家账号相同 |
| 8255A0 | 透传银行错误描述 |
| 8255A1 | 风控拦截 |
| 8255U0 | 银行无签约信息,或已解约 |
| 8255U1 | pnrpay_element无签约信息,或已解约 |
| 82563C | 手续费金额不得大于等于交易金额 |
| 825800 | 风控信息验证失败 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "825",
"mer_cust_id": "6666000000026086",
"order_date": "20180816",
"order_id": "2018081615344454",
"user_name": "",
"cert_type": "01020100",
"cert_id": "",
"card_mobile": "13100001111",
"card_no": "6225768612148888",
"gateway_seqId": "1234567890",
"trans_amt": "1.00",
"card_type": "01050000",
"in_cust_acct_id": "",
"in_cust_id": "",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "test_merpriv",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "825";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "825",
"resp_code": "825000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180816",
"order_id": "2018081615344454",
.......
}
失败响应:
200
{
"cmd_id": "825",
"resp_code": "825099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180816",
"order_id": "2018081615344454",
.......
}
105 银行卡解绑接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本 | 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:快捷,为空时表示同时解绑代扣和快捷卡 |
| 短信验证码日期 | 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 | 该银行卡未被绑定为快捷卡 |