交易类

充值/支付

接口功能说明

接口功能说明:用于网银充值/支付,免注册网银支付、快捷支付和代扣支付

  • 充值类型 recharge_type=02020000,个人网银充值
  • 充值类型 recharge_type=02020001,企业网银充值
  • 充值类型 recharge_type=02020002,快捷充值(仅支持个人用户)
  • 充值类型 recharge_type=02020003,代扣充值(仅支持个人用户),此类充值 sign_seq_id 不能为空
  • 充值类型 recharge_type=02020006,二段式快捷支付,阶段标识和业务请求流水不能为空
  • 交易类型 trans_type=02020100,仅是充值到用户账户
  • 交易类型 trans_type=02020101,包含支付功能,即充值到用户账户后再转账到另一账户,此类交易 in_cust_id 和 div_detail 不能为空

调用方式:

  • 网银(包括个人与企业):页面调用
  • 快捷/代扣:后台调用

应答方式:

  • 网银(包括个人与企业):同步页面应答、异步应答
  • 快捷/代扣:同步后台应答、异步应答

接口类型:

  • 网银(包括个人与企业):同步+异步
  • 快捷/代扣:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 201
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识,交易类型为免注册网银支付时,非必传
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位 内数字或字母的组合
交易类型 trans_type 定长 8 位 String 必须 02020100:充值; 02020101:支付; 02020102:免注册网银支付; 02020103:非消费金融代扣支付个人用户支持支付和免注册网银支付交易
充值类型 recharge_type 定长 8 位 String 必须 02020000:个人网银; 02020001:企业网银; 02020002:快捷; 02020003:代扣; 02020006:二段式快捷,交易类型为免注册网银支付时,充值类型仅支持个人网银和企业网银
阶段标志 step_flag 定长 2 位 String 可选 01:快捷支付请求; 02:快捷支付确认充值类型为二段式快捷时必填
业务请求流水 biz_trans_id 变长 20 位 String 可选 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母充值类型为二段式快捷时必填
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
开户银行代号 bank_id 变长 8 位 String 可选 个人/企业网银充值必传,快捷/代扣充值非必传,可为空
借贷标记 dc_flag 定长 1 位 String 可选 个人/企业网银充值必传,快捷/代扣充值非必传,可为空 D–借记 C–贷记
短信验证码 sms_code 定长 6 位 String 可选 与快捷绑卡时的银行预留手机号对应的短信验证码
短信验证码日期 sms_order_date 变长 8 位 String 可选 快捷充值使用,与 sms_code 对应的验证码订单日期
短信验证码订单号 sms_order_id 变长 20 位 String 可选 快捷充值使用,与 sms_code 对应的验证码订单号
代扣签约流水 sign_seq_id 变长 18 位 String 可选 代扣签约订单唯一标识,代扣充值必传,其他充值不需传
入账客户号 in_cust_id 定长 16 位 String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人,多条分账可不传
分账账户串 div_detail 变长 String 可选 业务类型为支付时必传,分账账户必须是入账客户的账户,分账串使用 UTF-8 字符集 URLEncode 编码后传入数据格式:[{“in_cust_id”:”6666000000123456”,”div_acct_id”:”000001”,”div_amt”:”1.00”},{“in_cust_id”:”6666000000123457”,”div_acct_id”:”000002”,”div_amt”:”1.00”}]分账串金额之和需等于充值金额支持多条分账指令
分账入账客户号 in_cust_id 定长 16 位 String 可选 div_detail 参数下的二级参数分账入账客户号
分账账户号 div_acct_id 变长 9 位 String 可选 div_detail 参数下的二级参数分账账户号
分账金额 div_amt 变长 14 位 String 可选 div_detail 参数下的二级参数分账金额,保留两位小数
商户前台应答地址 ret_url 变长 128 位 String 可选 网银充值/支付必传交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入;2)URL 中请不要包含特殊字符; 3) 必须是外网地址
商户后台应答地址 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”} 二级商户号由汇付生成,详见 二级商户录入接口
银行卡号 card_no 变长 32 位 String 可选 代扣支付使用的卡号,不传时默认使用最新绑定的代扣卡
交易场景 trans_scene 定长 3 位 String 可选 交易类型为免注册网银支付时,必传 001:投资理财; 002:实物买卖/租赁; 003:虚拟物品购买/购买服务;004:缴费; 005:还款; 006:账户充值
交易场景小类 trans_scene_sub 定长 6 位 String 可选 交易类型为免注册网银支付时,必传 001001:定期 001002:活期 002001:数码及家用电器 002002:家具建材 002003:生活用品(含:服饰、美容、箱包、玩具、图书/音像、食品等)002004:珠宝/古玩/贵金属/邮币卡 002005:医药003001:游戏点卡003002:电话费003003:储值卡 003004:服务(含:旅游、美容、按摩、入场消费的美食团购等)004001:公共事业 004002:手机话费 004003:教育 004004:房屋租赁/物业费 005001:到期还款 005002:提前还款 005003:预期还款 005004:活期赎回 006001:其他
订单超时时间 order_expire_time Integer 可选 单位:分钟 如果位空,则默认 4 个小时有效期;如果不为空,必须大于等于 60 分钟,小于等于 12*60 分钟,必须位整数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+trans_type+recharge_type+step_flag+biz_trans_id+trans_amt+bank_id+dc_flag+sms_code+sms_order_date+sms_order_id+sign_seq_id+in_cust_id+div_detail+ret_url+bg_ret_url+mer_priv+extension+card_no+trans_scene+trans_scene_sub

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 变长 String 必须 每一种消息类型代表一种交易,固定为 201
应答返回码 resp_code 定长 6 位 String 必须 201000–调用成功
应答返回描述 resp_desc 变长 String 必须 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识,交易类型为免注册网银支付时,非必传
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位 内数字或字母的组合
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 必须 组成规则:8 位 本平台日期+10 位 系统流水号
业务类型 trans_type 定长 8 位 String 必须 02020100:充值; 02020101:支付; 02020102:免注册支付个人用户仅支持支付交易
充值类型 recharge_type 定长 8 位 String 必须 02020000:个人网银 02020001:企业网银 02020002:快捷 02020003:代扣 02020006:二段式快捷交易类型为免注册支付时,充值类型只支持个人网银和企业网银
阶段标志 step_flag 定长 2 位 String 可选 01:快捷支付请求 02:快捷支付确认
业务请求流水 biz_trans_id 变长 20 位 String 可选 标志一个二段式快捷请求,商户下判断唯一,只能是数字和字母
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
开户银行代号 bank_id 变长 8 位 String 可选 个人/企业网银充值必传,快捷/代扣充值非必传,可为空
借贷标记 dc_flag 定长 1 位 String 可选 个人/企业网银充值必传,快捷/代扣充值非必传,可为空 D–借记 C–贷记
短信验证码 sms_code 定长 6 位 String 可选 与快捷绑卡时的银行预留手机号对应的短信验证码
短信验证码日期 sms_order_date 定长 8 位 String 可选 快捷充值使用,与 sms_code 对应的验证码订单日期
短信验证码订单号 sms_order_id 变长 20 位 String 可选 快捷充值使用,与 sms_code 对应的验证码订单号
代扣签约流水号 sign_seq_id 变长 18 位 String 可选 代扣签约订单唯一标识,代扣充值必传,其他充值不需传
入账客户号 in_cust_id 定长 16 位 String 可选 业务类型为支付时必传,且入账客户号不能是充值客户本人
分账账户串 div_detail 变长 String 可选 业务类型为支付时必传,分账账户必须是入账客户的账户数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”},{“div_acct_id”:”000002”,”div_amt”:”2.00”}] 分账串金额之和需等于充值金额支持多条分账指令
分账账户号 div_acct_id 变长 9 位 String 可选 div_detai 参数下的二级参数分账账户号
分账金额 div_amt 变长 14 位 String 可选 div_detai 参数下的二级参数分账金额,保留两位小数
手续费金额 fee_amt 变长 14 位 String 可选 手续费金额,格式为 ###.00
手续费扣款客户号 fee_cust_id 定长 16 位 String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长 9 位 String 可选 手续费扣款子账户号
商户前台应答地址 ret_url 变长 128 位 String 可选 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文。
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值。

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+platform_seq_id+trans_type+recharge_type+step_flag+biz_trans_id+trans_amt+bank_id+dc_flag+sms_code+sms_order_date+sms_order_id+sign_seq_id+in_cust_id+div_detail+fee_amt+fee_cust_id+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", "201"));
    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": "201",
  "resp_code": "201000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "201",
  "resp_code": "201003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
