用户管理类¶
个人用户开户¶
请求参数列表¶
中文名 | 参数名 | 数据格式 | 是否必须 | 说明 |
---|---|---|---|---|
版本号 | 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 | 项目开始时间晚于或等于项目结束时间 |