刷脸类接口¶
210 刷脸支付( APP 版)接口¶
功能说明¶
跳转到汇付 APP 页面,进行绑卡和刷脸支付,或用已绑银行卡直接进行刷脸支付。即绑卡+刷脸支付二合一接口(有页面,适合手机端)。
调用方式:页面浏览器
用户付款银行卡需要预先在银行网银或柜面开通在线支付功能才可进行支付。
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为210 |
| 商户客户号 | 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 | 必须 | 参见 设备静态信息_ 。 |
| 行业类型 | 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 | 可选 | 参考说明 |
| 交易发生地 | 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 | 变长String | 必须 | 固定为210 |
| 返回码 | resp_code | 变长String | 必须 | 210000–调用成功,其他见返回码 |
| 结果描述 | 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) 必须是外网地址 |
| 增值服务 | value_added_service | 定长2位的String | 可选 | 01-优选路由 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
| 扩展域 | extension | 变长512位的String | 可选 |
返回码¶
| 返回码 | 返回描述 |
| 210000 | 支付成功 |
| 210001 | 支付请求受理中 |
| 210099 | 系统异常 |
| 210201 | 页面数据被篡改 |
| 210202 | 交易订单号重复 |
| 210203 | 账户可用余额不足 |
| 210204 | 商户配置异常 |
| 210205 | 短信验证码验证失败 |
| 210206 | 短信验证码发送手机号与验证手机号不一致 |
| 210208 | 短信验证码已失效请重新获取 |
| 210211 | 短信验证码发送失败 |
| 210214 | 查询出现异常 |
| 210215 | 请补录身份信息 |
| 210216 | 短信验证码发送过于频繁或单日发送次数超限 |
| 210301 | 只有个人用户和个体户能快捷支付 |
| 210302 | 商户支付基础信息未配置 |
| 210303 | 支付手续费账户状态不正常 |
| 210304 | 支付手续费未配置 |
| 210306 | 身份证实名验证错误 |
| 210307 | 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡 |
| 210308 | 个人用户信息校验失败 |
| 210309 | 开户手续费收取失败 |
| 210310 | 该笔交易已结束 |
| 210311 | 无任何银行信息 |
| 210314 | 验证码发送失败 |
| 210315 | 验证码发送成功 |
| 210317 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 210319 | 验证码发送中 |
| 210320 | 银行卡解绑失败 |
| 210321 | 操作超时,请重试 |
| 210322 | 省份地区信息非法 |
| 210324 | 银行卡信息验证失败 |
| 210325 | 银行卡号与银行、卡类型信息不匹配 |
| 210502 | 系统未开放或暂时关闭,请稍后再试 |
| 210503 | 交易通讯超时,请发起查询交易 |
| 210504 | 交易状态未明,请查询对账结果 |
| 210505 | 重复签约 |
| 210506 | 交易失败,详情查看银行返回信息 |
| 210507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 210508 | 交易处理中(撤销) |
| 210510 | 订单信息为空 |
| 210511 | 订单信息有误 |
| 210512 | 重复交易 |
| 210513 | 交易失败,订单已超时! |
| 210514 | 批量文件格式错误 |
| 210519 | 订单系统错误 |
| 210520 | 持卡人信息为空 |
| 210521 | 持卡人信息有误 |
| 210522 | 持卡人系统错误 |
| 210523 | 卡信息为空 |
| 210524 | 卡信息有误 |
| 210525 | 卡系统错误 |
| 210526 | 卡系统错误 |
| 210529 | 业务受限 |
| 210530 | 业务系统信息为空 |
| 210531 | 业务系统信息有误 |
| 210532 | 业务系统错误 |
| 210533 | 金额超限 |
| 210534 | 查无此交易 |
| 210535 | 网关不支持签约交易 |
| 210536 | 与原交易信息不符 |
| 210537 | 已超过最大查询次数或操作过于频繁 |
| 210538 | 风险受限 |
| 210539 | 网关不支持解约交易! |
| 210540 | 授权码为空 |
| 210541 | 批量状态不正确,无法下载 |
| 210542 | 扣款成功但交易超过规定支付时间 |
| 210543 | 二级商户号为空 |
| 210544 | 商品描述为空 |
| 210545 | 支付类型为空 |
| 210546 | 交易类型为空 |
| 210547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 210548 | 微信公众号支付subOpenId不能为空 |
| 210549 | 无签约记录 |
| 210550 | 账户信息有误 |
| 210551 | 交易金额低于下限 |
| 210552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 210553 | 二级商户名为空! |
| 210554 | 入驻类型为空或值不对! |
| 210555 | 商户入驻信息不匹配! |
| 210556 | 商户入驻失败! |
| 210557 | 银行卡类型不支持 |
| 210558 | 认证失败 |
| 210559 | 交易次数超限 |
| 210560 | 交易失败,请联系发卡银行 |
| 210561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 210562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 210563 | 卡状态不正确 |
| 210564 | 银行卡余额不足 |
| 210565 | 卡信息或银行预留手机号有误 |
| 210566 | 短信验证码已过期 |
| 210567 | 密码输入次数超限 |
| 210568 | 您的银行卡暂不支持该业务 |
| 210571 | 对不起,你所输的验证码有误,请核实后再试! |
| 210572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 210573 | 对不起,您所输的户名有误,请核实后再试! |
| 210574 | 对不起,您的证件类型有误,请核实后再试! |
| 210575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 210576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 210577 | 验证码发送失败 |
| 210578 | 验证码超限或超时 |
| 210579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 210580 | 银行卡状态异常 |
| 210581 | 支付失败,请稍后再试 |
| 210582 | 退款失败,请稍后再试 |
| 210583 | 余额不足次数超限,请隔日再试 |
| 210584 | 单笔金额超限 |
| 210585 | 单日金额超限 |
| 210586 | 单月金额超限 |
| 210587 | 订单信息重复 |
| 210588 | 支付订单信息有误 |
| 210589 | 退款失败,退款金额与订单金额不符 |
| 210590 | 交易失败,参数不合法 |
| 210591 | 系统异常 |
| 210592 | 交易失败,银行系统繁忙,请稍后再试 |
| 210593 | 系统超时 |
| 210594 | 银行处理中,请稍后再试 |
| 210595 | 短信验证码不正确 |
| 210596 | CVV或有效期错误 |
| 210597 | 短息服务异常 |
| 210598 | 短信验证码验证次数超限,请重新发送 |
| 2105F0 | 支付渠道问题 |
| 2105F1 | 交易失败,未开通银联认证支付 |
| 2105F2 | 交易失败,未添加白名单 |
| 2105F3 | 签约失败,请稍后再试 |
| 2105F4 | 该卡当日失败次数超过阀值 |
| 2105F5 | 退款失败,没有找到成功的交易记录 |
| 2105F6 | 查无协议号,须要重新签约! |
| 2105P0 | 交易挂起,需要确认 |
| 2105S2 | 需跳转页面签约 |
| 2105B0 | 无可用支付方式 |
| 2105B1 | 消费超过该商户支持限额 |
| 2105C0 | MCHID不存在 |
| 2105C1 | 二维码已过期 |
| 2105C2 | 授权码相关错误 |
| 2105C3 | 用户支付中,需要输入密码 |
| 2105C4 | XML格式错误 |
| 2105C6 | 签名错误 |
| 2105C7 | 编码格式错误 |
| 2105C8 | 支付帐号错误 |
| 2105C9 | APPID不存在 |
| 2105D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 2105D1 | appid和mch_id不匹配 |
| 2105D2 | 验签失败 |
| 2105D3 | post数据为空 |
| 2105D4 | 无效transaction_id |
| 2105D5 | 分账信息校验失败 |
| 2105D6 | 没有权限使用该产品 |
| 2105D7 | 卖家信息有误 |
| 2105D8 | 买家信息有误 |
| 2105D9 | 卖家买家账号相同 |
| 2105A0 | 透传银行错误描述 |
| 2105A1 | 风控拦截 |
| 2105U0 | 银行无签约信息,或已解约 |
| 2105U1 | pnrpay_element无签约信息,或已解约 |
| 210721 | 分账串内容不能超过五个 |
| 210722 | 分账串部分字段为空 |
| 210723 | 分账串金额格式错误 |
| 210724 | 分账串累计金额不等于订单金额 |
| 210725 | 分账信息用户状态异常 |
| 210726 | 分账信息账户状态异常 |
| 210727 | 分账信息异常 |
| 210728 | 分账串账户信息格式错误 |
| 210729 | 分账串账户异常 |
| 210732 | 分账串客户号信息格式错误 |
| 210739 | 快捷支付短信发送异常 |
| 210741 | 分账串内容重复 |
| 210742 | 快捷支付成功,分账失败 |
| 210743 | 请获取验证码 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "210",
"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 = "210";
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": "210",
"resp_code": "210000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "210",
"resp_code": "210099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
211 刷脸支付后台版接口¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为211 |
| 商户客户号 | 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 | 必须 | 参见 设备静态信息_ 。 |
| 绑定银行卡ID | bind_card_id | 变长20位String | 必须 | 付款人代扣支付时的代扣绑卡的ID (代扣支付时的返回参数) |
| 行业类型 | 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 | 可选 | 参考说明 |
| 交易发生地 | 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 | 变长String | 必须 | 固定为211 |
| 返回码 | resp_code | 变长String | 必须 | 211000–调用成功,其他见返回码 |
| 结果描述 | 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 | 必须 | 返回银行卡号掩码 |
| 借贷标记 | 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) 必须是外网地址 |
| 增值服务 | value_added_service | 定长2位的String | 可选 | 01-优选路由 |
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
| 扩展域 | extension | 变长512位的String | 可选 | |
| 绑定银行卡ID | bind_card_id | 变长20位String | 可选 | 付款人代扣支付时的代扣绑卡的ID (代扣支付时的返回参数) |
返回码¶
| 返回码 | 返回描述 |
| 211000 | 支付成功 |
| 211001 | 支付请求受理中 |
| 211099 | 系统异常 |
| 211201 | 页面数据被篡改 |
| 211202 | 交易订单号重复 |
| 211203 | 账户可用余额不足 |
| 211204 | 商户配置异常 |
| 211205 | 短信验证码验证失败 |
| 211206 | 短信验证码发送手机号与验证手机号不一致 |
| 211208 | 短信验证码已失效请重新获取 |
| 211211 | 短信验证码发送失败 |
| 211214 | 查询出现异常 |
| 211215 | 请补录身份信息 |
| 211216 | 短信验证码发送过于频繁或单日发送次数超限 |
| 211301 | 只有个人用户和个体户能快捷支付 |
| 211302 | 商户支付基础信息未配置 |
| 211303 | 支付手续费账户状态不正常 |
| 211304 | 支付手续费未配置 |
| 211306 | 身份证实名验证错误 |
| 211307 | 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡 |
| 211308 | 个人用户信息校验失败 |
| 211309 | 开户手续费收取失败 |
| 211310 | 该笔交易已结束 |
| 211311 | 无任何银行信息 |
| 211314 | 验证码发送失败 |
| 211315 | 验证码发送成功 |
| 211317 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 211319 | 验证码发送中 |
| 211320 | 银行卡解绑失败 |
| 211321 | 操作超时,请重试 |
| 211322 | 省份地区信息非法 |
| 211324 | 银行卡信息验证失败 |
| 211325 | 银行卡号与银行、卡类型信息不匹配 |
| 211502 | 系统未开放或暂时关闭,请稍后再试 |
| 211503 | 交易通讯超时,请发起查询交易 |
| 211504 | 交易状态未明,请查询对账结果 |
| 211505 | 重复签约 |
| 211506 | 交易失败,详情查看银行返回信息 |
| 211507 | 验卡失败,具体问题参见对应银行认证失败原因 |
| 211508 | 交易处理中(撤销) |
| 211510 | 订单信息为空 |
| 211511 | 订单信息有误 |
| 211512 | 重复交易 |
| 211513 | 交易失败,订单已超时! |
| 211514 | 批量文件格式错误 |
| 211519 | 订单系统错误 |
| 211520 | 持卡人信息为空 |
| 211521 | 持卡人信息有误 |
| 211522 | 持卡人系统错误 |
| 211523 | 卡信息为空 |
| 211524 | 卡信息有误 |
| 211525 | 卡系统错误 |
| 211526 | 卡系统错误 |
| 211529 | 业务受限 |
| 211530 | 业务系统信息为空 |
| 211531 | 业务系统信息有误 |
| 211532 | 业务系统错误 |
| 211533 | 金额超限 |
| 211534 | 查无此交易 |
| 211535 | 网关不支持签约交易 |
| 211536 | 与原交易信息不符 |
| 211537 | 已超过最大查询次数或操作过于频繁 |
| 211538 | 风险受限 |
| 211539 | 网关不支持解约交易! |
| 211540 | 授权码为空 |
| 211541 | 批量状态不正确,无法下载 |
| 211542 | 扣款成功但交易超过规定支付时间 |
| 211543 | 二级商户号为空 |
| 211544 | 商品描述为空 |
| 211545 | 支付类型为空 |
| 211546 | 交易类型为空 |
| 211547 | 支付宝JS支付买家支付宝账号和买家支付宝ID不能同时为空 |
| 211548 | 微信公众号支付subOpenId不能为空 |
| 211549 | 无签约记录 |
| 211550 | 账户信息有误 |
| 211551 | 交易金额低于下限 |
| 211552 | 交易失败,未在我方进行实名认证或认证不通过 |
| 211553 | 二级商户名为空! |
| 211554 | 入驻类型为空或值不对! |
| 211555 | 商户入驻信息不匹配! |
| 211556 | 商户入驻失败! |
| 211557 | 银行卡类型不支持 |
| 211558 | 认证失败 |
| 211559 | 交易次数超限 |
| 211560 | 交易失败,请联系发卡银行 |
| 211561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 211562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 211563 | 卡状态不正确 |
| 211564 | 银行卡余额不足 |
| 211565 | 卡信息或银行预留手机号有误 |
| 211566 | 短信验证码已过期 |
| 211567 | 密码输入次数超限 |
| 211568 | 您的银行卡暂不支持该业务 |
| 211571 | 对不起,你所输的验证码有误,请核实后再试! |
| 211572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡 |
| 211573 | 对不起,您所输的户名有误,请核实后再试! |
| 211574 | 对不起,您的证件类型有误,请核实后再试! |
| 211575 | 对不起,您的所输证件号码有误,请核实后再试! |
| 211576 | 对不起,您所输的手机号码有误,,请核实后再试! |
| 211577 | 验证码发送失败 |
| 211578 | 验证码超限或超时 |
| 211579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 211580 | 银行卡状态异常 |
| 211581 | 支付失败,请稍后再试 |
| 211582 | 退款失败,请稍后再试 |
| 211583 | 余额不足次数超限,请隔日再试 |
| 211584 | 单笔金额超限 |
| 211585 | 单日金额超限 |
| 211586 | 单月金额超限 |
| 211587 | 订单信息重复 |
| 211588 | 支付订单信息有误 |
| 211589 | 退款失败,退款金额与订单金额不符 |
| 211590 | 交易失败,参数不合法 |
| 211591 | 系统异常 |
| 211592 | 交易失败,银行系统繁忙,请稍后再试 |
| 211593 | 系统超时 |
| 211594 | 银行处理中,请稍后再试 |
| 211595 | 短信验证码不正确 |
| 211596 | CVV或有效期错误 |
| 211597 | 短息服务异常 |
| 211598 | 短信验证码验证次数超限,请重新发送 |
| 2115F0 | 支付渠道问题 |
| 2115F1 | 交易失败,未开通银联认证支付 |
| 2115F2 | 交易失败,未添加白名单 |
| 2115F3 | 签约失败,请稍后再试 |
| 2115F4 | 该卡当日失败次数超过阀值 |
| 2115F5 | 退款失败,没有找到成功的交易记录 |
| 2115F6 | 查无协议号,须要重新签约! |
| 2115P0 | 交易挂起,需要确认 |
| 2115S2 | 需跳转页面签约 |
| 2115B0 | 无可用支付方式 |
| 2115B1 | 消费超过该商户支持限额 |
| 2115C0 | MCHID不存在 |
| 2115C1 | 二维码已过期 |
| 2115C2 | 授权码相关错误 |
| 2115C3 | 用户支付中,需要输入密码 |
| 2115C4 | XML格式错误 |
| 2115C6 | 签名错误 |
| 2115C7 | 编码格式错误 |
| 2115C8 | 支付帐号错误 |
| 2115C9 | APPID不存在 |
| 2115D0 | 获取顾客账户信息失败,请刷新付款码后重新收款 |
| 2115D1 | appid和mch_id不匹配 |
| 2115D2 | 验签失败 |
| 2115D3 | post数据为空 |
| 2115D4 | 无效transaction_id |
| 2115D5 | 分账信息校验失败 |
| 2115D6 | 没有权限使用该产品 |
| 2115D7 | 卖家信息有误 |
| 2115D8 | 买家信息有误 |
| 2115D9 | 卖家买家账号相同 |
| 2115A0 | 透传银行错误描述 |
| 2115A1 | 风控拦截 |
| 2115U0 | 银行无签约信息,或已解约 |
| 2115U1 | pnrpay_element无签约信息,或已解约 |
| 211721 | 分账串内容不能超过五个 |
| 211722 | 分账串部分字段为空 |
| 211723 | 分账串金额格式错误 |
| 211724 | 分账串累计金额不等于订单金额 |
| 211725 | 分账信息用户状态异常 |
| 211726 | 分账信息账户状态异常 |
| 211727 | 分账信息异常 |
| 211728 | 分账串账户信息格式错误 |
| 211729 | 分账串账户异常 |
| 211732 | 分账串客户号信息格式错误 |
| 211739 | 快捷支付短信发送异常 |
| 211741 | 分账串内容重复 |
| 211742 | 快捷支付成功,分账失败 |
| 211743 | 请获取验证码 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "211",
"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 = "211";
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": "211",
"resp_code": "211000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "211",
"resp_code": "211099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}