201000 交易成功
201002 请求已受理
201003 交易失败
201099 系统异常
201100 请求参数非法
201101 商户无此接口权限
201102 验证签名失败
201103 商户状态异常
201104 用户状态异常
201105 账户状态异常
201106 商户签名未配置
201202 交易订单号重复
201204 商户配置异常
201205 短信验证码验证失败
201206 短信验证码发送手机号与验证手机号不一致
201207 短信验证码或短信唯一标识为空
201208 短信验证码已失效请重新获取
201209 验证码发送接口与接口不一致
201300 不支持此充值银行
201301 该充值银行网关不存在
201302 不支持此充值类型
201303 商户充值基础信息未配置
201304 不支持此业务类型
201305 入账客户信息不正确
201306 入账分账串信息不正确
201307 该用户未绑定快捷卡
201308 该用户未绑定代扣卡
201309 该用户代扣协议不存在或状态异常
201310 企业用户或商户不支持快捷充值
201311 企业用户或商户不支持代扣充值
201312 手续费金额不得大于等于交易金额
201313 该充值银行与用户快捷卡不匹配
201314 充值手续费账户状态不正常
201315 个人用户仅支持个人网银充值
201316 支付失败
201501 交易失败(包含未知错误码)
201502 系统未开放或暂时关闭,请稍后再试
201503 交易通讯超时,请发起查询交易
201510 订单信息为空
201511 订单信息有误
201512 重复交易
201519 订单系统错误
201523 卡信息为空
201524 卡信息有误
201525 卡系统错误
201526 卡系统错误
201530 业务系统信息为空
201531 业务系统信息有误
201532 业务系统错误
201533 金额超限
201534 查无此交易
201536 与原交易信息不符
201538 风险受限
201542 扣款成功但交易超过规定支付时间
201560 交易失败,请联系发卡银行
201562 交易失败,发卡银行不支持该商户,请更换其他银行卡
201563 卡状态不正确
201564 银行卡余额不足
201565 输入的密码、有效期或 CVN2 有误,交易失败
201567 密码输入次数超限
201568 您的银行卡暂不支持该业务
201580 银行卡状态异常
201581 支付失败,请稍后再试
201583 金额超限次数超过限制,请稍后再试!
201584 单笔金额超限
201585 单日金额超限
201586 单月金额超限
201587 订单信息重复
201588 支付订单信息有误
201590 交易失败,参数不合法
201591 系统异常
201592 银行系统繁忙,请稍后再试
201593 系统超时
201594 银行处理中,请稍后再试
201599 系统异常
2015F0 渠道交易失败
2015F2 交易失败,未添加白名单
2015F6 交易失败,此卡未签约
2015P0 交易挂起,需要确认
201800 风控信息验证失败
201801 商户接口调用风控受限
201802 用户接口调用风控受限
201803 二级商户接口调用风控受限

