取现/代发类接口¶
104 绑定取现卡接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位String | 必须 | 目前固定为10 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为104 |
商户唯一标识号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
用户唯一标识号 | user_cust_id | 定长16位String | 必须 | 由汇付生成,用户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位String | 必须 | |
银行代号 | bank_id | 定长8位String | 可选 | 对公:必填;对私:可选 |
银行卡号 | card_no | 变长32位String | 必须 | |
借贷标记 | dc_flag | 定长1位String | 必须 | 0:借记卡(固定) |
银行卡开户省份 | card_prov | 定长4位String | 必须 | |
银行卡开户地区 | card_area | 定长4位String | 必须 | |
后台返回地址 | bg_ret_url | 变长128位String | 必须 | 通过后台异步通知商户绑卡结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位String | 可选 | 用于扩展请求参数 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为104 |
应答返回码 | resp_code | 定长6位String | 必须 | 104000–调用成功,其他见一级返回码表 |
应答返回描述 | resp_desc | 变长String | 必须 | 一级返回码的对应中文描述 |
商户唯一标识号 | mer_cust_id | 定长16位 | 必须 | 由汇付生成,商户的唯一性标识 |
用户唯一标识号 | user_cust_id | 定长16位 | 必须 | 由汇付生成,用户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位String | 必须 | |
本平台交易唯一标识号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 |
银行代号 | bank_id | 变长8位String | 必须 | 银行代号 |
银行卡号 | card_no | 变长32位String | 必须 | 银行卡号掩码 |
银行卡绑定ID | cash_bind_card_id | 变长20位String | 必须 | 取现接口需要用到此ID |
借贷标记 | dc_flag | 定长1位String | 必须 | 0:借记卡 1:贷记卡 |
银行卡开户省份 | card_prov | 定长4位String | 必须 | |
银行卡开户地区 | card_area | 定长4位String | 必须 | |
后台返回地址 | bg_ret_url | 变长128位String | 必须 | 通过后台异步通知商户绑卡结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "104",
"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 = "104";
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": "104",
"resp_code": "104000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "104",
"resp_code": "104304",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
返回码 | 返回描述 |
104000 | 交易成功 |
104002 | 请求已受理 |
104003 | 交易失败 |
104099 | 系统异常 |
104100 | 请求参数非法 |
104101 | 商户无此接口权限 |
104102 | 验证签名失败 |
104103 | 商户状态异常 |
104104 | 用户状态异常 |
104107 | 消息类型与签名内容不一致 |
104108 | 商户客户号与签名内容不一致 |
104109 | 版本号与签名内容不一致 |
104110 | 商户号不存在 |
104202 | 交易订单号重复 |
104308 | 省份地区信息非法 |
104319 | 该银行卡号已绑定为取现卡,请勿重复绑卡 |
104322 | 该卡状态不正常 |
104601 | 贷记卡不能绑定为取现卡 |
811 取现绑卡代开户接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位String | 必须 | 目前固定为10 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为811 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
用户客户号 | user_cust_id | 定长16位String | 可选 | 由汇付生成,商户的唯一性标识。条件可选:如用户已经开户,可选填该参数,如填写,接口会以该参数来辨识用户,不再匹配客户用户名和身份证号的正确性,但依然会校验参数格式;如不填写,接口会以客户用户名及身份证号匹配客户;如果用户未开户,请不填该参数 |
客户用户名 | user_name | 变长50位String | 可选 | 用户的真实姓名。条件可选,条件参考用户客户号描述 |
身份证号 | cert_id | 定长18位String | 可选 | 用户身份证号,目前仅支持身份证。条件可选,条件参考用户客户号描述 |
注册手机号 | user_mobile | 定长11位String | 可选 | 用户手机号可选,条件参考用户客户号描述 |
开户银行代号 | bank_id | 定长8位String | 可选 | 对公:必填;对私:可选 |
银行卡号 | card_no | 变长32位String | 必须 | 待绑定的银行卡号 |
借贷标记 | dc_flag | 定长1位String | 必须 | D–借记,储蓄卡;C–贷记,信用卡;注:本接口暂仅支持借记卡 |
银行卡开户省份 | card_prov | 定长4位String | 可选 | 银行卡开户省份 |
银行卡开户地区 | card_area | 定长4位String | 可选 | 银行卡开户地区 |
是否默认取现卡 | is_default | 定长8位String | 必须 | 00000000:非默认取现卡;00000001:默认取现卡。用户首次绑卡时,无论传任何值,绑定成功后都会设置为默认取现卡;用户已有默认取现卡时,新绑定默认取现卡会替换掉原有默认取现卡 |
商户后台应答地址 | 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 | 必须 | 参见 设备静态信息 。 |
职业 | occupation | 定长2位String | 必须 | 见个人职业分类表 |
国籍 | nationality | 变长128位的String | 必须 | 例如:中华人民共和国 |
个人职业分类表:
职业名称 | 编号 | 职业名称 | 编号 | |
---|---|---|---|---|
国家机关、党群机关、企事业单位负责人 | 01 | 卫生行业从业人员 | 08 | |
金融业从业人员 | 02 | IT业从业人员 | 09 | |
房地产业从业人员 | 03 | 农林牧渔劳动者 | 10 | |
商贸从业人员 | 04 | 生产工作、运输工作和部分体力劳动者 | 11 | |
自由职业者 | 05 | 退休人员 | 12 | |
科教文从业人员 | 06 | 不便分类的其他劳动者 | 13 | |
制造业从业人员 | 07 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为“811” |
应答返回码 | resp_code | 定长6位String | 必须 | 811000–调用成功,其他见返回码附件表 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
已开户标识 | reg_flag | 定长8位String | 必须 | 00000000:新开户 00000001:已开户 |
用户客户号 | user_cust_id | 定长16位String | 可选 | 由汇付生成,用户的唯一性标识, 成功时必返 |
用户账户号 | acct_id | 变长8位String | 可选 | 用户账户号 新开户且成功时必返 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+ 10位系统流水号 |
银行卡绑定ID | cash_bind_card_id | 变长20位String | 必须 | 异步返回。用作后续取现使用 |
手续费金额 | fee_amt | 变长14位String | 可选 | 手续费金额,格式为###.00 |
手续费子账户号 | fee_acct_id | 变长9位String | 可选 | 手续费扣款子账户号 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "811",
"mer_cust_id": "6666000000026086",
"user_cust_id": "6666000000030895",
"order_date": "20180816",
"order_id": "2018081615344454",
"product_id": "3",
"bank_id": "01050000",
"dc_flag": "D",
"card_no": "6232511231322345",
"card_mobile": "13761708193",
"card_prov": "0031",
"card_area": "3100",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"is_default": "00000001",
"mer_priv": "test_merpriv",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "811";
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": "811",
"resp_code": "811000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
成功响应:
200
{
"cmd_id": "811",
"resp_code": "811099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
返回码 | 返回描述 |
811000 | 交易成功 |
811002 | 请求已受理 |
811003 | 交易失败 |
811099 | 系统异常 |
811100 | 请求参数非法 |
811101 | 商户无此接口权限 |
811102 | 验证签名失败 |
811103 | 商户状态异常 |
811104 | 用户状态异常 |
811107 | 消息类型与签名内容不一致 |
811108 | 商户客户号与签名内容不一致 |
811109 | 版本号与签名内容不一致 |
811110 | 商户号不存在 |
811202 | 交易订单号重复 |
811203 | 手续费账户余额不足 |
811204 | 商户配置异常 |
811300 | 该业务仅支持个人用户执行 |
811302 | 用户已绑定快捷或代扣卡,不能再绑定取现卡 |
811303 | 银行卡号与银行不匹配 |
811304 | 银行卡类型错误 |
811305 | 手续费扣款失败 |
811308 | 省份地区信息非法 |
811319 | 该银行卡号已绑定为取现卡,请勿重复绑卡 |
811322 | 该卡状态异常 |
811325 | 银行卡与姓名或身份证不符 |
811407 | 代开户失败 |
202 取现接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处固定为202 |
商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 |
用户客户号 | user_cust_id | 定长16位的String | 必须 | 由汇付生成,用户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
订单号 | order_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
交易金额 | trans_amt | 变长14位的String | 必须 | 泛指交易金额,金额格式必须是###.00,比如2.00,2.01 |
取现子账户 | cash_acct_id | 变长9位的String | 可选 | 取现子账户 |
取现绑定银行卡ID | cash_bind_card_id | 变长20位的String | 必须 | 取现绑卡返回的ID |
手续费收取对象 | fee_obj | 定长8位的String | 可选 | 用户商户指定取现手续费的收取对象,优先级别高于商户配置的收取对象 02050200:向商户收取 02050201:向用户收取 空白默认为向商户收取 |
手续费收取子账户 | fee_acct_id | 变长9位的String | 可选 | 向商户收取必填 向用户收取可忽略 |
取现方式 | cash_type | 定长8位的String | 必须 | 02030000:T+0取现;02030010:T+1取现;02030020:D+1取现 |
服务费金额 | serv_fee_amt | 变长14位的String | 可选 | |
服务费账户号 | serv_acct_id | 变长9位的String | 可选 | |
服务费客户号 | serv_cust_id | 定长16位的String | 可选 | |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户取现结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
交易发生地 | transaction_addr | 变长128位String | 必须 | |
资金用途 | purpose | 变长128位String | 必须 | |
对手方交易IP | user_ip_addr | 变长20位的String | 必须 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长String | 必须 | 每一种消息类型代表一种交易,此处为202 |
返回码 | resp_code | 变长String | 必须 | 202000–调用成功,其他见返回码 |
结果描述 | resp_desc | 变长String | 必须 | 返回描述 |
商户客户号 | mer_cust_id | 变长16位的String | 必须 | |
用户客户号 | user_cust_id | 变长16位的String | 必须 | |
订单日期 | order_date | 定长8位 | 必须 | |
订单号 | order_id | 变长20位的String | 必须 | |
平台流水id | platform_seq_id | 定长18位String | 必须 | 交易流水号 |
交易金额 | trans_amt | 变长14位的String | 必须 | |
实际到账金额 | real_trans_amt | 变长14位的String | 可选 | 取现成功实际到账金额,各种原因导致取现失败则不传 |
取现绑定银行卡ID | cash_bind_card_id | 变长20位的String | 必须 | |
开户银行代号 | bank_id | 变长8位的String | 可选 | 具体见附件:开户银行代号 |
手续费金额 | fee_amt | 变长14位的String | 必须 | |
手续费扣款客户号 | fee_cust_id | 变长16位的String | 必须 | |
手续费扣款子账户号 | fee_acct_id | 变长9位的String | 必须 | |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户取现结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | |
通道描述 | pay_desc | 变长256位的String | 可选 | 通道返回描述 |
返回码¶
返回码 | 返回描述 |
202000 | 交易成功 |
202002 | 请求已受理 |
202003 | 交易失败 |
202099 | 系统异常 |
202100 | 请求参数非法 |
202101 | 商户无此接口权限 |
202102 | 验证签名失败 |
202103 | 商户状态异常 |
202104 | 用户状态异常 |
202105 | 账户状态异常 |
202107 | 消息类型与签名内容不一致 |
202108 | 商户客户号与签名内容不一致 |
202109 | 版本号与签名内容不一致 |
202110 | 商户号不存在 |
202113 | 过渡账户不能出账 |
202202 | 交易订单号重复 |
202204 | 商户配置异常 |
202300 | 银行卡信息不存在 |
202301 | 银行卡状态异常 |
202302 | 银行卡不是取现卡 |
202304 | 该商户不支持该取现方式 |
202305 | 取现金额小于等于取现费用 |
202310 | 取现用户不能为商户本身 |
202311 | 该商户暂时不允许T0取现 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "202",
"mer_cust_id": "6666000000217291",
"user_cust_id": "6666000000291215",
"order_date": "20180322",
"order_id": "20107063",
"trans_amt": "0.01",
"cash_bind_card_id": "5899770",
"fee_obj": "02050200",
"fee_acct_id": "219871",
"cash_type": "02030010",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "test_mer_priv",
"extension": "test_extension"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "202";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "202",
"resp_code": "202000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "202",
"resp_code": "202099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
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=0时可以不传,其他情况为必须. |
卡业务类型 | 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 | 该银行卡未被绑定为快捷卡 |
213 代发接口¶
功能说明¶
商户调用该接口可以进行代发交易
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为213 |
商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” |
出账客户号 | pay_cust_id | 定长16位的String | 必须 | |
出账账户号 | pay_acct_id | 变长9位 | 必须 | |
订单号 | order_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
交易金额 | trans_amt | 变长14位String | 必须 | (金额格式必须是###.00)比如2.00,2.01 |
收款账户类型 | acct_type | 定长1位String | 必须 | 银行对公账户(1),银行对私账户(2) |
银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 |
银行编号 | bank_id | 变长8位 | Y(acct_type=1)/N | 对公必填,对私选填 |
银行名称 | bank_name | 变长50位String | Y(acct_type=1)/N | 对公必填,对私选填 |
开户行省份 | bank_prov | 定长4位String | 可选 | 填写编号(商户有省份值请填入) ; 与地区值同时传或都不传 |
开户行地区 | bank_area | 定长4位String | 可选 | 填写编号(商户有地区值请填入); 与省份值同时传或都不传 |
支行名称 | bank_subbranch | 变长50位String | 可选 | |
联行号 | unite_bank_code | 变长20位String | 可选 | |
代发用途 | purpose | 变长20位String | 必须 | |
收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 |
收款人手机号 | mobile | 变长11位String | 可选 | |
证件类型 | cert_type | 变长2位String | Y(acct_type=2)/N | 00身份证 01护照 02军官证 03士兵证 04回乡证 06警官证 08台胞证 05户口本 13其他 (收款账户为对私必传,对公为可选) |
证件号 | cert_id | 变长20位String | Y(acct_type=2)/N | (收款账户为对私必传,对公为可选) |
代发方式 | trans_mode | 变长2位String | 可选 | 代发的到账时间。 00 : T0 ; 01 : T1 (不传默认走T0), |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
交易发生地 | transaction_addr | 变长128位的String | 必须 | |
对手方交易IP | user_ip_addr | 变长20位的String | 必须 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为213 |
应答返回码 | resp_code | 定长6位String | 必须 | 213001—处理中 , 其他见返回码 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 |
订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 |
本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+ 10位系统流水号 |
手续费 | fee_amt | 变长14位String | 必须 | |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
通道描述 | pay_desc | 变长256位的String | 可选 | 通道返回描述 |
返回码¶
返回码 | 返回描述 |
213000 | 交易成功 |
213001 | 请求处理中 |
213003 | 交易失败 |
213098 | 系统超时 |
213099 | 系统异常 |
213100 | 请求参数非法 |
213101 | 商户无此接口权限 |
213102 | 验证签名失败 |
213103 | 商户状态异常 |
213107 | 消息类型与签名内容不一致 |
213108 | 商户客户号与签名内容不一致 |
213109 | 版本号与签名内容不一致 |
213110 | 商户号不存在 |
213112 | 出账账号不存在 |
213113 | 过渡账户不能出账 |
213303 | 银行卡信息与银行信息不匹配 |
213304 | 银行卡类型错误 |
213320 | 交易订单号重复 |
213326 | 商户客户号与出账客户号不一致 |
213331 | 代发手续费账户未配置 |
213321 | 代发手续费未配置 |
213328 | 卡号或证件号或电话号码解密失败 |
213322 | 代发失败 |
213329 | 交易收款人已列入反洗钱黑名单,交易已被禁止 |
213333 | 您尚未开通T0/T1代发功能,请联系汇付业务人员 |
213334 | 账户余额或手续费余额不足,请先进行充值 |
代码示例¶
java
String valueObj = "{
"cmd_id": "213",
"version": "10",
"mer_cust_id": "6666000000026086",
"order_date": "20171228",
"order_id": "200111127",
"pay_cust_id": "6666000000026086",
"pay_acct_id": "79506",
"trans_amt": "1.36",
"acct_type": "1",
"bank_card_no": "62533820171228",
"bank_name": "",
"bank_prov": "",
"bank_area": "",
"bank_subbranch": "",
"bank_id": "",
"purpose": "啊啊啊啊啊",
"cust_name": "飞飞飞",
"mobile": "16666666666",
"cert_type": "00",
"cert_id": "220523198005162957",
"trans_mode": "01",
"ret_url": "",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "test_mer_priv",
"extension": ""
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "213";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "213",
"resp_code": "213000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "213",
"resp_code": "213099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
313 代发电子回单¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为313 |
商户客户号 | mer_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 | 必须 | 通过后台异步通知商户回执单生成结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
同步返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为313 |
应答返回码 | resp_code | 定长6位String | 必须 | 313001—处理中 , 其他见返回码表 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
原订单日期 | order_date | 定长8位String | 可选 | 格式为YYYYMMDD,例如:20160307 |
原订单号 | order_id | 变长20位String | 可选 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 |
原平台交易唯一标识号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 |
银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 |
代发用途 | purpose | 变长20位String | 必须 | 代发用途 |
商户后台应答返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 定长3位String | 必须 | 313 |
应答返回码 | resp_code | 定长6位String | 必须 | 313000–调用成功,其他见返回码表 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
原订单日期 | order_date | 定长8位String | 可选 | 格式为YYYYMMDD,例如:20160307 |
原订单号 | order_id | 变长20位String | 可选 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 |
原平台交易唯一标识号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
回执单下载地址 | receipt_url | 变长256位的String | 必须 | 生成的电子签章回执单的下载地址 |
收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 |
银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 |
代发用途 | purpose | 变长20位String | 必须 |
代码示例¶
java
String valueObj = "{
"version": "10",
"cmd_id": "313",
"mer_cust_id": "6666000000028641",
"order_date": "20180509",
"order_id": "1000001",
"platform_seq_id": "201805090000010264",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json"
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "313";
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": "313",
"resp_code": "313000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "313",
"resp_code": "313099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
返回码¶
返回码 | 返回描述 |
313000 | 交易成功 |
313003 | 交易失败 |
313099 | 系统异常 |
313100 | 请求参数非法 |
313101 | 商户无此接口权限 |
313102 | 验证签名失败 |
313103 | 商户状态异常 |
313104 | 用户状态异常 |
313107 | 消息类型与签名内容不一致 |
313108 | 商户客户号与签名内容不一致 |
313109 | 版本号与签名内容不一致 |
313110 | 商户号不存在 |
313310 | 产品信息校验失败 |
313201 | 该商户未开通代发回执单权限 |
313202 | 未查询到该笔交易 |
229 批量代发¶
功能说明¶
线下充值批量代发(需先调用商户文件上传接口(122)上传批量代发文件)
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位String | 必须 | 目前固定为10 |
消息类型 | cmd_id | 定长3位String | 必须 | 固定为229 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
附件编号 | attach_no | 变长20位的String | 必须 | 商户下唯一,请求文件上传(122)时的参数 |
代发出账账户号 | out_acct_id | 变长9位 | 必须 | 线下充值入款账户号 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
代发结果通知地址 | pay_ret_url | 变长128位的String | 必须 | |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
文件处理同步异步返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长3位String | 必须 | 固定为229 |
应答返回码 | resp_code | 定长6位String | 必须 | 229000–调用成功,其他见返回码附件表 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 文件处理异步通知地址 |
代发结果通知地址 | pay_ret_url | 变长128位的String | 必须 | 代发结果异步通知地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
交易金额 | trans_amt | 变长14位String | 可选 | 交易金额,格式为###.00 |
商户流水号 | mer_seq_id | 变长20位String | 可选 | 代发文件中的商户流水号 |
代发日期 | pay_date | 定长8位String | 可选 |
代发处理同步异步返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 变长3位String | 必须 | 固定为229 |
应答返回码 | resp_code | 定长6位String | 必须 | 229000–调用成功,其他见返回码附件表 |
应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 |
商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 |
附件编号 | attach_no | 变长20位的String | 必须 | 商户下唯一,请求文件上传(122)时的参数 |
代发出账账户号 | out_acct_id | 变长9位 | 必须 | 线下充值入款账户号 |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 文件处理异步通知地址 |
代发结果通知地址 | pay_ret_url | 变长128位的String | 必须 | 代发结果异步通知地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
交易金额 | trans_amt | 变长14位String | 可选 | 交易金额,格式为###.00 |
商户流水号 | mer_seq_id | 变长20位String | 可选 | 代发文件中的商户流水号 |
代发日期 | pay_date | 定长8位String | 可选 | |
平台流水号 | platform_seq_id | 变长20位String | 可选 | |
手续费 | fee_amt | 变长14位String | 可选 |
代码示例¶
java
String valueObj = "{
"cmd_id": "229",
"version": "10",
"mer_cust_id": "6666000000026086",
"attach_no": "1321343455454",
"out_acct_id": "232434327",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"pay_ret_url": "http://192.168.0.74:8001/npayCallBack/async.json",
"mer_priv": "test_mer_priv",
"extension": ""
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "213";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "229",
"resp_code": "229000",
"resp_desc": "调用成功",
"mer_cust_id" : "6666000000026086",
.......
}
失败响应:
200
{
"cmd_id": "213",
"resp_code": "229002",
"resp_desc": "调用失败",
"mer_cust_id" : "6666000000026086",
.......
}
233 新金融代发接口¶
请求参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | version | 定长2位的String | 必须 | 目前固定为10 |
消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为233 |
商户客户号 | mer_cust_id | 定长16位的String | 必填 | 由汇付生成,商户的唯一性标识 |
出账账户号 | pay_acct_id | 变长9位 | 必填 | |
订单日期 | order_date | 定长8位String | 必填 | 格式为YYYYMMDD,例如:20160307 |
订单号 | order_id | 变长20位的String | 必填 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 |
用户客户号 | user_cust_id | 定长16位的String | 可选 | 对私代发:用户客户号非必填,若已开户,必填;若未开户,可不填 对公代发:用户客户号必填 |
客户用户名 | cust_name | 变长20位String | 可选 | 对公代发:必填 对私代发:若用户客户号未填,此项必填 |
身份证号 | cert_id | 变长20位String | 可选 | 对私代发,若用户客户号未填,此项必填 对公代发:非必填 |
注册手机号 | mobile | 变长11位String | 可选 | 对私代发:若用户客户号未填,此项必填 对公代发:非必填 |
收款账户类型 | acct_type | 定长1位String | 必填 | 0对公 1对私 |
开户银行编号 | bank_id | 变长8位 | 必填 | 8位数字 |
银行卡号 | card_no | 变长9-30位String | 必填 | 用户银行卡号 |
开户行省份 | bank_prov | 定长4位String | 选填 | 不填,默认上海 |
开户行地区 | bank_area | 定长4位String | 选填 | 不填,默认上海 |
交易金额 | trans_amt | 变长14位String | 必填 | 单位:元 金额格式:##.00 比如:2.00,2.01 |
手续费账户号 | fee_acct_id | 变长9位 | 可选 | 不为空手续费在该账户扣除,不填则按配置手续费账户收取 |
代发用途 | purpose | 变长20 | 可选 | |
商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 |
商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 |
扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 |
设备信息 | dev_info_json | 变长1024位的String | 必须 | 参见 设备静态信息 。 |
返回参数¶
参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
消息类型 | cmd_id | 必须 | 每一种消息类型代表一种交易,此处为233 | |
应答返回码 | resp_code | 必填 | 233000–调用成功,其他见返回码附件表 | |
应答返回码描述 | resp_desc | 必填 | 返回码的对应中文描述 | |
商户客户号 | mer_cust_id | 必填 | 由汇付生成,商户的唯一性标识 | |
订单日期 | order_date | 必填 | 格式为YYYYMMDD,例如:20160307 | |
订单号 | order_id | 必填 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 | |
平台流水号 | platform_seq_id | 必填 | 组成规则:8位本平台日期+ 10位系统流水号 | |
用户客户号 | user_cust_id | 可选 | 开户成功时返回 | |
交易金额 | trans_amt | 必填 | 单位:元 金额格式:##.00 比如:2.00,2.01 | |
手续费金额 | fee_amt | 可选 | ||
商户私有域 | mer_priv | 可选 | ||
扩展域 | extension | 可选 | ||
后台应答地址 | bg_ret_url | 必填 |
返回码¶
返回码 | 返回描述 |
233000 | 交易成功 |
233002 | 请求已受理 |
233003 | 交易失败 |
233096 | 系统繁忙 |
233099 | 系统异常 |
233100 | 请求参数非法 |
233110 | 商户号不存在 |
233300 | 该商户未开通回执单权限 |
233011 | 用户不存在 |
233104 | 用户状态异常 |
233121 | 代发类型与用户类型不符 |
233122 | 新代发相关配置未配置 |
233123 | 支付账户类型不正确,不允许是支付账户 |
233124 | 您尚未开通T0新代发功能,请联系汇付业务人员 |
233125 | 代发手续费未配置 |
233127 | 取现失败待撤销 |
233128 | 代发验卡失败 |
233129 | 代发开户失败 |
233130 | 远程系统调用超时,请稍后重试 |
233131 | 转账调用失败 |
代码示例¶
java
String valueObj = "{
"cmd_id": "233",
"version": "10",
"mer_cust_id": "6666000000026086",
"pay_acct_id": "79506",
"order_date": "20171228",
"order_id": "200111127",
"user_cust_id": "6666000000026086",
"cust_name": "飞飞飞",
"cert_id": "220523198005162957",
"mobile": "16666666666",
"acct_type": "1",
"bank_id": "01050000",
"bank_no": "62533820171228",
"bank_prov": "0031",
"bank_area": "3100",
"trans_amt": "1.36",
"fee_acct_id": "79506",
"purpose": "啊啊啊啊啊",
"ret_url": "",
"bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
"mer_priv": "test_mer_priv",
"extension": ""
}";
String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "233";
String merCustId = "6666000000026086";
String version = "10";
String contentType = "application/x-www-form-urlencoded";
String charset = "UTF-8";
String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
String body = httpResponse.bodyText();
String resultObj = parseResult(body);//解密
成功响应:
200
{
"cmd_id": "213",
"resp_code": "213000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应:
200
{
"cmd_id": "213",
"resp_code": "213099",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000026086",
"order_date": "20180327",
"order_id": "10000000001",
.......
}