快捷类接口¶
常用接入方式¶
快速接入方式(页面版)¶
本 API 提供了开户、绑卡和支付三合一的接口,并且提供页面让用户录入身份和卡号信息,商户不需要额外调用开户和绑卡接口,也不需要开发页面采集用户信息,可以快速接入快捷支付功能。这种接入方式支持贷记卡支付。 涉及到的接口包括: 快捷支付WEB版接口 和 快捷支付APP版接口 选其一、 交易状态查询接口 、 退款接口
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",
.......
}
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",
.......
}
216 快捷支付统合版短信发送¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位String | 必须 | 目前固定为10 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 固定为216 |
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长16位String | 必须 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 |
| 交易金额 | trans_amt | 变长14位String | 必须 | 金额格式是###.00 |
| 分账账户串 | div_detail | 变长String | 可选 | 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 短信发送接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | 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 短信验证接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | 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 银行卡解绑接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本 | 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 银联新快捷支付接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | 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 快捷小额免密支付¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | 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版聚合版一阶段短信发送¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | 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",
.......
}