快捷支付

接口功能说明

包括开户、绑卡和快捷支付功能

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 206
商户客户号 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—贷记,信用卡
贷记卡CVV2 cvv2 定长 3 位 String 可选 当 dc_flag 为 C 时,必传 cvv2
贷记卡有效期 valid_date 定长 4 位 String 可选 当 dc_flag 为 C 时,必传 cvv2
银行卡开户省份 card_prov 定长 4 位 String 可选 银行卡开户省份
银行卡开户地区 card_area 定长 4 位 String 可选 银行卡开户地区
阶段标志 step_flag 定长 2 位 String 必须 01:验卡阶段;02:验证短信阶段
业务请求流水 biz_trans_id 变长 20 位 String 必须 标志一个快捷支付请求,商户下判断唯一,只能是数字和字母
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长 16 位 String 必须 入账客户号不能是充值客户本人
分账账户串 div_detail 变长 String 必须 分账账户必须是入账客户的账户,分账串使用 UTF-8 字符集 URLEncode 编码后传入数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”},{“div_acct_id”:”000002”,”div_amt”:”2.00”}]分账串金额之和需等于充值金额支持多条分账指令
分账账户号 div_acct_id 变长 9 位 String 可选 div_detail 参数下的二级参数分账账户号
分账金额 div_amt 变长 14 位 String 可选 div_detail 参数下的二级参数分账金额,保留两位小数
短信验证码 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 加密后再使用
订单超时时间 order_expire_time Integer 可选 单位:分钟 如果位空,则默认 4 个小时有效期;如果不为空,必须大于等于 60 分钟,小于等于 12*60 分钟,必须位整数
扩展域 extension 变长 512 位 的String 可选 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”} 二级商户号由汇付生成,详见 二级商户录入接口
签名 check_value 变长 256 位 的String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+order_date+order_id+user_cust_id+cert_id+card_mobile+bank_id+card_no+dc_flag+cvv2+valid_date+card_prov+card_area+step_flag+biz_trans_id+trans_amt+in_cust_id+div_detail+sms_code+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 206
应答返回码 resp_code 定长 6 位 String 必须 206000– 调用成功
应答返回描述 resp_desc 变长 String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识,成功时必返
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
用户账户号 acct_id 变长 8 位 String 可选 用户账户号新开户且成功时必返
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD
订单号 order_id 变长 20 位 String 必须 由商户的系统生成,订单号和订单日期保证唯一
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 必须 组成规则:8 位 本平台日期 +10 位系统流水号
验卡手续费金额 verify_fee_amt 变长 14 位 String 可选 验卡手续费金额,格式为###.00
验卡手续费子账户号 verify_fee_acct_id 变长 9 位 String 可选 验卡手续费扣款子账户号
支付手续费金额 pay_fee_amt 变长 14 位 String 可选 支付手续费金额,格式为###.00
支付手续费子账户号 pay_fee_acct_id 变长 9 位 String 可选 支付验卡手续费扣款子账户号
商户私有域 mer_priv 变长 120 位 的String 可选 为商户的自定义字段
签名 check_value 变长 256 位 的String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+user_cust_id+trans_amt+acct_id+order_date+order_id+platform_seq_id+verify_fee_amt+verify_fee_acct_id+pay_fee_amt+pay_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", "206"));
    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": "206",
  "resp_code": "206000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "206",
  "resp_code": "206003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
206000 交易成功
206002 请求已受理
206003 交易失败
206099 系统异常
206100 请求参数非法
206101 商户无此接口权限
206102 验证签名失败
206103 商户状态异常
206104 用户状态异常
206105 账户状态异常
206106 商户签名未配置
206202 交易订单号重复
206203 账户可用余额不足
206204 商户配置异常
206205 短信验证码验证失败
206206 短信验证码发送手机号与验证手机号不一致
206207 短信验证码或短信唯一标识为空
206208 短信验证码已失效请重新获取
206209 验证码发送接口与接口不一致
206210 短信验证码发送过于频繁
206211 短信验证码发送失败
206431 不支持绑定该银行的银行卡
206432 用户已绑定快捷卡,不能再绑定取现卡
206433 银行卡号与银行不匹配
206434 该银行卡非借记卡
206435 企业用户/商户不支持快捷绑卡
206436 用户已绑定快捷或代扣卡,请勿重复申请
206437 用户有快捷卡正在绑定中,请勿重复绑卡
206438 省份地区信息非法
20643F 手机号与已绑定卡记录不匹配
206443 手机号已注册
206448 银行账号无效或不存在
206449 持卡人身份信息或手机号验证不符
20644A 卡号长度有误
20644B 验证超时
20644C 账号应为活期账号
20644D 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行
20644E 绑卡请求流水已存在
206501 交易失败(包含未知错误码)
206502 系统未开放或暂时关闭,请稍后再试
206503 交易通讯超时,请发起查询交易
206505 重复签约
206512 重复交易
206519 订单系统错误
206520 持卡人信息为空
206521 持卡人信息有误
206522 持卡人系统错误
206523 卡信息为空
206524 卡信息有误
206525 卡系统错误
206526 卡系统错误
206535 网关不支持签约交易
206538 风险受限
206560 交易失败,请联系发卡银行
206561 对不起,您所输的银行卡号有误,请核实后再试!
206562 交易失败,发卡银行不支持该商户,请更换其他银行卡
206563 卡状态不正确
206565 输入的密码、有效期或 CVN2 有误,交易失败
206566 持卡人身份信息或手机号输入不正确,验证失败
206568 您的银行卡暂不支持该业务
206571 对不起,您所输的验证码有误,请核实后再试!
206572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡行热线电话
206573 对不起,您所输的用户名有误,请核实后再试!
206574 对不起,您的证件类型有误,请核实后再试!
206575 对不起,您所输的证件号码有误,请核实后再试!
206576 对不起,您所输的手机号码有误,请核实后再试!
206577 验证码发送失败
206578 验证码超限或超时
206579 对不起,您的用户信息未通过银行验证,请核实后再试!
206580 银行卡状态异常
206590 交易失败,参数不合法
206591 系统异常
206592 银行系统繁忙,请稍后再试
206593 系统超时
206594 银行处理中,请稍后再试
206599 系统异常
2065F0 渠道交易失败
2065F2 交易失败,未添加白名单
2065F3 签约失败,请稍后再试
2065P0 交易挂起,需要确认
206510 订单信息为空
206511 订单信息有误
206530 业务系统信息为空
206531 业务系统信息有误
206532 业务系统错误
206533 金额超限
206534 查无此交易
206536 与原交易信息不符
206542 扣款成功但交易超过规定支付时间
206564 银行卡余额不足
206567 密码输入次数超限
206581 支付失败,请稍后再试
206583 金额超限次数超过限制,请稍后再试!
206584 单笔金额超限
206585 单日金额超限
206586 单月金额超限
206587 订单信息重复
206588 支付订单信息有误
2015F6 交易失败,此卡未签约
206630 不支持此充值银行
206631 该充值银行网关不存在
206632 不支持此充值类型
206633 商户充值基础信息未配置
206634 不支持此业务类型
206635 入账客户信息不正确
206636 入账分账串信息不正确
206637 该用户未绑定快捷卡
206638 该用户未绑定代扣卡
206639 该用户代扣协议不存在或状态异常
20663A 企业用户或商户不支持快捷充值
20663B 企业用户或商户不支持代扣充值
20663C 手续费金额不得大于等于交易金额
20663D 该充值银行与用户快捷卡不匹配
20663E 充值手续费账户状态不正常
20663F 个人用户仅支持个人网银充值
206640 支付失败
206800 风控信息验证失败
206801 商户接口调用风控受限
206802 用户接口调用风控受限
206803 二级商户接口调用风控受限

