代发类接口¶
213 代发接口¶
功能说明¶
商户调用该接口可以进行代发交易
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 | 
|---|---|---|---|---|
| 版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 | 
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为213 | 
| 商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 | 
| 订单日期 | order_date | 定长8位String | 必须 | 格式为“yyyyMMdd” | 
| 出账客户号 | pay_cust_id | 定长16位的String | 必须 | |
| 出账账户号 | pay_acct_id | 变长9位 | 必须 | |
| 订单号 | order_id | 变长20位的String | 必须 | 由商户的系统生成,订单号和订单日期保证唯一 | 
| 交易金额 | trans_amt | 变长14位String | 必须 | (金额格式必须是###.00)比如2.00,2.01 | 
| 收款账户类型 | acct_type | 定长1位String | 必须 | 银行对公账户(1),银行对私账户(2) | 
| 银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 | 
| 银行编号 | bank_id | 变长8位 | Y(acct_type=1)/N | 对公必填,对私选填 | 
| 银行名称 | bank_name | 变长50位String | Y(acct_type=1)/N | 对公必填,对私选填 | 
| 开户行省份 | bank_prov | 定长4位String | 可选 | 填写编号(商户有省份值请填入) ; 与地区值同时传或都不传 | 
| 开户行地区 | bank_area | 定长4位String | 可选 | 填写编号(商户有地区值请填入); 与省份值同时传或都不传 | 
| 支行名称 | bank_subbranch | 变长50位String | 可选 | |
| 联行号 | unite_bank_code | 变长20位String | 可选 | |
| 代发用途 | purpose | 变长20位String | 必须 | |
| 收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 | 
| 收款人手机号 | mobile | 变长11位String | 可选 | |
| 证件类型 | cert_type | 变长2位String | Y(acct_type=2)/N | 00身份证 01护照 02军官证 03士兵证 04回乡证 06警官证 08台胞证 05户口本 13其他 (收款账户为对私必传,对公为可选) | 
| 证件号 | cert_id | 变长20位String | Y(acct_type=2)/N | (收款账户为对私必传,对公为可选) | 
| 代发方式 | trans_mode | 变长2位String | 可选 | 代发的到账时间。 00 : T0 ; 01 : T1 (不传默认走T0), | 
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | 
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 | 
| 扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 | 
| 交易发生地 | transaction_addr | 变长128位的String | 必须 | |
| 对手方交易IP | user_ip_addr | 变长20位的String | 必须 | 
返回参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 | 
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为213 | 
| 应答返回码 | resp_code | 定长6位String | 必须 | 213001—处理中 , 其他见返回码 | 
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 | 
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 | 
| 订单日期 | order_date | 定长8位String | 必须 | 格式为YYYYMMDD,例如:20160307 | 
| 订单号 | order_id | 变长20位String | 必须 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 | 
| 本平台交易唯一标识号 | platform_seq_id | 定长18位String | 必须 | 组成规则:8位本平台日期+ 10位系统流水号 | 
| 手续费 | fee_amt | 变长14位String | 必须 | |
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | 
| 商户私有域 | mer_priv | 变长120位的String | 可选 | 为商户的自定义字段,该字段在交易完成后由本平台原样返回 | 
| 扩展域 | extension | 变长512位的String | 可选 | 用于扩展请求参数 | 
返回码¶
| 返回码 | 返回描述 | 
| 213000 | 交易成功 | 
| 213001 | 请求处理中 | 
| 213003 | 交易失败 | 
| 213098 | 系统超时 | 
| 213099 | 系统异常 | 
| 213100 | 请求参数非法 | 
| 213101 | 商户无此接口权限 | 
| 213102 | 验证签名失败 | 
| 213103 | 商户状态异常 | 
| 213107 | 消息类型与签名内容不一致 | 
| 213108 | 商户客户号与签名内容不一致 | 
| 213109 | 版本号与签名内容不一致 | 
| 213110 | 商户号不存在 | 
| 213112 | 出账账号不存在 | 
| 213113 | 过渡账户不能出账 | 
| 213303 | 银行卡信息与银行信息不匹配 | 
| 213304 | 银行卡类型错误 | 
| 213320 | 交易订单号重复 | 
| 213326 | 商户客户号与出账客户号不一致 | 
| 213331 | 代发手续费账户未配置 | 
| 213321 | 代发手续费未配置 | 
| 213328 | 卡号或证件号或电话号码解密失败 | 
| 213322 | 代发失败 | 
| 213329 | 交易收款人已列入反洗钱黑名单,交易已被禁止 | 
| 213333 | 您尚未开通T0/T1代发功能,请联系汇付业务人员 | 
| 213334 | 账户余额或手续费余额不足,请先进行充值 | 
代码示例¶
java
String valueObj = "{
       "cmd_id": "213",
       "version": "10",
       "mer_cust_id": "6666000000026086",
       "order_date": "20171228",
       "order_id": "200111127",
       "pay_cust_id": "6666000000026086",
       "pay_acct_id": "79506",
       "trans_amt": "1.36",
       "acct_type": "1",
       "bank_card_no": "62533820171228",
       "bank_name": "",
       "bank_prov": "",
       "bank_area": "",
       "bank_subbranch": "",
       "bank_id": "",
       "purpose": "啊啊啊啊啊",
       "cust_name": "飞飞飞",
       "mobile": "16666666666",
       "cert_type": "00",
       "cert_id": "220523198005162957",
       "trans_mode": "01",
       "ret_url": "",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "test_mer_priv",
       "extension": ""
       }";
 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "213";
 String merCustId = "6666000000026086";
 String version = "10";
 String contentType = "application/x-www-form-urlencoded";
 String charset = "UTF-8";
 String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
 jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
 jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
 String body = httpResponse.bodyText();
 String resultObj = parseResult(body);//解密
