用户管理类¶
个人用户开户¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 101 |
| 商户唯一标识号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD ,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 用户姓名 | user_name | 变长 50 位 String | 必须 | 用户的真实姓名,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 身份证号 | cert_id | 定长 18 位 String | 必须 | 用户的身份证号 |
| 手机号 | user_mobile | 定长 11 位 String | 必须 | 用户的手机号 |
| 邮箱 | user_email | 变长 40 位 String | 可选 | 用户的电子邮箱 |
| 短信验证码 | sms_code | 定长 6 位 String | 可选 | 与 user_mobile 对应的短信验证码,测试环境调试时可以使用 666666 通过验证 |
| 短信验证码日期 | sms_order_date | 定长 8 位 String | 可选 | 与sms_code 对应的验证码发送订单日期 |
| 短信验证码订单号 | sms_order_id | 变长 20 位 String | 可选 | 与sms_code 对应的验证码发送订单号 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 后台异步通知接收地址 |
| 商户私有域 | mer_priv | 变长 128 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 定长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+cert_id+user_mobile+user_email+sms_code+sms_order_date+sms_order_id+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 101 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 101000 调用成功 |
| 应答返回描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户唯一标识号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 用户唯一标识号 | user_cust_id | 定长 16 位 String | 必须 | 由汇付生成,用户的唯一性标识 |
| 子账户号 | acct_id | 变长 16 位 String | 必须 | 由汇付生成,用户的默认子账户号 |
| 本平台交易唯一标识号 | platform_seq_id | 定长 18 位 String | 必须 | 组成规则:8 位本平台日期 + 10 位系统流水号 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为 ###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 后台异步通知接收地址 |
| 商户私有域 | mer_priv | 变长 128 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传格式:{“sub_mer_cust_id”: “111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 定长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+order_date+order_id+user_cust_id+acct_id+platform_seq_id+fee_amt+fee_acct_id+bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "101"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "101",
"resp_code": "101000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "101",
"resp_code": "101003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
|---|---|
| 101000 | 交易成功 |
| 101003 | 交易失败 |
| 101099 | 系统异常 |
| 101100 | 请求参数非法 |
| 101101 | 商户无此接口权限 |
| 101102 | 验证签名失败 |
| 101103 | 商户状态异常 |
| 101106 | 商户签名未配置 |
| 101202 | 交易订单号重复 |
| 101203 | 账户可用余额不足 |
| 101204 | 商户配置异常 |
| 101205 | 短信验证码验证失败 |
| 101206 | 短信验证码发送手机号与验证手机号不一致 |
| 101207 | 短信验证码或短信唯一标识为空 |
| 101208 | 短信验证码已失效请重新获取 |
| 101209 | 验证码发送接口与接口不一致 |
| 101301 | 该用户已开户,身份证号已存在 |
| 101302 | 该用户已开户,手机号已存在 |
| 101303 | 该用户正在开户中,请勿重复申请 |
| 101304 | 个人用户开户失败 |
| 101400 | 身份证和姓名校验不符 |
| 101401 | 身份证末位校验失败 |
| 101800 | 风控信息验证失败 |
| 101801 | 商户接口调用风控受限 |
| 101802 | 用户接口调用风控受限 |
| 101803 | 二级商户接口调用风控受限 |
企业用户开户¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 102 |
| 商户唯一标识号 | mer_cust_id | 变长 16 位 String | 必须 | 由汇付生成,商户的唯一标识号 |
| 企业开户申请号 | apply_id | 变长 20 的 String | 必须 | 由商户提供,申请企业开户的唯一标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD ,例如:20160307 |
| 订单号 | order_id | 定长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 操作类型 | operate_type | 定长 8 位 String | 必须 | 00090000:新增; 00090001:修改 |
| 企业证照类型 | corp_license_type | 定长 8 位 String | 必须 | 01030100:普通营业执照企业; 01030101:三证合一企业 |
| 企业类型 | corp_type | 定长 8 位 String | 必须 | 01030000:普通企业 |
| 企业名称 | corp_name | 变长 50 位 String | 必须 | 企业的公司全称,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 营业执照注册号 | business_code | 变长 30 位 String | 可选 | 企业的营业执照注册号 |
| 组织机构代码 | institution_code | 定长 9 位 String | 可选 | 企业的组织机构代码证 |
| 税务登记证号 | tax_code | 变长 30 位 String | 可选 | 企业的税务登记号 |
| 统一社会信用代码 | social_credit_code | 定长 18 位 String | 可选 | 企业的统一社会信用代码 |
| 证照起始日期 | license_start_date | 定长 8 位 String | 必须 | 企业的营业证照起始日期,精确到年月日 |
| 证照结束日期 | license_end_date | 定长 8 位 String | 必须 | 企业的营业证照结束日期,精确到年月日,99991231 表示永久 |
| 企业经营地址 | corp_business_address | 变长 250 位 String | 必须 | 企业的经营地址,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 企业注册地址 | corp_reg_address | 变长 250 位 String | 必须 | 企业的注册地址,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 企业固定电话 | corp_fixed_telephone | 变长 15 位 String | 必须 | 企业的固定电话 |
| 经营范围 | business_scope | 变长 600 位 String | 必须 | 企业的经营范围,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 控股股东(实际控制人) | controlling_shareholder | 变长 600 位 String | 必须 | 企业的控股股东,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 法定代表人姓名 | legal_name | 变长 50 位 String | 必须 | 企业的法人姓名,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 法人证件类型 | legal_cert_type | 定长 8 位 String | 必须 | 01020100:身份证; 01020101:护照; 01020102:军官证; 01020104:回乡证; 01020106:台胞证; 01020107:其他 |
| 法人证件号码 | legal_cert_id | 变长 20 位 String | 必须 | 法人的证件号码,与证件类型对应 |
| 法人证件起始日期 | legal_cert_start_date | 定长 8 位 String | 必须 | 法定代表人的证件起始日期,精确到年月日 |
| 法人证件结束日期 | legal_cert_end_date | 定长 8 位 String | 必须 | 法定代表人的证件结束日期,精确到年月日,99991231 表示永久 |
| 法定代表人手机号码 | legal_mobile | 定长 11 位 String | 必须 | 法定代表人的手机号码 |
| 企业联系人姓名 | contact_name | 变长 50 位 String | 必须 | 企业联系人的姓名,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 联系人手机号 | contact_mobile | 定长 11 为 String | 必须 | 联系人的手机号码 |
| 联系人邮箱 | contact_email | 变长 40 位 String | 必须 | 联系人的邮箱地址 |
| 开户银行账户名 | bank_acct_name | 变长 40 位 String | 必须 | 企业开户银行账户名,需与企业名称保持一致,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 开户银行 | bank_id | 变长 8 位 String | 必须 | 具体见附件:充值/取现支持 银行列表及代号 |
| 开户银行账号 | bank_acct_no | 变长 32 位 String | 必须 | 企业开户银行账号 |
| 开户银行支行名称 | bank_branch | 变长 100 位 String | 必须 | 企业开户银行的支行名称,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 开户银行省份 | bank_prov | 变长 4 位 String | 必须 | 银行卡开户省份,具体见 城市行政区划代码 |
| 开户银行地区 | bank_area | 定长 4 位 String | 必须 | 银行卡开户地区,具体见 城市行政区划代码 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 页面返回 URL | ret_url | 变长 128 位 String | 可选 | 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2)URL 中请不要包含特殊字符 3 )必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+apply_id+order_date+order_id+operate_type+corp_license_type+corp_type+business_code+institution_code+tax_code+social_credit_code+license_start_date+license_end_date+corp_fixed_telephone+legal_cert_type+legal_cert_id+legal_mobile+legal_cert_start_date+legal_cert_end_date+contact_mobile+contact_email+bank_id+bank_acct_no+bank_prov+bank_area+bg_ret_url+ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 102 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 102000– 调用成功 |
| 应答返回描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 企业开户申请号 | apply_id | 变长 20 位 String | 必须 | 由商户提供,申请企业开户的唯一标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 定长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 商户唯一标识号 | mer_cust_id | 变长 16 位 String | 必须 | 由汇付生成,商户的唯一标识号 |
| 用户唯一标识号 | user_cust_id | 变长 16 位 String | 可选 | 由汇付生成,用户的唯一标识号 |
| 子账户号 | acct_id | 变长 9 位 String | 可选 | 由汇付生成,用户的默认子账户号 |
| 企业名称 | corp_name | 变长 50 位 String | 必须 | 企业的全称,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 审核状态 | audit_status | 定长 8 位 String | 必须 | 02000101:待审核; 02000102:审核中; 02000103:待资料修改; 02000104:审核通过; 02000105:审核不通过 |
| 审核状态描述 | audit_desc | 变长 120 位 String | 可选 | 针对审核状态的详细说明 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 页面返回 URL | ret_url | 变长 128 位 String | 可选 | 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户私有域 | mer_priv | 变长 120 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 返参扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+apply_id+order_date+order_id+mer_cust_id+user_cust_id+acct_id+audit_status+bg_ret_url+ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "102"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "102",
"resp_code": "102000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "102",
"resp_code": "101003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 102000 | 交易成功 |
| 102099 | 系统异常 |
| 102100 | 请求参数非法 |
| 102101 | 商户无此接口权限 |
| 102102 | 验证签名失败 |
| 102103 | 商户状态异常 |
| 102202 | 交易订单号重复 |
| 102300 | 该企业证照类型与证照号不匹配 |
| 102301 | 该企业已开户 |
| 102302 | 未查询到原开户申请号,不能修改 |
| 102303 | 该企业开户申请号重复 |
| 102304 | 该企业开户申请正在审核中,不能修改 |
| 102305 | 该企业开户申请已被拒绝,不能修改 |
| 102306 | 该企业开户申请已经通过,不能修改 |
| 102307 | 该企业已有正在处理的开户申请或已开户成功 |
| 102308 | 上传失败,文件大小超过5M |
| 102309 | 上传失败,不支持该文件格式 |
| 102310 | 上传失败,文件数量超过限制 |
| 102311 | 文件上传失败,请稍后重试 |
| 102312 | 操作超时,请重试 |
| 102313 | 文件信息不匹配 |
| 102314 | 企业名称与开户银行账户名不相同 |
| 102315 | 开户申请提交失败,数据异常 |
| 102316 | 未查询到子帐户信息 |
| 102317 | 文件数据异常 |
| 102318 | 省份地区信息非法 |
| 102800 | 风控信息验证失败 |
| 102801 | 商户接口调用风控受限 |
| 102802 | 用户接口调用风控受限 |
| 102803 | 二级商户接口调用风控受限 |
前台快捷绑卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 116 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 客户用户名 | user_name | 变长 50 位 String | 必须 | 用户的真实姓名 |
| 身份证号 | cert_id | 定长 18 位 String | 必须 | 用户身份证号,目前仅支持身份证 |
| 银行预留手机号 | card_mobile | 变长 11 位 String | 必须 | 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号,变长 11 位数字 |
| 开户银行代号 | bank_id | 变长 8 位 String | 必须 | 具体见附件:代扣充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长 1 位 String | 必须 | D–借记,储蓄卡; C–贷记,信用卡 |
| 银行卡开户省份 | card_prov | 定长 4 位 String | 可选 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长 4 位 String | 可选 | 银行卡开户地区 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 页面返回 URL | ret_url | 变长 128 位 String | 可选 | 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2)URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式: {“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 页面类型 | page_type | 定长 2 位 String | 可选 | 桌面端样式页面:00 ; 移动端样式页面:10 ,默认桌面端样式 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+cert_id+card_mobile+bank_id+card_no+dc_flag+card_prov+card_area+bg_ret_url+ret_url+mer_priv+extension+page_type
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 116 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 116000–调用成功 |
| 应答返回描述 | 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 位系统流水号 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+reg_flag+user_cust_id+acct_id+order_date+order_id+platform_seq_id+fee_amt+fee_acct_id+mer_priv
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "116"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "116",
"resp_code": "116000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "116",
"resp_code": "116003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 116000 | 交易成功 |
| 116002 | 请求已受理 |
| 116003 | 交易失败 |
| 116099 | 系统异常 |
| 116100 | 请求参数非法 |
| 116101 | 商户无此接口权限 |
| 116102 | 验证签名失败 |
| 116103 | 商户状态异常 |
| 116104 | 用户状态异常 |
| 116106 | 商户签名未配置 |
| 116202 | 交易订单号重复 |
| 116203 | 账户可用余额不足 |
| 116204 | 商户配置异常 |
| 116205 | 短信验证码验证失败 |
| 116206 | 短信验证码发送手机号与验证手机号不一致 |
| 116207 | 短信验证码或短信唯一标识为空 |
| 116208 | 短信验证码已失效请重新获取 |
| 116209 | 验证码发送接口与接口不一致 |
| 116210 | 短信验证码发送过于频繁 |
| 116211 | 短信验证码发送失败 |
| 116216 | 页面已失效 |
| 116300 | 该业务仅支持个人用户 |
| 116301 | 不支持绑定该银行的银行卡 |
| 116302 | 用户已绑定快捷卡,不能再绑定取现卡 |
| 116303 | 银行卡号与银行不匹配 |
| 116304 | 该银行卡非借记卡 |
| 116306 | 用户已绑定快捷或代扣卡,请勿重复申请 |
| 116307 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 116308 | 省份地区信息非法 |
| 116320 | 该用户已开户,手机号已存在 |
| 116400 | 银行账号无效或不存在 |
| 116401 | 持卡人身份信息或手机号验证不符 |
| 116402 | 卡号长度有误 |
| 116403 | 验证超时 |
| 116404 | 账号应为活期账号 |
| 116405 | 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行 |
| 116501 | 交易失败(包含未知错误码) |
| 116502 | 系统未开放或暂时关闭,请稍后再试 |
| 116503 | 交易通讯超时,请发起查询交易 |
| 116505 | 重复签约 |
| 116512 | 重复交易 |
| 116519 | 订单系统错误 |
| 116520 | 持卡人信息为空 |
| 116521 | 持卡人信息有误 |
| 116522 | 持卡人系统错误 |
| 116523 | 卡信息为空 |
| 116524 | 卡信息有误 |
| 116525 | 卡系统错误 |
| 116526 | 卡系统错误 |
| 116535 | 网关不支持签约交易 |
| 116538 | 风险受限 |
| 116560 | 交易失败,请联系发卡银行 |
| 116561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 116562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 116563 | 卡状态不正确 |
| 116565 | 输入的密码、有效期或 CVN2 有误,交易失败 |
| 116566 | 持卡人身份信息或手机号输入不正确,验证失败 |
| 116568 | 您的银行卡暂不支持该业务 |
| 116571 | 对不起,您所输的验证码有误,请核实后再试! |
| 116572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡行热线电话 |
| 116573 | 对不起,您所输的用户名有误,请核实后再试! |
| 116574 | 对不起,您的证件类型有误,请核实后再试! |
| 116575 | 对不起,您所输的证件号码有误,请核实后再试! |
| 116576 | 对不起,您所输的手机号码有误,请核实后再试! |
| 116577 | 验证码发送失败 |
| 116578 | 验证码超限或超时 |
| 116579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 116580 | 银行卡状态异常 |
| 116590 | 交易失败,参数不合法 |
| 116591 | 系统异常 |
| 116592 | 银行系统繁忙,请稍后再试 |
| 116593 | 系统超时 |
| 116594 | 银行处理中,请稍后再试 |
| 116599 | 系统异常 |
| 1165F0 | 渠道交易失败 |
| 1165F2 | 交易失败,未添加白名单 |
| 1165F3 | 签约失败,请稍后再试 |
| 1165P0 | 交易挂起,需要确认 |
| 116800 | 风控信息验证失败 |
| 116801 | 商户接口调用风控受限 |
| 116802 | 用户接口调用风控受限 |
| 116803 | 二级商户接口调用风控受限 |
后台快捷绑卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 11 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 112 |
| 商户客户号 | 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 | 可选 | 用户身份证号,目前仅支持身份证条件可选,条件参考用户客户号描述 |
| 银行预留手机号 | card_mobile | 变长 11 位 String | 必须 | 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号,变长 11 位数字 |
| 开户银行代号 | bank_id | 变长 8 位 String | 必须 | 具体见附件:代扣充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长 1 位 String | 必须 | D–借记,储蓄卡; C–贷记,信用卡,备注:本接口暂仅支持借记卡 |
| 银行卡开户省份 | card_prov | 定长 4 位 String | 可选 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长 4 位 String | 可选 | 银行卡开户地区 |
| 阶段标志 | step_flag | 定长 2 位 String | 必须 | 01:验卡阶段;02:验证短信阶段 |
| 绑卡请求流水 | bind_trans_id | 变长 20 位 String | 必须 | 标志一个绑卡请求,商户下判断唯一,只能是数字和字母 |
| 短信验证码 | sms_code | 定长 6 位 String | 可选 | 银行预留手机号对应的短信验证码,验证短信阶段必须 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+user_cust_id+cert_id+bank_id+card_no+card_mobile+dc_flag+card_prov+card_area+step_flag+bind_trans_id+sms_code+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 112 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 112000–调用成功 |
| 应答返回描述 | 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 位系统流水号 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+reg_flag+user_cust_id+acct_id+order_date+order_id+platform_seq_id+fee_amt+fee_acct_id+mer_priv
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "112"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "112",
"resp_code": "112000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "112",
"resp_code": "112003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 112000 | 交易成功 |
| 112002 | 请求已受理 |
| 112003 | 交易失败 |
| 112099 | 系统异常 |
| 112100 | 请求参数非法 |
| 112101 | 商户无此接口权限 |
| 112102 | 验证签名失败 |
| 112103 | 商户状态异常 |
| 112104 | 用户状态异常 |
| 112106 | 商户签名未配置 |
| 112201 | 页面数据被篡改 |
| 112202 | 交易订单号重复 |
| 112203 | 账户可用余额不足 |
| 112204 | 商户配置异常 |
| 112205 | 短信验证码验证失败 |
| 112206 | 短信验证码发送手机号与验证手机号不一致 |
| 112207 | 短信验证码或短信唯一标识为空 |
| 112208 | 短信验证码已失效请重新获取 |
| 112209 | 验证码发送接口与接口不一致 |
| 112210 | 短信验证码发送过于频繁 |
| 112211 | 短信验证码发送失败 |
| 112300 | 该业务仅支持个人用户 |
| 112301 | 不支持绑定该银行的银行卡 |
| 112302 | 用户已绑定快捷卡,不能再绑定取现卡 |
| 112303 | 银行卡号与银行不匹配 |
| 112304 | 该银行卡非借记卡 |
| 112306 | 用户已绑定快捷或代扣卡,请勿重复申请 |
| 112307 | 用户有快捷卡正在绑定中,请勿重复绑卡 |
| 112308 | 省份地区信息非法 |
| 112320 | 该用户已开户,手机号已存在 |
| 112400 | 银行账号无效或不存在 |
| 112401 | 持卡人身份信息或手机号验证不符 |
| 112402 | 卡号长度有误 |
| 112403 | 验证超时 |
| 112404 | 账号应为活期账号 |
| 112405 | 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行 |
| 112501 | 交易失败(包含未知错误码) |
| 112502 | 系统未开放或暂时关闭,请稍后再试 |
| 112503 | 交易通讯超时,请发起查询交易 |
| 112505 | 重复签约 |
| 112512 | 重复交易 |
| 112519 | 订单系统错误 |
| 112520 | 持卡人信息为空 |
| 112521 | 持卡人信息有误 |
| 112522 | 持卡人系统错误 |
| 112523 | 卡信息为空 |
| 112524 | 卡信息有误 |
| 112525 | 卡系统错误 |
| 112526 | 卡系统错误 |
| 112535 | 网关不支持签约交易 |
| 112538 | 风险受限 |
| 112560 | 交易失败,请联系发卡银行 |
| 112561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 112562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 112563 | 卡状态不正确 |
| 112565 | 输入的密码、有效期或 CVN2 有误,交易失败 |
| 112566 | 持卡人身份信息或手机号输入不正确,验证失败 |
| 112568 | 您的银行卡暂不支持该业务 |
| 112571 | 对不起,您所输的验证码有误,请核实后再试! |
| 112572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡行热线电话 |
| 112573 | 对不起,您所输的用户名有误,请核实后再试! |
| 112574 | 对不起,您的证件类型有误,请核实后再试! |
| 112575 | 对不起,您所输的证件号码有误,请核实后再试! |
| 112576 | 对不起,您所输的手机号码有误,请核实后再试! |
| 112577 | 验证码发送失败 |
| 112578 | 验证码超限或超时 |
| 112579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 112580 | 银行卡状态异常 |
| 112590 | 交易失败,参数不合法 |
| 112591 | 系统异常 |
| 112592 | 银行系统繁忙,请稍后再试 |
| 112593 | 系统超时 |
| 112594 | 银行处理中,请稍后再试 |
| 112599 | 系统异常 |
| 1125F0 | 渠道交易失败 |
| 1125F2 | 交易失败,未添加白名单 |
| 1125F3 | 签约失败,请稍后再试 |
| 1125P0 | 交易挂起,需要确认 |
| 112800 | 风控信息验证失败 |
| 112801 | 商户接口调用风控受限 |
| 112802 | 用户接口调用风控受限 |
| 112803 | 二级商户接口调用风控受限 |
前台代扣绑卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 117 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长 20 位 String | 可选 | 对应产品录入中产品 ID |
| 产品订单号 | product_order_id | 变长 20 位 String | 可选 | 由商户的系统生成,本次签约的产品订单号,产品订单号保证唯一 |
| 开户名 | user_name | 变长 50 位 String | 必须 | 用户的真实姓名 |
| 身份证号 | cert_id | 定长 18 位 String | 必须 | 用户身份证号 |
| 开户银行代号 | bank_id | 变长 8 位 String | 必须 | 具体见附件:代扣充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长 1 位 String | 必须 | D–借记,储蓄卡; C–贷记,信用卡注:本接口暂仅支持借记卡 |
| 银行预留手机号 | card_mobile | 变长 11 位 String | 必须 | 银行开户时的预留手机号 |
| 银行卡开户省份 | card_prov | 定长 4 位 String | 可选 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长 4 位 String | 可选 | 银行卡开户地区 |
| 页面返回 URL | ret_url | 变长 128 位 String | 可选 | 交易完成后本平台系统把交易结果通过页面方式,发送到该地址上。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2)URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 后台异步通知商户开户结果 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 页面类型 | page_type | 定长 2 位 String | 可选 | 桌面端样式页面:00 ;移动端样式页面:10 ,默认桌面端样式 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+product_id+product_order_id+cert_id+bank_id+card_no+dc_flag+card_mobile+card_prov+card_area+ret_url+bg_ret_url+mer_priv+extension+page_type
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 117 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 117000–调用成功 |
| 应答返回描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 可选 | 由汇付生成,用户的唯一性标识 |
| 用户账户号 | acct_id | 变长 8 位 String | 可选 | 用户账户号 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 本平台交易唯一标识号 | platform_seq_id | 定长 18 位 String | 必须 | 组成规则:8 位本平台日期 +10 位系统流水号 |
| 开户标识 | reg_flag | 定长 8 位 String | 必须 | 00000000 : 新开户; 00000001 : 已开户 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为 ###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 页面返回 URL | ret_url | 变长 128 位 String | 可选 | 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+acct_id+order_date+order_id+platform_seq_id+reg_flag+fee_amt+fee_acct_id+ret_url_bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "117"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "117",
"resp_code": "117000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "117",
"resp_code": "117003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 117000 | 交易成功 |
| 117002 | 请求已受理 |
| 117003 | 交易失败 |
| 117099 | 系统异常 |
| 117100 | 请求参数非法 |
| 117101 | 商户无此接口权限 |
| 117102 | 验证签名失败 |
| 117103 | 商户状态异常 |
| 117104 | 用户状态异常 |
| 117105 | 账户状态异常 |
| 117106 | 商户签名未配置 |
| 117201 | 页面数据被篡改 |
| 117202 | 交易订单号重复 |
| 117203 | 账户可用余额不足 |
| 117204 | 商户配置异常 |
| 117205 | 短信验证码验证失败 |
| 117206 | 短信验证码发送手机号与验证手机号不一致 |
| 117207 | 短信验证码或短信唯一标识为空 |
| 117208 | 短信验证码已失效请重新获取 |
| 117209 | 验证码发送接口与接口不一致 |
| 117210 | 短信验证码发送过于频繁 |
| 117211 | 短信验证码发送失败 |
| 117300 | 该业务仅支持个人用户执行 |
| 117301 | 不支持绑定该银行的银行卡 |
| 117303 | 银行卡号与银行不匹配 |
| 117304 | 该银行卡非借记卡 |
| 117308 | 省份地区信息非法 |
| 117309 | 代扣签约只支持个人用户 |
| 117310 | 产品信息校验失败 |
| 117311 | 手续费子账户配置异常 |
| 117312 | 企业用户/商户不支持代扣绑卡 |
| 117316 | 手机号与已绑定卡记录不匹配 |
| 117318 | 用户已绑定代扣卡,请勿重复申请 |
| 117319 | 用户有代扣卡正在绑定中,请勿重复绑卡 |
| 117320 | 手机号已注册 |
| 117400 | 银行账号无效或不存在 |
| 117401 | 持卡人身份信息或手机号验证不符 |
| 117402 | 卡号长度有误 |
| 117403 | 验证超时 |
| 117404 | 账号应为活期账号 |
| 117405 | 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行 |
| 117501 | 交易失败(包含未知错误码) |
| 117502 | 系统未开放或暂时关闭,请稍后再试 |
| 117503 | 交易通讯超时,请发起查询交易 |
| 117505 | 重复签约 |
| 117512 | 重复交易 |
| 117519 | 订单系统错误 |
| 117520 | 持卡人信息为空 |
| 117521 | 持卡人信息有误 |
| 117522 | 持卡人系统错误 |
| 117523 | 卡信息为空 |
| 117524 | 卡信息有误 |
| 117525 | 卡系统错误 |
| 117526 | 卡系统错误 |
| 117535 | 网关不支持签约交易 |
| 117538 | 风险受限 |
| 117560 | 交易失败,请联系发卡银行 |
| 117561 | 对不起,您所输的银行卡号有误,请核实后再试! |
| 117562 | 交易失败,发卡银行不支持该商户,请更换其他银行卡 |
| 117563 | 卡状态不正确 |
| 117565 | 输入的密码、有效期或 CVN2 有误,交易失败 |
| 117566 | 持卡人身份信息或手机号输入不正确,验证失败 |
| 117568 | 您的银行卡暂不支持该业务 |
| 117572 | 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡行热线电话 |
| 117573 | 对不起,您所输的用户名有误,请核实后再试! |
| 117574 | 对不起,您的证件类型有误,请核实后再试! |
| 117575 | 对不起,您所输的证件号码有误,请核实后再试! |
| 117576 | 对不起,您所输的手机号码有误,请核实后再试! |
| 117577 | 验证码发送失败 |
| 117578 | 验证码超限或超时 |
| 117579 | 对不起,您的用户信息未通过银行验证,请核实后再试! |
| 117580 | 银行卡状态异常 |
| 117590 | 交易失败,参数不合法 |
| 117591 | 系统异常 |
| 117592 | 银行系统繁忙,请稍后再试 |
| 117593 | 系统超时 |
| 117594 | 银行处理中,请稍后再试 |
| 117599 | 系统异常 |
| 1175F0 | 渠道交易失败 |
| 1175F2 | 交易失败,未添加白名单 |
| 1175F3 | 签约失败,请稍后再试 |
| 1175P0 | 交易挂起,需要确认 |
| 117800 | 风控信息验证失败 |
| 117801 | 商户接口调用风控受限 |
| 117802 | 用户接口调用风控受限 |
| 117803 | 二级商户接口调用风控受限 |
后台代扣绑卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 11 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 109 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 可选 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长 20 位 String | 必须 | 对应产品录入中产品 ID |
| 产品订单号 | product_order_id | 变长 20 位 String | 必须 | 由商户的系统生成,本次签约的产品订单号,产品订单号保证唯一 |
| 开户名 | user_name | 变长 50 位 String | 必须 | 用户的真实姓名 |
| 身份证号 | cert_id | 定长 18 位 String | 必须 | 用户身份证号 |
| 开户银行代号 | bank_id | 变长 8 位 String | 必须 | 具体见附件:代扣充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 待绑定的银行卡号 |
| 借贷标记 | dc_flag | 定长 1 位 String | 必须 | D–借记,储蓄卡; C–贷记,信用卡 ,备注:本接口暂仅支持借记卡 |
| 银行预留手机号 | card_mobile | 变长 11 位 String | 必须 | 银行开户时的预留手机号 |
| 银行卡开户省份 | card_prov | 定长 4 位 String | 可选 | 银行卡开户省份 |
| 银行卡开户地区 | card_area | 定长 4 位 String | 可选 | 银行卡开户地区 |
| 阶段标志 | step_flag | 定长 2 位 String | 必须 | 01:验卡阶段;02:验证短信阶段 |
| 短信验证码 | sms_code | 定长 6 位 String | 可选 | 与本次绑卡时的银行预留手机号对应的短信验证码 |
| 绑卡请求流水 | bind_trans_id | 定长 20 位 String | 必须 | 标志一个绑卡请求,商户下判断唯一,只能是数字和字母 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”,”sms_spec”:”01”} 二级商户号由汇付生成 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+product_id+product_order_id+cert_id+bank_id+card_no+dc_flag+card_mobile+card_prov+card_area+step_flag+sms_code+bind_trans_id+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 109 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 109000–调用成功 |
| 应答返回描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 必须 | 由汇付生成,用户的唯一性标识 |
| 用户账户号 | acct_id | 变长 8 位 String | 可选 | 用户账户号 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 |
| 产品编号 | product_id | 变长 20 位 String | 必须 | 对应订单录入中产品 ID |
| 产品订单号 | product_order_id | 变长 20 位 String | 必须 | 本次签约的产品订单号 |
| 本平台交易唯一标识号 | platform_seq_id | 定长 18 位 String | 必须 | 组成规则:8 位本平台日期 +10 位系统流水号 |
| 开户标识 | reg_flag | 定长 8 位 String | 必须 | 00000000 : 新开户; 00000001 : 已开户 |
| 开户银行代号 | bank_id | 变长 8 位 String | 必须 | 对应产品录入中产品 ID |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 待绑定的银行卡卡号 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 后台异步通知商户开户结果 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段 |
| 扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+acct_id+order_date+order_id+product_id+product_order_id+platform_seq_id+reg_flag+bank_id+card_no+fee_amt+fee_acct_id+bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "11"));
nvps.add(new BasicNameValuePair("cmd_id", "109"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "109",
"resp_code": "109000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "109",
"resp_code": "109003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 109000 | 交易成功 |
| 109002 | 请求已受理 |
| 109003 | 交易失败 |
| 109099 | 系统异常 |
| 109100 | 请求参数非法 |
| 109101 | 商户无此接口权限 |
| 109102 | 验证签名失败 |
| 109103 | 商户状态异常 |
| 109104 | 用户状态异常 |
| 109105 | 账户状态异常 |
| 109106 | 商户签名未配置 |
| 109201 | 页面数据被篡改 |
| 109202 | 交易订单号重复 |
| 109203 | 账户可用余额不足 |
| 109204 | 商户配置异常 |
| 109205 | 短信验证码验证失败 |
| 109206 | 短信验证码发送手机号与验证手机号不一致 |
| 109207 | 短信验证码或短信唯一标识为空 |
| 109208 | 短信验证码已失效请重新获取 |
| 109209 | 验证码发送接口与接口不一致 |
| 109210 | 短信验证码发送过于频繁 |
| 109211 | 短信验证码发送失败 |
| 109301 | 不支持绑定该银行的银行卡 |
| 109303 | 银行卡号与银行不匹配 |
| 109304 | 该银行卡非借记卡 |
| 109308 | 省份地区信息非法 |
| 109309 | 代扣签约只支持个人用户 |
| 109310 | 产品信息校验失败 |
| 109311 | 手续费子账户配置异常 |
| 109312 | 企业用户/商户不支持代扣绑卡 |
| 109318 | 用户已绑定代扣卡,请勿重复申请 |
| 109319 | 用户有代扣卡正在绑定中,请勿重复绑卡 |
| 109400 | 银行账号无效或不存在 |
| 109401 | 持卡人身份信息或手机号验证不符 |
| 109402 | 卡号长度有误 |
| 109403 | 验证超时 |
| 109404 | 账号应为活期账号 |
| 109405 | 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行 |
| 109800 | 风控信息验证失败 |
| 109801 | 商户接口调用风控受限 |
| 109802 | 用户接口调用风控受限 |
| 109803 | 二级商户接口调用风控受限 |
取现绑卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 104 |
| 商户唯一标识号 | 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 | 必须 | 具体见附件:取现支持银行列表 |
| 银行卡号 | 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 应使用 UTF-8 字符集 URLEncode 编码后传入;2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 128 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+bank_id+card_no+dc_flag+card_prov+card_area+is_default+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 104 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 104000–调用成功 |
| 应答返回描述 | 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 位系统流水号 |
| 银行代号 | 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:默认取现卡用户首次绑卡时,无论传任何值,绑定成功后都会设置为默认取现卡;用户已有默认取现卡时,新绑定默认取现卡会替换掉原有默认取现卡 |
| 手续费金额 | fee_amt | 变长 14 位 String | 可选 | 手续费金额,格式为 ###.00 |
| 手续费子账户号 | fee_acct_id | 变长 9 位 String | 可选 | 手续费扣款子账户号 |
| 后台返回地址 | bg_ret_url | 变长 128 位 String | 必须 | 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户私有域 | mer_priv | 变长 128 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+platform_seq_id+bank_id+card_no+dc_flag+card_prov+card_area+is_default+fee_amt+fee_acct_id+bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "104"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "104",
"resp_code": "101000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "104",
"resp_code": "104003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 104000 | 交易成功 |
| 104002 | 请求已受理 |
| 104003 | 交易失败 |
| 104099 | 系统异常 |
| 104100 | 请求参数非法 |
| 104101 | 商户无此接口权限 |
| 104102 | 验证签名失败 |
| 104103 | 商户状态异常 |
| 104104 | 用户状态异常 |
| 104106 | 商户签名未配置 |
| 104202 | 交易订单号重复 |
| 104203 | 账户可用余额不足 |
| 104204 | 商户配置异常 |
| 104301 | 不支持绑定该银行的银行卡 |
| 104302 | 用户已绑定快捷或代扣卡,不能再绑定取现卡 |
| 104303 | 银行卡号与银行不匹配 |
| 104304 | 该银行卡非借记卡 |
| 104305 | 企业用户/商户不支持快捷绑卡 |
| 104306 | 用户已绑定快捷或代扣卡,请勿重复申请 |
| 104307 | 用户有快捷或代扣卡正在绑定中,请勿重复绑卡 |
| 104308 | 省份地区信息非法 |
| 104800 | 风控信息验证失败 |
| 104801 | 商户接口调用风控受限 |
| 104802 | 用户接口调用风控受限 |
| 104803 | 二级商户接口调用风控受限 |
解绑快捷/代扣卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本 | 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 | 必须 | 具体见附件:快捷充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 银行卡号 |
| 银行卡预留手机号 | card_mobile | 变长 11 位 String | 必须 | 银行卡预留手机号 |
| 短信验证码日期 | sms_order_date | 定长 8 位 String | 可选 | 与 sms_code 对应的验证码发送订单日期 |
| 短信验证码订单号 | sms_order_id | 变长 20 位 String | 可选 | 与 sms_code 对应的验证码发送订单号 |
| 短信验证码 | sms_code | 定长 6 位 String | 可选 | 短信验证码,测试环境调试时可以使用 666666 通过验证 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+bank_id+card_no+card_mobile+sms_code+sms_order_date+sms_order_id+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 接口标识 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 105 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 105000–调用成功 |
| 应答描述 | 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 位内数字或字母的组合 |
| 银行代码 | bank_id | 定长 8 位 String | 必须 | 具体见附件:快捷充值支持银行列表 |
| 银行卡号 | card_no | 变长 32 位 String | 必须 | 银行卡号 |
| 银行卡预留手机号 | 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 | 必须 | 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户私有域 | mer_priv | 变长120 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 返参扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+bank_id+card_no+card_mobile+sms_code+sms_order_date+sms_order_id+bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "105"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "105",
"resp_code": "105000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "105",
"resp_code": "105003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 105000 | 交易成功 |
| 105002 | 请求已受理 |
| 105099 | 系统异常 |
| 105100 | 请求参数非法 |
| 105101 | 商户无此接口权限 |
| 105102 | 验证签名失败 |
| 105103 | 商户状态异常 |
| 105104 | 用户状态异常 |
| 105205 | 短信验证码验证失败 |
| 105206 | 短信验证码发送手机号与验证手机号不一致 |
| 105207 | 短信验证码或短信唯一标识为空 |
| 105208 | 短信验证码已失效请重新获取 |
| 105209 | 验证码发送接口与接口不一致 |
| 105300 | 短信验证码有误 |
| 105301 | 用户未绑定过该卡 |
| 105302 | 非代扣或快捷卡,不能解绑 |
| 105303 | 订单重复 |
| 105304 | 用户基本信息不存在 |
| 105305 | 验证卡信息失败 |
| 105800 | 风控信息验证失败 |
| 105801 | 商户接口调用风控受限 |
| 105802 | 用户接口调用风控受限 |
| 105803 | 二级商户接口调用风控受限 |
删除取现卡¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 固定为 10,如版本升级,能向前兼容 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 108 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 必须 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 开户银行卡号 | card_no | 变长 32 位 String | 必须 | 本次删除取现卡待删除的银行卡号,不可为用户默认取现卡 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 128 位的 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 入参扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+card_no+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为108 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 108000–调用成功 |
| 应答返回描述 | 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 位系统流水号 |
| 开户银行卡号 | card_no | 变长 32 位 String | 必须 | 本次删除取现卡待删除的银行卡号,不可为用户默认取现卡 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 128 位的 String | 必须 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 入参扩展域 | extension | 变长 512 位的 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+platform_seq_id+card_no+bg_ret_url+ mer_priv+ extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "108"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "108",
"resp_code": "108000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "108",
"resp_code": "108003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 108000 | 交易成功 |
| 108003 | 交易失败 |
| 108099 | 系统异常 |
| 108100 | 请求参数非法 |
| 108101 | 商户无此接口权限 |
| 108102 | 验证签名失败 |
| 108103 | 商户状态异常 |
| 108104 | 用户状态异常 |
| 108106 | 商户签名未配置 |
| 108202 | 交易订单号重复 |
| 108204 | 商户配置异常 |
| 108300 | 银行卡不是取现卡 |
| 108301 | 不能操作默认取现卡 |
| 108302 | 银行卡不存在或状态异常 |
| 108800 | 风控信息验证失败 |
| 108801 | 商户接口调用风控受限 |
| 108802 | 用户接口调用风控受限 |
| 108803 | 二级商户接口调用风控受限 |
短信验证码发送¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 固定为 10,如版本升级,能向前兼容 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 110 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 可选 | 由汇付生成,用户的唯一性标识注:快捷充值短信发送必传 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 业务类型 | business_type | 定长 3 位 String | 必须 | 101:用户开户; 105:解绑快捷卡;113:后台快捷绑卡;201:快捷充值 |
| 用户手机号 | user_mobile | 定长 11 位 String | 必须 | 待接收短信验证码的手机号 |
| 签名 | check_value | 定长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+business_type+user_mobile
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位Sring | 必须 | 每一种消息类型代表一种交易,此处为 110 |
| 返回码 | resp_code | 定长 6 位 String | 必须 | 110000–调用成功 |
| 结果描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 用户客户号 | user_cust_id | 定长 16 位 String | 必须 | 由汇付生成,用户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 业务类型 | business_type | 定长 3 位 String | 必须 | 101:用户开户;105:解绑快捷卡;201:快捷充值 |
| 用户手机号 | user_mobile | 定长 11 位 String | 必须 | 待接收短信验证码的手机号 |
| 签名 | check_value | 定长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+business_type+user_mobile
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "110"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "110",
"resp_code": "110000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "110",
"resp_code": "110003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 110000 | 交易成功 |
| 110003 | 交易失败 |
| 110099 | 系统异常 |
| 110100 | 请求参数非法 |
| 110101 | 商户无此接口权限 |
| 110102 | 验证签名失败 |
| 110103 | 商户状态异常 |
| 110104 | 用户状态异常 |
| 110106 | 商户签名未配置 |
| 110202 | 交易订单号重复 |
| 110204 | 商户配置异常 |
| 110210 | 短信验证码发送过于频繁 |
| 110211 | 短信验证码发送失败 |
| 110301 | 短信验证码发送开关已关闭 |
| 110304 | 快捷充值短信验证码发送失败,用户还未绑定快捷卡 |
| 110305 | 非快捷绑卡银行预留手机号 |
二级商户录入¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 是 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 是 | 每一种消息类型代表一种交易,此处为 114 |
| 订单日期 | order_date | 定长 8 位 String | 是 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 是 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 是 | 由汇付生成,商户的唯一性标识 |
| 二级商户名 | sub_mer_cust_name | 变长 50 位 String | 是 | 二级商户名称,中文应使用 UTF-8 字符集 URLEncode 编码后传入 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位的 String | 是 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 必须是外网地址 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 否 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 入参扩展域 | extension | 变长 512 位的 String | 否 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位的 String | 是 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+cert_id+card_mobile+bank_id+card_no+dc_flag+card_prov+card_area+bg_ret_url+ret_url+mer_priv+extension+page_type
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 114 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 114000–调用成功 |
| 应答返回描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 二级商户号 | sub_mer_cust_id | 变长 20 位 String | 可选 | 二级商户号,20 位内数字或字母的组合,录入成功(返回码:114000)时必返 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 平台流水号 | platform_seq_id | 定长 18 位 String | 可选 | 组成规则:8 位本平台日期 +10 位系统流水号,录入成功(返回码:114000)时必返 |
| 商户私有域 | mer_priv | 变长 120 位的 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 签名 | check_value | 变长 256 位的 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+sub_mer_cust_id+order_date+order_id+platform_seq_id+mer_priv``
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "114"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "114",
"resp_code": "114000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "114",
"resp_code": "114003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 114000 | 交易成功 |
| 114099 | 系统异常 |
| 114100 | 请求参数非法 |
| 114101 | 商户无此接口权限 |
| 114102 | 验证签名失败 |
| 114103 | 商户状态异常 |
| 114215 | 二级商户名已存在 |
产品录入¶
请求参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 版本号 | version | 定长 2 位 String | 必须 | 目前固定为 10 |
| 消息类型 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 204 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 产品 ID | product_id | 变长 20 位 String | 必须 | 由商户提供,产品的唯一标识,20 位内数字或字母的组合 |
| 产品总金额 | product_amt | 变长 14 位 String | 必须 | 产品总金额,格式为###.00 |
| 产品期数 | product_periods | 变长 14 位 String | 必须 | 产品的期数 |
| 产品开始时间 | product_start_time | 定长 14 位 String | 必须 | 产品开始时间 |
| 产品结束时间 | product_end_time | 定长 14 位 String | 必须 | 产品结束时间 |
| 产品所在地 | product_location | 定长 4 位 String | 必须 | 产品的所在地 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。 |
| 商户私有域 | mer_priv | 变长 120 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 入参扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
version+cmd_id+mer_cust_id+order_date+order_id+product_id+product_amt+product_periods+product_start_time+product_end_time+product_location+bg_ret_url+mer_priv+extension
返回参数列表¶
| 中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
|---|---|---|---|---|
| 接口标识 | cmd_id | 定长 3 位 String | 必须 | 每一种消息类型代表一种交易,此处为 204 |
| 应答返回码 | resp_code | 定长 6 位 String | 必须 | 204000–调用成功 |
| 应答描述 | resp_desc | 变长 String | 必须 | 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户客户号 | mer_cust_id | 定长 16 位 String | 必须 | 由汇付生成,商户的唯一性标识 |
| 订单日期 | order_date | 定长 8 位 String | 必须 | 格式为 YYYYMMDD,例如:20160307 |
| 订单号 | order_id | 变长 20 位 String | 必须 | 由商户生成,必须保证唯一,20 位内数字或字母的组合 |
| 产品 ID | product_id | 变长 20 位 String | 必须 | 由商户提供,产品的唯一标识 |
| 产品总金额 | product_amt | 变长 14 位 String | 必须 | 产品总金额,格式为 ###.00 |
| 产品期数 | product_periods | 变长 14 位 String | 必须 | 产品的期数 |
| 产品开始时间 | product_start_time | 变长 14 位 String | 必须 | 产品开始时间 |
| 产品结束时间 | product_end_time | 变长 14 位 String | 必须 | 产品结束时间 |
| 产品所在地 | product_location | 定长 4 位 String | 必须 | 产品的所在地 |
| 商户后台应答地址 | bg_ret_url | 变长 128 位 String | 必须 | 返参中的 URL 为 UTF-8字符集 URLEncode 编码后的字符串,商户应解码获取原文 |
| 商户私有域 | mer_priv | 变长 128 位 String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用 |
| 返参扩展域 | extension | 变长 512 位 String | 可选 | 用于扩展请求参数 |
| 签名 | check_value | 变长 256 位 String | 必须 | 加签规则:Base64 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值 |
本接口加签拼接顺序:
cmd_id+resp_code+mer_cust_id+order_date+order_id+product_id+product_amt+product_periods+product_start_time+product_end_time+product_location+bg_ret_url+mer_priv+extension
代码示例¶
java
String result = new String();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://mertest.chinapnr.com/asharp/merchantRequest");
try {
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("version", "10"));
nvps.add(new BasicNameValuePair("cmd_id", "204"));
nvps.add(new BasicNameValuePair("mer_cust_id", "6666000000000001"));
nvps.add(new BasicNameValuePair("order_date", "20180327"));
nvps.add(new BasicNameValuePair("order_id", "10000000001"));
.......
post.setEntity(new UrlEncodedFormEntity(nvps));
HttpResponse httpResponse = client.execute(post);
int code = httpResponse.getStatusLine().getStatusCode();
String returnStr = EntityUtils.toString(httpResponse.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
成功响应
200
{
"cmd_id": "204",
"resp_code": "204000",
"resp_desc": "交易成功",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
失败响应
200
{
"cmd_id": "204",
"resp_code": "204003",
"resp_desc": "交易失败",
"mer_cust_id" : "6666000000000001",
"order_date": "20180327",
"order_id": "10000000001",
.......
}
接口返回码¶
| 返回参数 | 返回描述 |
| 204000 | 交易成功 |
| 204099 | 系统异常 |
| 204100 | 请求参数非法 |
| 204101 | 商户无此接口权限 |
| 204102 | 验证签名失败 |
| 204103 | 商户状态异常 |
| 204104 | 用户状态异常 |
| 204300 | 项目信息或订单信息重复 |
| 204301 | 项目开始时间晚于或等于项目结束时间 |