直接代扣

接口功能说明

使用四要素进行直接代扣的功能

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 207
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
付款方姓名 user_name 变长 50 位 String 必须 用户的真实姓名,中文应使用 UTF-8 字符集 URLEncode 编码后传入
付款方证件类型 cert_type 定长 8 位 String 必须 01020100:身份证; 01020101:护照; 01020102:军官证; 01020104:回乡证; 01020106:台胞证; 01020107:其他目前仅支持身份证
付款方证件号 cert_id 变长 20 位 String 必须 付款方证件号码,与证件类型对应
付款方银行预留手机号 card_mobile 变长 11 位 String 必须 付款方银行预留手机号,变长 11 位数字
付款方银行卡号 card_no 变长 32 位 String 必须 付款方银行卡号,变长 32 位数字
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
银行账户类型 card_type 定长 8 位 String 必须 01050001:对公账户; 01050000:对私账户目前仅支持对私
入款方账户号 in_cust_acct_id 变长 9 位 String 必须 入款方账户号
入款方用户号 in_cust_id 定长 16 位 String 必须 入款方客户号不能是出款方客户号
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 通过后台异步通知,商户应在应答接收的响应中输出 RECV_ORD_ID 字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符串 3) 必须是外网地址
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
订单超时时间 order_expire_time Integer 可选 单位:分钟 如果位空,则默认 4 个小时有效期;如果不为空,必须大于等于 60 分钟,小于等于 12*60 分钟,必须位整数
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”}二级商户号由汇付生成,详见 二级商户录入接口
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+order_date+order_id+cert_type+cert_id+card_mobile+card_no+trans_amt+cardType+in_cust_acct_id+in_cust_id+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 207
应答返回码 resp_code 定长 6 位 String 必须 207000–调用成功
应答返回描述 resp_desc 变长 String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 必须 组成规则:8 位本平台日期 +10 位系统流水号
手续费金额 fee_amt 变长 14 位 String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长 16 位 String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长 9 位 String 可选 手续费扣款子账户号
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+order_date+order_id+platform_seq_id+fee_amt+fee_cust_id+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", "207"));
    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": "207",
  "resp_code": "207000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "207",
  "resp_code": "207003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