成功响应:
200
      {
        "cmd_id": "213",
        "resp_code": "213000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "213",
      "resp_code": "213099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }
313 代发电子回单¶
请求参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 | 
|---|---|---|---|---|
| 版本号 | version | 定长2位的String | 必须 | 固定为10,如版本升级,能向前兼容 | 
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为313 | 
| 商户客户号 | mer_cust_id | 定长16位的String | 必须 | 商户的唯一标识 | 
| 原订单日期 | order_date | 定长8位String | 可选 | 格式为YYYYMMDD,例如:20160307; | 
| 原订单号 | order_id | 变长20位String | 可选 | 由商户生成,必须保证唯一, 20位内的字母或数字组合; (订单日期+订单号与平台流水号必选其一) | 
| 平台流水号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 (订单日期+订单号与平台流水号必选其一) | 
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户回执单生成结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | 
同步返回参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 | 
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长3位String | 必须 | 每一种消息类型代表一种交易,此处为313 | 
| 应答返回码 | resp_code | 定长6位String | 必须 | 313001—处理中 , 其他见返回码表 | 
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 | 
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 | 
| 原订单日期 | order_date | 定长8位String | 可选 | 格式为YYYYMMDD,例如:20160307 | 
| 原订单号 | order_id | 变长20位String | 可选 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 | 
| 原平台交易唯一标识号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 | 
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | 
| 收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 | 
| 银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 | 
| 代发用途 | purpose | 变长20位String | 必须 | 代发用途 | 
商户后台应答返回参数¶
| 参数中文名称 | 参数名称 | 数据格式 | 是否必须 | 说明 | 
|---|---|---|---|---|
| 消息类型 | cmd_id | 定长3位String | 必须 | 313 | 
| 应答返回码 | resp_code | 定长6位String | 必须 | 313000–调用成功,其他见返回码表 | 
| 应答返回描述 | resp_desc | 变长String | 必须 | 返回码的对应中文描述 | 
| 商户客户号 | mer_cust_id | 定长16位String | 必须 | 由汇付生成,商户的唯一性标识 | 
| 原订单日期 | order_date | 定长8位String | 可选 | 格式为YYYYMMDD,例如:20160307 | 
| 原订单号 | order_id | 变长20位String | 可选 | 由商户生成,必须保证唯一, 20位内的字母或数字组合 | 
| 原平台交易唯一标识号 | platform_seq_id | 定长18位String | 可选 | 组成规则:8位本平台日期+ 10位系统流水号 | 
| 商户后台应答地址 | bg_ret_url | 变长128位的String | 必须 | 通过后台异步通知商户代发结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址 | 
| 回执单下载地址 | receipt_url | 变长256位的String | 必须 | 生成的电子签章回执单的下载地址 | 
| 收款人姓名 | cust_name | 变长20位String | 必须 | 必须与银行户名相同 | 
| 银行账号 | bank_card_no | 变长30位String | 必须 | 代发到的银行账户 | 
| 代发用途 | purpose | 变长20位String | 必须 | 
代码示例¶
java
String valueObj = "{
       "version": "10",
       "cmd_id": "313",
       "mer_cust_id": "6666000000028641",
       "order_date": "20180509",
       "order_id": "1000001",
       "platform_seq_id": "201805090000010264",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json"
       }";
 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "313";
 String merCustId = "6666000000026086";
 String version = "10";
 String contentType = "application/x-www-form-urlencoded";
 String charset = "UTF-8";
 String postStr = "cmd_id=" + cmdId + "&version=" + version + "&mer_cust_id=" + merCustId + "&check_value=" + checkValue;
 jodd.http.HttpRequest httpRequest = jodd.http.HttpRequest.post(testUrl).charset(charset);
 jodd.http.HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
 String body = httpResponse.bodyText();
 String resultObj = parseResult(body);//解密
成功响应:
200
      {
        "cmd_id": "313",
        "resp_code": "313000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "313",
     "resp_code": "313099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }
返回码¶
| 代发回执单(cmd_id=313) | |
| 313000 | 交易成功 | 
| 313003 | 交易失败 | 
| 313099 | 系统异常 | 
| 313100 | 请求参数非法 | 
| 313101 | 商户无此接口权限 | 
| 313102 | 验证签名失败 | 
| 313103 | 商户状态异常 | 
| 313104 | 用户状态异常 | 
| 313107 | 消息类型与签名内容不一致 | 
| 313108 | 商户客户号与签名内容不一致 | 
| 313109 | 版本号与签名内容不一致 | 
| 313110 | 商户号不存在 | 
| 313310 | 产品信息校验失败 | 
| 313201 | 该商户未开通代发回执单权限 | 
| 313202 | 未查询到该笔交易 |