207000 交易成功
207002 请求已受理
207003 交易失败
207099 系统异常
207100 请求参数非法
207101 商户无此接口权限
207102 验证签名失败
207103 商户状态异常
207104 用户状态异常
207105 账户状态异常
207106 商户签名未配置
207202 交易订单号重复
207203 账户可用余额不足
207204 商户配置异常
207433 银行卡号与银行不匹配
207434 该银行卡非借记卡
207438 省份地区信息非法
20743F 手机号与已绑定卡记录不匹配
207443 手机号已注册
207448 银行账号无效或不存在
207449 持卡人身份信息或手机号验证不符
20744A 卡号长度有误
20744B 验证超时
20744C 账号应为活期账号
20744D 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行
20744E 绑卡请求流水已存在
207501 交易失败(包含未知错误码)
207502 系统未开放或暂时关闭,请稍后再试
207503 交易通讯超时,请发起查询交易
207505 重复签约
207512 重复交易
207519 订单系统错误
207520 持卡人信息为空
207521 持卡人信息有误
207522 持卡人系统错误
207523 卡信息为空
207524 卡信息有误
207525 卡系统错误
207526 卡系统错误
207535 网关不支持签约交易
207538 风险受限
207560 交易失败,请联系发卡银行
207561 对不起,您所输的银行卡号有误,请核实后再试!
207562 交易失败,发卡银行不支持该商户,请更换其他银行卡
207563 卡状态不正确
207565 输入的密码、有效期或 CVN2 有误,交易失败
207566 持卡人身份信息或手机号输入不正确,验证失败
207568 您的银行卡暂不支持该业务
207571 对不起,您所输的验证码有误,请核实后再试!
207572 签约失败,您尚未在银行柜面或网银页面签约此业务,请去柜面或网银开通,或者拨打发卡行热线电话
207573 对不起,您所输的用户名有误,请核实后再试!
207574 对不起,您的证件类型有误,请核实后再试!
207575 对不起,您所输的证件号码有误,请核实后再试!
207576 对不起,您所输的手机号码有误,请核实后再试!
207577 验证码发送失败
207578 验证码超限或超时
207579 对不起,您的用户信息未通过银行验证,请核实后再试!
207580 银行卡状态异常
207590 交易失败,参数不合法
207591 系统异常
207592 银行系统繁忙,请稍后再试
207593 系统超时
207594 银行处理中,请稍后再试
207599 系统异常
2075F0 渠道交易失败
2075F2 交易失败,未添加白名单
2075F3 签约失败,请稍后再试
2075P0 交易挂起,需要确认
207510 订单信息为空
207511 订单信息有误
207530 业务系统信息为空
207531 业务系统信息有误
207532 业务系统错误
207533 金额超限
207534 查无此交易
207536 与原交易信息不符
207542 扣款成功但交易超过规定支付时间
207564 银行卡余额不足
207567 密码输入次数超限
207581 支付失败,请稍后再试
207583 金额超限次数超过限制,请稍后再试!
207584 单笔金额超限
207585 单日金额超限
207586 单月金额超限
207587 订单信息重复
207588 支付订单信息有误
207630 不支持此充值银行
207631 该充值银行网关不存在
207632 不支持此充值类型
207633 商户充值基础信息未配置
207634 不支持此业务类型
207635 入账客户信息不正确
207636 入账分账串信息不正确
207637 该用户未绑定快捷卡
207638 该用户未绑定代扣卡
207639 该用户代扣协议不存在或状态异常
20763A 企业用户或商户不支持快捷充值
20763B 企业用户或商户不支持代扣充值
20763C 手续费金额不得大于等于交易金额
20763D 该充值银行与用户快捷卡不匹配
20763E 充值手续费账户状态不正常
20763F 个人用户仅支持个人网银充值
207640 支付失败
207800 风控信息验证失败
207801 商户接口调用风控受限
207802 用户接口调用风控受限
207803 二级商户接口调用风控受限

微信公众号支付

接口功能说明

微信公众号支付

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 211
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
商家公众号 open_id 定长 128 位 String 必须 微信用户关注商家公众号的openid
商家APPID app_id 定长 32 位 String 必须 商户 app 的 appid
商品标签 good_tag 变长 32 位 String 可选 商品标记,优惠标志等,包含中文请使用 UTF-8 字符集 URLEncode 编码后传入
原生态标记 raw_flag 变长 8 位 String 必须 原生态:00000001; 非原生态:00000000
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长 16 位 String 必须 入账客户号不能是客户本人
分账账户串 div_detail 变长 String 必须 分账账户必须是入账客户的账户,分账串使用 UTF-8 字符集 URLEncode 编码后传入数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”},{“div_acct_id”:”000002”,”div_amt”:”2.00”}]分账串金额之和需等于充值金额支持多条分账指令
分账账户号 div_acct_id 变长 9 位 String 必须 div_detail 参数下的二级参数分账账户号
分账金额 div_amt 变长 14 位 String 必须 div_detail 参数下的二级参数分账金额,保留两位小数
业务请求流水 biz_trans_id 变长 16 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
商品描述 goods_desc 变长 127 位 String 必须 商户对于该交易的描述, UTF-8 字符集 URLEncode 编码后传入,只校验长度
页面跳转地址 call_back_url 变长 225 位 String 可选 用于支付结束页面跳转用注意:1) URL 应使用 UTF-8 字符集 URLEncode 编码后传入 2) URL 中请不要包含特殊字符 3) 需送绝对路径
商户后台应答地址 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 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+open_id+app_id+raw_flag+trans_amt+in_cust_id+div_detail+biz_trans_id+call_back_url+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 变长 String 必须 每一种消息类型代表一种交易,固定为 211
应答返回码 resp_code 定长 6 位 String 必须 211000– 调用成功
应答返回描述 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 位系统流水号
手续费金额 fee_amt 变长 14 位 String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长 16 位 String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长 9 位 String 可选 手续费扣款子账户号
业务请求流水 biz_trans_id 变长 16 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
支付明细 pay_info 变长 600 位 String 可选 json格式字符串,作用于原生态js支付时的参数
动态口令 token_id 变长 256 位 String 必须 用于后续接口调用中使用
借贷标识 dc_flag 定长 1 位 String 可选 D–借记,储蓄卡 C–贷记,信用卡
现金券 cash_coupon 变长 14 位 String 可选 现金券金额
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值。

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+platform_seq_id+fee_amt+fee_cust_id+fee_acct_id+biz_trans_id+pay_info+token_id+dc_flag+cash_coupon+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", "211"));
    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": "211",
  "resp_code": "211000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "211",
  "resp_code": "211003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
211000 交易成功
211002 请求已受理
211003 交易失败
211099 系统异常
211100 请求参数非法
211101 商户无此接口权限
211102 验证签名失败
211103 商户状态异常
211104 用户状态异常
211105 账户状态异常
211106 商户签名未配置
211202 交易订单号重复
211204 商户配置异常
211305 入账客户信息不正确
211306 入账分账串信息不正确
211312 手续费金额不得大于等于交易金额
211314 充值手续费账户状态不正常
211320 免开户支付只支持个人和企业网银
211324 扫码渠道不支持
211800 风控信息验证失败
211801 商户接口调用风控受限
211802 用户接口调用风控受限
211803 二级商户接口调用风控受限

扫码支付

接口功能说明

扫码支付生成二维码订单接口

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 208
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
扫码支付渠道 qr_pay_channel 定长 8 位 String 必须 二维码微信: 02020400; 二维码支付宝: 02020401; 二维码银联: 02020402
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
入账客户号 in_cust_id 定长 16 位 String 必须 业务类型为支付时必传,且入账客户号不能是充值客户本人
分账账户串 div_detail 变长 String 必须 业务类型为支付时必传,分账账户必须是入账客户的账户,分账串使用 UTF-8 字符集 URLEncode 编码后传入数据格式:[{“div_acct_id”:”000001”,”div_amt”:”1.00”},{“div_acct_id”:”000002”,”div_amt”:”2.00”}]分账串金额之和需等于充值金额支持多条分账指令
分账账户号 div_acct_id 变长 9 位 String 必须 div_detail 参数下的二级参数分账账户号
分账金额 div_amt 变长 14 位 String 必须 div_detail 参数下的二级参数分账金额,保留两位小数
业务请求流水 biz_trans_id 变长 16 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
商品描述 goods_desc 变长 127 位 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 可选 用于扩展请求参数若需要进行二级商户号验证,则必传,格式:{“sub_mer_cust_id”:”111111111111”}二级商户号由汇付生成,详见 二级商户录入接口
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+qr_pay_channel+trans_amt+in_cust_id+div_detail+biz_trans_id+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 变长 String 必须 每一种消息类型代表一种交易,固定为 208
应答返回码 resp_code 定长 6 位 String 必须 208000–调用成功
应答返回描述 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 位内数字或字母的组合
二维码url qr_code_url 变长 64 位 String 必须 二维码 URL,返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 必须 组成规则:8 位本平台日期 +10 位系统流水号
手续费金额 fee_amt 变长 14 位 String 可选 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 定长 16 位 String 可选 手续费扣款客户号
手续费子账户号 fee_acct_id 变长 9 位 String 可选 手续费扣款子账户号
业务请求流水 biz_trans_id 变长 16 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文。
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值。

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+qr_code_url+platform_seq_id+fee_amt+fee_cust_id+fee_acct_id+biz_trans_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", "208"));
    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": "208",
  "resp_code": "208000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "208",
  "resp_code": "208003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
208000 交易成功
208002 请求已受理
208003 交易失败
208099 系统异常
208100 请求参数非法
208101 商户无此接口权限
208102 验证签名失败
208103 商户状态异常
208104 用户状态异常
208105 账户状态异常
208106 商户签名未配置
208202 交易订单号重复
208203 账户可用余额不足
208204 商户配置异常
208305 入账客户信息不正确
208306 入账分账串信息不正确
208433 银行卡号与银行不匹配
208434 该银行卡非借记卡
208438 省份地区信息非法
20843F 手机号与已绑定卡记录不匹配
208443 手机号已注册
208448 银行账号无效或不存在
208449 持卡人身份信息或手机号验证不符
20844A 卡号长度有误
20844B 验证超时
20844C 账号应为活期账号
20844D 您的银行卡暂不支持该业务,请更换其他银行卡或咨询发卡银行
20844E 绑卡请求流水已存在
208800 风控信息验证失败
208801 商户接口调用风控受限
208802 用户接口调用风控受限
208803 二级商户接口调用风控受限

交易退款

接口功能说明

用户交易完成后,可用于申请退款

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 209
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长 16 位 String 可选 由汇付生成,用户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
交易类型 trans_type 定长 8 位 String 必须 02020005:二维码
原业务请求流水 biz_trans_id 变长 20 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
退款金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
出账客户号 out_cust_id 定长 16 位 String 必须 原交易的入账客户号
出账账户号 out_acct_id 变长 9 位 String 必须 原交易的入账客户号下的账户
手续费客户号 fee_cust_id 定长 16 位 String 可选 暂不支持
手续费账户号 fee_acct_id 变长 9 位 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 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+trans_type+biz_trans_id+trans_amt+out_cust_id+out_acct_id+fee_cust_id+fee_acct_id+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 209
应答返回码 resp_code 定长 6 位 String 必须 209000–调用成功
应答返回描述 resp_desc 变长 String 必须 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
原业务请求流水 biz_trans_id 变长 20 位 String 必须 标志一个支付请求,商户下判断唯一,只能是数字和字母
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 必须 组成规则:8 位本平台日期 +10 位系统流水号
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+order_date+order_id+biz_trans_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", "209"));
    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": "209",
  "resp_code": "209000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "209",
  "resp_code": "209003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
209000 交易成功
209002 请求已受理
209003 交易失败
209099 系统异常
209100 请求参数非法
209101 商户无此接口权限
209102 验证签名失败
209103 商户状态异常
209104 用户状态异常
209105 账户状态异常
209106 商户签名未配置
209202 交易订单号重复
209203 账户可用余额不足
209204 商户配置异常
209301 当前交易不能申请退款
209302 总退款金额不能大于原交易金额
209303 出账账户号无效
209304 省份地区信息非法
209305 退款受理中或已成功,请勿重复申请
209306 产品信息校验失败
209307 只能对至少1天前的交易进行退款
209308 交易金额不合法
209309 请求太频繁

取现

接口功能说明

用于本平台下用户取现

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:

  • T0取现:异步
  • T1取现:同步+异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 202
商户客户号 mer_cust_id 变长 16 位 String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 变长 16 位 String 必须 由汇付生成,用户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
取现银行卡号 card_no 变长 32 位 String 可选 本次取现的银行卡卡号
手续费/服务费内外扣标记 cash_deduct_type 定长 8 位 String 必须 02030100:内扣; 02030101:外扣目前只支持内扣
商户收取服务费金额 serv_fee_amt 变长 14 位 String 可选 商户收取用户的服务费金额,格式为###.00
商户收取服务费子账户号 serv_fee_acct_id 变长 9 位 String 可选 服务费非空时为必填,商户用来收取服务费的子账户号
手续费收取对象 fee_obj 定长 8 位 String 可选 用户商户指定取现手续费的收取对象,优先级别高于商户配置的收取对象 02050200:向商户收取 02050201:向用户收取
手续费收取子账户 fee_acct_id 变长 9 位 String 可选 向商户收取时,必填向用户收取时,可忽略
取现方式 cash_type 定长 8 位 String 必须 02030000:T+0 取现 02030010:T+1 取现,可传的取现通道范围小于等于商户配置的取现通道
商户后台应答地址 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 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+user_cust_id+order_date+order_id+trans_amt+card_no+cash_deduct_type+serv_fee_amt+serv_fee_acct_id+fee_obj+fee_acct_id+cash_type+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 变长 String 必须 每一种消息类型代表一种交易,固定为 202
返回码 resp_code 变长 String 必须 202000–调用成功
结果描述 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 位内数字或字母的组合
平台流水ID platform_seq_id 定长 18 位 String 必须 组成规则:8 位本平台日期 +10 位系统流水号
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
实际到账金额 real_trans_amt 变长 14 位 String 可选 取现成功实际到账金额,各种原因导致取现失败则不传
取现银行卡号 card_no 变长 32 位 String 可选 本次取现的银行卡卡号
手续费/服务费内外扣标记 cash_deduct_type 定长 8 位 String 可选 02030100:内扣; 02030101:外扣目前只支持内扣
开户银行代号 bank_id 变长 8 位 String 可选 具体见附件:取现支持银行列表
商户收取服务费金额 serv_fee_amt 变长 14 位 String 可选 商户收取用户的服务费金额,格式为###.00
商户子账户号 serv_fee_acct_id 变长 9 位 String 可选 服务费非空时为必填,商户用来收取服务费的子账户号
手续费金额 fee_amt 变长 14 位 String 必须 手续费金额,格式为###.00
手续费扣款客户号 fee_cust_id 变长 16 位 String 必须 手续费扣款客户号
手续费扣款子账户号 fee_acct_id 变长 9 位 String 必须 手续费扣款子账户号
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 定长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+user_cust_id+order_date+order_id+platform_seq_id+trans_amt+real_trans_amt+card_no+cash_deduct_type+bank_id+serv_fee_amt+serv_fee_acct_id+fee_amt+fee_cust_id+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", "202"));
    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": "202",
  "resp_code": "202000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "202",
  "resp_code": "202003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
202000 交易成功
202002 请求已受理
202003 交易失败
202099 系统异常
202100 请求参数非法
202101 商户无此接口权限
202102 验证签名失败
202103 商户状态异常
202104 用户状态异常
202105 账户状态异常
202106 商户签名未配置
202202 交易订单号重复
202204 商户配置异常
202212 账户余额查询失败
202300 银行卡不是取现卡
202301 没有可用的默认取现卡
202302 取现服务费超出最大费率配置
202303 取现金额不足
202304 取现方式错误
202305 银行卡信息不存在或状态异常
202306 接口不支持手续费外扣
202307 取现金额小于等于取现费用
202308 商户取现不支持服务费
202309 手续费专户不能出账
202800 风控信息验证失败
202801 商户接口调用风控受限
202802 用户接口调用风控受限
202803 二级商户接口调用风控受限

转账

接口功能说明

用于商户平台下商户转用户、用户转商户和商户子账户间的转账

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:同步+异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 203
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位 内数字或字母的组合
转账类型 transfer_type 定长 8 位 String 必须 02040000:商户转用户;02040001:企业用户转商户;02040002:企业用户与个人用户间转账;02040003:商户子账户间转账
出账客户号 out_cust_id 定长 16 位 String 必须 转账出账方的客户号,出账客户不可为个人用户
出账账户号 out_acct_id 变长 9 位 String 必须 转账出账方的账户号
入账客户号 in_cust_id 定长 16 位 String 必须 转账入账方的客户号
入账账户号 in_acct_id 变长 9 位 String 必须 转账入账方的账户号
转账金额 transfer_amt 变长 14 位 String 必须 转账金额,格式为###.00
商户后台应答地址 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 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+order_date+order_id+transfer_type+out_cust_id+out_acct_id+in_cust_id+in_acct_id+transfer_amt+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
接口标识 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 203
应答返回码 resp_code 定长 6 位 String 必须 203000–调用成功
应答描述 resp_desc 变长 String 必须 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
转账类型 transfer_type 定长 8 位 String 必须 02040000:商户转用户; 02040001:企业用户转商户; 02040002:企业用户与个人用户间转账; 02040003:商户子账户间转账
出账客户号 out_cust_id 定长 16 位 String 必须 转账出账方的客户号,出账客户不可为个人用户
出账账户号 out_acct_id 变长 9 位 String 必须 转账出账方的账户号
入账客户号 in_cust_id 定长 16 位 String 必须 转账入账方的客户号
入账账户号 in_acct_id 变长 9 位 String 必须 转账入账方的账户号
转账金额 transfer_amt 变长 14 位 String 必须 转账金额,格式为###.00
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
入参扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+order_date+order_id+transfer_type+out_cust_id+out_acct_id+in_cust_id+in_acct_id+transfer_amt+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", "203"));
    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": "203",
  "resp_code": "203000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "203",
  "resp_code": "203003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
203000 交易成功
203099 系统异常
203100 请求参数非法
203101 商户无此接口权限
203102 验证签名失败
203103 商户状态异常
203104 用户状态异常
203202 交易订单号重复
203300 转账类型与转入方/转出方用户信息不匹配
203301 转出方用户信息不存在
203302 转入方用户信息不存在
203303 转出方用户状态异常
203304 转入方用户状态异常
203305 子账户间转账,商户信息不存在
203306 子账户间转账,商户状态异常
203307 转出方帐户号不存在
203308 转入方账号不存在
203309 转出方帐户状态异常
203310 转入方帐户状态异常
203311 转账失败
203312 商户手续费帐户不存在
203313 商户手续费帐户状态异常
203314 风控拦截
203315 验证手续费专户,资金不能转出
203800 风控信息验证失败
203801 商户接口调用风控受限
203802 用户接口调用风控受限
203803 二级商户接口调用风控受限

代发

接口功能说明

单笔代发接口

调用方式:后台调用

应答方式:同步后台应答、异步应答

接口类型:异步

请求参数列表

中文名 参数名 数据格式 是否必须 说明
版本号 version 定长 2 位 String 必须 目前固定为 10
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 214
商户客户号 mer_cust_id 变长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位 内数字或字母的组合
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
代发出账子账户 acct_id 变长 9 位 String 必须 商户的子账户
银行账户类型 card_type 定长 8 位 String 必须 01050001:对公账户; 01050000:对私账户目前仅支持对私
代发类型 agency_pay_type 定长 8 位 String 必须 02080000:T+0 代发目前仅支持 T+0
银行代号 bank_id 变长 8 位 String 必须 具体见附件一:支持银行列表
银行卡号 card_no 变长 32 位 String 必须 本次快捷绑卡待绑定的银行卡号,变长 32 位 数字
银行卡开户省份 card_prov 定长 4 位 String 可选 对私非必传,对公必传
银行卡开户地区 card_area 定长 4 位 String 可选 对私非必传,对公必传
持卡方户名 user_name 变长 50 位 String 必须 用户的真实姓名,中文应使用 UTF-8 字符集 URLEncode 编码后传入
持卡方证件类型 cert_type 定长 8 位 String 必须 01020100:身份证; 01020101:护照; 01020102:军官证; 01020104:回乡证; 01020106:台胞证; 01020107:其他银行账户类型为对私时必传
持卡方证件号 cert_id 变长 30 位 String 必须 用户证件号码银行账户类型为对私时必传
企业证照号 corp_code 变长 30 位 String 可选 银行账户类型为对公时必传
手续费收取子账户 fee_acct_id 变长 9 位 String 可选 如果不传,则按商户配置的子账户收取手续费
代发用途 purpose 变长 512 位 String 必须 代发用途
商户后台应答地址 bg_ret_url 变长 128 位 String 必须 返参中的 URL 为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户私有域 mer_priv 变长 120 位 String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行 Base64 加密后再使用
扩展域 extension 变长 512 位 String 可选 用于扩展请求参数
签名 check_value 变长 256 位 String 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值。

本接口加签拼接顺序:

version+cmd_id+mer_cust_id+order_date+order_id+trans_amt+acct_id+card_type+agency_pay_type+bank_id+card_no+card_prov+card_area+cert_type+cert_id+corp_code+fee_acct_id+bg_ret_url+mer_priv+extension

返回参数列表

中文名 参数名 数据格式 是否必须 说明
消息类型 cmd_id 定长 3 位 String 必须 每一种消息类型代表一种交易,固定为 213
返回码 resp_code 定长 6 位 String 必须 213000–调用成功
返回描述 resp_desc 变长 String 必须 返回码的对应中文描述,中文为 UTF-8 字符集 URLEncode 编码后的字符串,商户应解码获取原文
商户客户号 mer_cust_id 定长 16 位 String 必须 由汇付生成,商户的唯一性标识
订单日期 order_date 定长 8 位 String 必须 格式为 YYYYMMDD,例如:20160307
订单号 order_id 变长 20 位 String 必须 由商户生成,必须保证唯一,20 位内数字或字母的组合
本平台交易唯一标识号 platform_seq_id 定长 18 位 String 可选 组成规则:8 位本平台日期 +10 位系统流水号
交易金额 trans_amt 变长 14 位 String 必须 交易金额,格式为###.00
手续费金额 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 必须 加签规则:MD5+RSA 将参数列表的值按从上到下的顺序进行字符串拼接,调用签名函数获得的值

本接口加签拼接顺序:

cmd_id+resp_code+mer_cust_id+order_date+order_id+platform_seq_id+trans_amt+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", "214"));
    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": "214",
  "resp_code": "214000",
  "resp_desc": "交易成功",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

失败响应

200
{
  "cmd_id": "214",
  "resp_code": "214003",
  "resp_desc": "交易失败",
  "mer_cust_id" : "6666000000000001",
  "order_date": "20180327",
  "order_id": "10000000001",
  .......
}

接口返回码

返回参数 返回描述
214000 交易成功
214002 请求已受理
214003 交易失败
214099 系统异常
214100 请求参数非法
214101 商户无此接口权限
214102 验证签名失败
214103 商户状态异常
214104 用户状态异常
214105 账户状态异常
214106 商户签名未配置
214202 交易订单号重复
214300 商户出账子账户不存在或状态异常
214301 商户手续费子账户不合法
214302 商户代发配置异常
214303 不支持此代发类型
214304 不支持此银行账户类型
214305 不支持此银行
214306 银行卡号与银行不匹配
214800 风控信息验证失败
214801 商户接口调用风控受限
214802 用户接口调用风控受限
214803 二级商户接口调用风控受限