用户管理类接口

101 个人用户开户接口

功能说明

用于在本平台系统下为个人用户开设专属虚拟账户。返回的参数列表中开发者至少要保存用户虚拟账户客户号user_cust_id和子账号acct_id,以便后续其他接口中会用到。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为101
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
用户姓名 user_name 变长50位String 必须 用户的真实姓名
身份证号 cert_id 变长18位String 必须 用户的身份证号
手机号 user_mobile 定长11位String 必须 用户的手机号
证件有效期 vali_date 定长8位String 可选 填写证件上有效期的截至日期,格式为:YYYYMMDD,例如:20290420
用户省份 cust_prov 定长4位String 必须 用户省份,如上海0031
用户地区 cust_area 定长4位String 必须 用户地区,如上海3100
住址 cust_address 变长250位String 必须 填写证件上的住址
职业 occupation 定长2位String 必须 个人职业分类
邮箱 user_email 变长40位String 可选 用户的电子邮箱
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
国籍 nationality 变长128位的String 必须 例如:中华人民共和国

个人职业分类表:

职业名称 编号   职业名称 编号
国家机关、党群机关、企事业单位负责人 01   卫生行业从业人员 08
金融业从业人员 02   IT业从业人员 09
房地产业从业人员 03   农林牧渔劳动者 10
商贸从业人员 04   生产工作、运输工作和部分体力劳动者 11
自由职业者 05   退休人员 12
科教文从业人员 06   不便分类的其他劳动者 13
制造业从业人员 07      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为101
应答返回码 resp_code 定长6位String 必须 101000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
子账户号 acct_id 变长16位String 必须 由汇付生成,用户的默认子账户号
手机号 user_mobile 定长11位String 必须 用户的手机号
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+10位系统流水号
手续费金额 fee_amt 变长14位String 必须 手续费金额,格式为###.00
手续费子账户号 fee_acct_id 变长9位String 可选 手续费扣款子账户号
商户后台应答地址 bg_ret_url 变长120位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址结果
商户私有域 mer_priv 变长128位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

代码示例

java

 String valueObj = "{
      "version": "10",
      "cmd_id": "101",
      "mer_cust_id": "6666000000026086",
      "order_id": "10000000001",
      "order_date": "20170828",
      "solo_flg": "00000100",
      "user_name": "测试2.0",
      "cert_id": "441201199010245791",
      "user_mobile": "15947001263",
      "vali_date": "20161130",
      "cust_prov": "0031",
      "cust_area": "3100",
      "cust_address": "12",
      "occupation": "12",
      "user_email": "johson.wu_56@qq.com",
      "pay_password": "password",
      "mer_priv": "testmerpriv",
      "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
      "extension": "extension"
      }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "101";
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": "101",
        "resp_code": "101000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
成功响应:
200
   {
     "cmd_id": "101",
     "resp_code": "101304",
     "resp_desc": "个人用户开户失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
101100 请求参数非法
101000 交易成功
101098 系统超时
101099 系统异常
101101 商户无此接口权限
101102 验证签名失败
101103 商户状态异常
101107 消息类型与签名内容不一致
101108 商户客户号与签名内容不一致
101109 版本号与签名内容不一致
101110 商户号不存在
101202 交易订单号重复
101203 账户可用余额不足
101204 商户配置异常
101301 该用户已开户,身份证号已存在
101302 该用户已开户,手机号已存在
101303 该用户正在开户中,请务重复申请
101304 个人用户开户失败
101305 手续费收取失败
101306 个体户开户时,支付密码为必输
101307 个体户开户时,证件有效期为必输
101308 省份地区信息非法

134 个人用户信息修改接口

功能说明

用于在本平台系统下为个人用户修改信息:目前只支持修改个人用户开户时的手机号。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为134
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一,
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:202020604
手机号 user_mobile 定长11位String 必须 用户新的手机号
后台应答地址 bg_ret_url 变长128位的String 可选 通过后台通知商户结果 注意 1) 使用时不要包含中文 2) 必须是外网地址

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为134
应答返回码 resp_code 定长6位String 必须 134000–成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
手机号 user_mobile 定长11位String 必须 用户的手机号
后台应答地址 bg_ret_url 变长128位的String 可选 通过后台通知商户结果 注意 1) 使用时不要包含中文 2) 必须是外网地址

代码示例

java

 String valueObj = "{
      "version": "10",
      "cmd_id": "134",
      "mer_cust_id": "6666000000026086",
      "order_id": "10000000001",
      "order_date": "20200604",
      "user_cust_id": "6666000000026190",
      "user_mobile": "13614092840",
      "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 = "134";
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": "134",
        "resp_code": "134000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20200604",
        "order_id": "10000000001",
        .......
      }
成功响应:
200
   {
     "cmd_id": "134",
     "resp_code": "134099",
     "resp_desc": "系统异常",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20200604",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
134100 请求参数非法
134000 交易成功
134099 系统异常
134101 商户无此接口权限
134102 验证签名失败
134103 商户状态异常
134107 消息类型与签名内容不一致
134108 商户客户号与签名内容不一致
134109 版本号与签名内容不一致
134202 交易订单号重复
134011 用户不存在
134236 只支持个人用户修改
134104 用户状态异常

102 企业用户开户接口(页面版)

功能说明

用于在本平台系统下为企业用户开设专属虚拟账户,需页面form表单提交,在弹出我们的页面上上传附件。返回的参数列表中开发者至少要保存用户虚拟账户客户号user_cust_id和子账号acct_id,以便后续其他接口中会用到。

  • 注:若因材料问题导致审核不通过,则需用之前相同的企业开户申请号apply_id、操作类型operate_type改为修改、并重新更换订单号order_id后重新提交开户申请审核。

附件材料要求

五证:营业执照、组织机构代码、税务登记证、法人身份证(正反面)、对公银行账户信息;

三证:统一社会信用码、法人身份证(正反面)、对公银行账户信息;

  • 五证必须提供全,若三证合一,则只需要传三证合一的附件
  • 上传图片必须清晰,证件字体能清楚辨认,每张证件必须盖有注册企业的 有色公章 且证件均需在有效期内
  • “对公银行账户信息”提供印鉴卡、银行流水单号、银行开户许可证、银行开户回执单,4项中任一即可
  • “对公银行账户信息”中必须显示对应银行的支行信息,并附有银行公章
  • 上传资料内容与接口参数上的信息及要求一致

调用方式:页面浏览器

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为102
商户唯一标识号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一标识号
企业开户申请号 apply_id 变长18 位String 必须 由商户提供,申请企业开户的唯一标识
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
操作类型 operate_type 定长8位String 必须 00090000 新增 00090001 修改
企业证照类型 corp_license_type 定长8位String 必须 01030100.普通营业执照企业 01030101.三证合一企业
企业类型 corp_type 定长8位String 必须 01030000.普通企业
企业名称 corp_name 变长50位String 必须 企业的公司全称
营业执照注册号 business_code 变长30位的String 可选 企业的营业执照注册号,操作类型operate_type为普通营业执照企业时 必传
组织机构代码 institution_code 定长9位的String 可选 企业的组织机构代码证,操作类型operate_type为普通营业执照企业时 必传
税务登记证号 tax_code 变长30位的String 可选 企业的税务登记号,操作类型operate_type为普通营业执照企业时 必传
统一社会信用代码 social_credit_code 定长18位String 可选 企业的统一社会信用代码,操作类型operate_type为三证合一企业时 必传
证照起始日期 license_start_date 定长8 位String 必须 企业的营业证照起始日期,精确到年月日
证照结束日期 license_end_date 定长8 位String 必须 企业的营业证照结束日期,精确到年月日,支持“永久”
企业经营地址 corp_business_address 变长250位字符串 必须 企业的经营地址
企业注册地址 corp_reg_address 变长250位字符串 必须 企业的注册地址
企业固定电话 corp_fixed_telephone 变长15位字符串 必须 企业的固定电话
经营范围 business_scope 变长1000位字符串 必须 企业的经营范围
控股股东 (实际控制人) controlling_shareholder 变长3000位字符串 必须 数据格式:[{“custName”:”测试”,”certType”:”01020100”,”certId”:”371100198212191101”,”shareholderAddr”:”上海市”,”ratio”:”50”}]
法人姓名 legal_name 变长20位String 必须 企业的法人姓名
法人证件类型 legal_cert_type 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
法人证件号码 legal_cert_id 变长20位String 必须 法人的证件号码,与证件类型对应
法人证件起始日期 legal_cert_start_date 定长8 位String 必须 法人的证件起始日期,精确到年月日
法人证件起始日期 legal_cert_end_date 定长8 位String 必须 法人的证件结束日期,精确到年月日,支持“永久”
法人手机号码 legal_mobile 定长11位String 必须 法人的手机号码
企业联系人姓名 contact_name 变长50位String 必须 企业联系人的姓名
联系人手机号 contact_mobile 定长11为String 必须 联系人的手机号码
联系人邮箱 contact_email 变长40位的String 必须 联系人的邮箱地址
开户银行账户名 bank_acct_name 变长40位的String 必须 企业开户银行账户名,需与企业名称保持一致
开户银行 bank_id 定长8位的String 必须 具体见附件:开户银行代号
开户银行账号 bank_acct_no 变长32位的String 必须 企业开户银行账号
开户银行支行名称 bank_branch 变长100位String 必须 企业开户银行的支行名称
开户银行省份 bank_prov 定长4位String 必须 银行卡开户省份
开户银行地区 bank_area 定长4位String 必须 银行卡开户地区
行业 industry 定长2位String 必须 企业行业类别,具体见下方:行业列表
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  
法人国籍 nationality 变长128位的String 必须 例如:中华人民共和国

控股股东(controlling_shareholder)

参数中文名称 参数名称 数据格式 是否必须 说明
姓名 custName 变长20位String 必须  
证件类型 certType 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
证件号码 certId 变长20位String 必须 股东的证件号码,与证件类型对应
股东地址 shareholderAddr 变长250位String 必须 股东的地址
股份占比 ratio 变长4位String 必须 股份占比

行业类表(industry)

行业名称 编号   行业名称 编号   行业名称 编号
酒店、餐饮类 01   信息传输、计算机服务业和软件业类 10   水利环境和公共设施管理类 19
旅游类 02   预售卡及虚拟物品销售类 11   政府类 20
艺术品交易/收藏类 03   租赁和商务服务业类 12   卫生、社会保障和社会福利类 21
娱乐类 04   慈善、基金会等非盈利组织 13   教育业 22
建筑业/房地产类 05   金融理财类 14   采矿业类 23
拍卖和典当类 06   外贸类 15   制造业类 24
废品收购类 07   货币服务 16   科学研究、技术服务和地质勘查业 25
居民服务、快递和其他服务类 08   林、渔、农、牧业类 17   其他 26
批发和零售类 09   交通运输,仓储类 18      

同步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为102
应答返回码 resp_code 定长6位String 必须 102000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
企业开户申请号 apply_id 变长20 的String 必须 由商户提供,申请企业开户的唯一标识
企业用户客户号 user_cust_id 定长16位String 可选  
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
商户唯一标识号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一标识号
企业名称 corp_name 变长50位String 必须 企业的公司全称
子账户号 acct_id 变长9位String 可选 基本户-支付账户
取现绑定银行卡ID cash_bind_card_id 变长20位的String 可选 取现接口需要用到此ID
审核状态 audit_status 定长2位String 可选 同步(resp_code=102000时返回 04:待审核,否则不返回)
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为102
应答返回码 resp_code 定长6位String 必须 102000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
企业开户申请号 apply_id 变长20 的String 必须 由商户提供,申请企业开户的唯一标识
企业用户客户号 user_cust_id 定长16位String 可选  
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
商户唯一标识号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一标识号
企业名称 corp_name 变长50位String 必须 企业的公司全称
子账户号 acct_id 变长9位String 可选 基本户-支付账户
取现绑定银行卡ID cash_bind_card_id 变长20位的String 可选 取现接口需要用到此ID
审核状态 audit_status 定长2位String 可选 异步(resp_code=102000时返回,审核通过audit_status=00, 审核拒绝audit_status=02, 待修改audit_status=01)
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

代码示例

java

 String valueObj = "{
      "version": "10",
      "cmd_id": "102",
      "mer_cust_id": "6666000000026086",
      "apply_id": "2000001hh43",
      "order_id": "2017569800043",
      "order_date": "20170228",
      "operate_type": "00090000",
      "corp_license_type": "01030100",
      "corp_type": "01030001",
      "corp_name": "全球黑科",
      "business_code": "a1225431204",
      "institution_code": "088100129",
      "tax_code": "a199945675",
      "social_credit_code": "",
      "license_start_date": "20160830",
      "license_end_date": "20190830",
      "corp_business_address": "上海市",
      "corp_reg_address": "上海杨北路",
      "corp_fixed_telephone": "021-12345678900",
      "business_scope": "上海市浦张杨",
      "controlling_shareholder": "[{\"name\":\"20条\",\"certType\":\"01020100\",\"certId\":\"370101197209143545\"}]",
      "legal_name": "球",
      "legal_cert_type": "01020100",
      "legal_cert_id": "140203195101011256",
      "legal_cert_start_date": "20150809",
      "legal_cert_end_date": "20190809",
      "legal_mobile": "15911115334",
      "contact_name": "科技球",
      "contact_mobile": "15911552132",
      "contact_email": "1234901234567890_.jo@qq.ne",
      "bank_acct_name": "全球黑科",
      "bank_id": "01030000",
      "bank_acct_no": "622253011203",
      "bank_branch": "支付",
      "bank_prov": "0031",
      "bank_area": "3100",
      "industry": "01",
      "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
      "ret_url": "",
      "mer_priv": "test_priv",
      "extension": "test"
      }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "102";
String merCustId = "6666000000026086";
String version = "10";
response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
out.println(" <BODY style=\"display: none\">");
out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
out.println("</from>");
out.println("<script>window.document.submitForm.submit();</script>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
成功响应:
200
      {
        "cmd_id": "102",
        "resp_code": "102000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "102",
     "resp_code": "102304",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
102000 交易成功
102098 系统超时
102099 系统异常
102100 请求参数非法
102101 商户无此接口权限
102102 验证签名失败
102103 商户状态异常
102107 消息类型与签名内容不一致
102108 商户客户号与签名内容不一致
102109 版本号与签名内容不一致
102110 商户号不存在
102201 页面数据被篡改
102202 交易订单号重复
102300 该企业证照类型与证照号不匹配
102301 该企业已开户
102302 未查询到原开户申请号
102303 该企业已申请开户
102304 该企业开户申请(已经通过/正在审核中/已被拒绝不能修改)
102305 省份地区信息非法
102306 企业名称与开户银行账户名不相同
102307 营业执照注册号已被使用
102308 统一社会信用代码已被使用
102309 该企业已有正在处理的开户申请或已开户成功
102310 行业非法
102311 上传失败,文件大小超过5M
102312 上传失败,不支持该文件格式
102313 上传失败,文件数量超过限制
102314 文件上传失败,请稍后重试
102315 操作超时,请重试
102316 文件信息不匹配
102317 开户申请提交失败,数据异常
102319 文件数据异常

125 企业开户申请接口(后台版)

功能说明

用于在本平台系统下为企业用户开设专属虚拟账户,纯后台API接口,无页面。返回的参数列表中开发者至少要保存用户虚拟账户客户号user_cust_id和子账号acct_id,以便后续其他接口中会用到。

  • 准备工作:企业开户调该接口前先调用 商户文件上传接口 上传图片资料,资料要求如下:

    五证:营业执照、组织机构代码、税务登记证、法人身份证(正反面)、对公银行账户信息;

    三证:统一社会信用码、法人身份证(正反面)、对公银行账户信息;

    1、五证必须提供全,若三证合一,则只需要传三证合一的附件

    2、上传图片必须清晰,证件字体能清楚辨认,每张证件必须盖有注册企业的 有色公章 且证件均需在有效期内

    3、“对公银行账户信息”提供印鉴卡、银行流水单号、银行开户许可证、银行开户回执单,4项中任一即可

    4、“对公银行账户信息”中必须显示对应银行的支行信息,并附有银行公章

    5、上传资料内容与接口参数上的信息及要求一致

  • 注:若因材料问题导致审核不通过,则需用之前相同的企业开户申请号apply_id、操作类型operate_type改为修改、并重新更换订单号order_id后重新提交开户申请审核。

调用方式:系统调用

接口方式:同步

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为125
商户唯一标识号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一标识号
企业开户申请号 apply_id 变长20 的String 必须 由商户提供,申请企业开户的唯一标识
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
操作类型 operate_type 定长8位String 必须 00090000 新增 00090001 修改
企业证照类型 corp_license_type 定长8位String 必须 01030100.普通营业执照企业 01030101.三证合一企业
企业类型 corp_type 定长8位String 必须 01030000.普通企业
企业名称 corp_name 变长50位String 必须 企业的公司全称
营业执照注册号 business_code 变长30位的String 可选 企业的营业执照注册号,操作类型operate_type为普通营业执照企业时 必传
组织机构代码 institution_code 定长9位的String 可选 企业的组织机构代码证,操作类型operate_type为普通营业执照企业时 必传
税务登记证号 tax_code 变长30位的String 可选 企业的税务登记号,操作类型operate_type为普通营业执照企业时 必传
统一社会信用代码 social_credit_code 定长18位String 可选 企业的统一社会信用代码,操作类型operate_type为三证合一企业时 必传
证照起始日期 license_start_date 定长8 位String 必须 企业的营业证照起始日期,精确到年月日
证照结束日期 license_end_date 定长8 位String 必须 企业的营业证照结束日期,精确到年月日,支持“永久”
企业经营地址 corp_business_address 变长250位字符串 必须 企业的经营地址
企业注册地址 corp_reg_address 变长250位字符串 必须 企业的注册地址
企业固定电话 corp_fixed_telephone 变长15位字符串 必须 企业的固定电话
经营范围 business_scope 变长1000位字符串 必须 企业的经营范围
控股股东 (实际控制人) controlling_shareholder 变长3000位字符串 必须 数据格式:[{“custName”:”测试”,”certType”:”01020100”,”certId”:”371100198212191101”,”shareholderAddr”:”上海市”,”ratio”:”50”}]
法人姓名 legal_name 变长20位String 必须 企业的法人姓名
法人证件类型 legal_cert_type 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
法人证件号码 legal_cert_id 变长20位String 必须 法人的证件号码,与证件类型对应
法人证件起始日期 legal_cert_start_date 定长8 位String 必须 法人的证件起始日期,精确到年月日
法人证件起始日期 legal_cert_end_date 定长8 位String 必须 法人的证件结束日期,精确到年月日,支持“永久”
法人手机号码 legal_mobile 定长11位String 必须 法人的手机号码
企业联系人姓名 contact_name 变长50位String 必须 企业联系人的姓名
联系人手机号 contact_mobile 定长11为String 必须 联系人的手机号码
联系人邮箱 contact_email 变长40位的String 必须 联系人的邮箱地址
开户银行账户名 bank_acct_name 变长50位的String 必须 企业开户银行账户名,需与企业名称保持一致
开户银行 bank_id 定长8位的String 必须 具体见附件:开户银行代号
开户银行账号 bank_acct_no 变长32位的String 必须 企业开户银行账号
开户银行支行名称 bank_branch 变长100位String 必须 企业开户银行的支行名称
开户银行省份 bank_prov 定长4位String 必须 银行卡开户省份
开户银行地区 bank_area 定长4位String 必须 银行卡开户地区
附件编号列表 attach_nos 变长210位的String 必须 商户文件上传接口(122)的附件编号列表,多个附件编号之间用逗号隔开,如:abc123或者abc123,abc1234,需要的文件类型(法定代表人证件(正反面),开户银行许可证,统一社会信用代码,其他)
行业 industry 定长2位String 必须 企业行业类别,具体见下方:行业列表
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  
法人国籍 nationality 变长128位的String 必须 例如:中华人民共和国

控股股东(controlling_shareholder)

参数中文名称 参数名称 数据格式 是否必须 说明
姓名 custName 变长20位String 必须  
证件类型 certType 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
证件号码 certId 变长20位String 必须 股东的证件号码,与证件类型对应
股东地址 shareholderAddr 变长250位String 必须 股东地址
股份占比 ratio 变长4位String 必须 股份占比

行业类表(industry)

行业名称 编号   行业名称 编号   行业名称 编号
酒店、餐饮类 01   信息传输、计算机服务业和软件业类 10   水利环境和公共设施管理类 19
旅游类 02   预售卡及虚拟物品销售类 11   政府类 20
艺术品交易/收藏类 03   租赁和商务服务业类 12   卫生、社会保障和社会福利类 21
娱乐类 04   慈善、基金会等非盈利组织 13   教育业 22
建筑业/房地产类 05   金融理财类 14   采矿业类 23
拍卖和典当类 06   外贸类 15   制造业类 24
废品收购类 07   货币服务 16   科学研究、技术服务和地质勘查业 25
居民服务、快递和其他服务类 08   林、渔、农、牧业类 17   其他 26
批发和零售类 09   交通运输,仓储类 18      

同步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为125
应答返回码 resp_code 定长6位String 必须 125000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
企业开户申请号 apply_id 变长20 的String 必须 由商户提供,申请企业开户的唯一标识
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
企业用户客户号 user_cust_id 定长16位String 可选  
商户唯一标识号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一标识号
企业名称 corp_name 变长50位String 必须 企业的公司全称
子账户号 acct_id 变长9位String 可选 基本户-支付账户
取现绑定银行卡ID cash_bind_card_id 变长20位的String 可选 取现接口需要用到此ID
审核状态 audit_status 定长2位String 可选 同步(resp_code=125000时返回 04:待审核,否则不返回);
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
返参扩展域 extension 变长512位的String 可选  

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为125
应答返回码 resp_code 定长6位String 必须 125000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
企业开户申请号 apply_id 变长20 的String 必须 由商户提供,申请企业开户的唯一标识
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
企业用户客户号 user_cust_id 定长16位String 可选  
商户唯一标识号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一标识号
企业名称 corp_name 变长50位String 必须 企业的公司全称
子账户号 acct_id 变长9位String 可选 基本户-支付账户
取现绑定银行卡ID cash_bind_card_id 变长20位的String 可选 取现接口需要用到此ID
审核状态 audit_status 定长2位String 可选 异步(resp_code=125000,审核通过audit_status=00, 审核拒绝audit_status=02, 待修改audit_status=01)
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
返参扩展域 extension 变长512位的String 可选  

代码示例

java

 String valueObj = "{
     "version": "10",
     "cmd_id": "125",
     "mer_cust_id": "6666000000026086",
     "apply_id": "2000001hh45",
     "order_id": "2017569800045",
     "order_date": "20170228",
     "operate_type": "00090000",
     "corp_license_type": "01030100",
     "corp_type": "01030001",
     "corp_name": "全球黑科",
     "business_code": "a1225431204",
     "institution_code": "088100129",
     "tax_code": "a199945675",
     "social_credit_code": "",
     "license_start_date": "20160830",
     "license_end_date": "20190830",
     "corp_business_address": "上海市",
     "corp_reg_address": "上海杨北路",
     "corp_fixed_telephone": "021-12345678900",
     "business_scope": "上海市浦张杨",
     "controlling_shareholder": "[{\"name\":\"20条\",\"certType\":\"01020100\",\"certId\":\"370101197209143545\"}]",
     "legal_name": "球",
     "legal_cert_type": "01020100",
     "legal_cert_id": "140203195101011256",
     "legal_cert_start_date": "20150809",
     "legal_cert_end_date": "20190809",
     "legal_mobile": "15911115334",
     "contact_name": "科技球",
     "contact_mobile": "15911552132",
     "contact_email": "1234901234567890_.jo@qq.ne",
     "bank_acct_name": "全球黑科",
     "bank_id": "01030000",
     "bank_acct_no": "622253011203",
     "bank_branch": "支付",
     "bank_prov": "0031",
     "bank_area": "3100",
     "industry": "01",
     "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
     "attach_nos": "test01,test02",
     "mer_priv": "test_priv",
     "extension": "test"
     }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "125";
String merCustId = "6666000000026086";
String version = "10";
response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
out.println(" <BODY style=\"display: none\">");
out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
out.println("</from>");
out.println("<script>window.document.submitForm.submit();</script>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();

返回码

返回码 返回描述
125000 交易成功
125098 系统超时
125099 系统异常
125100 请求参数非法
125101 商户无此接口权限
125102 验证签名失败
125103 商户状态异常
125107 消息类型与签名内容不一致
125108 商户客户号与签名内容不一致
125109 版本号与签名内容不一致
125110 商户号不存在
125201 页面数据被篡改
125202 交易订单号重复
125300 该企业证照类型与证照号不匹配
125301 该企业已开户
125302 未查询到原开户申请号
125303 该企业已申请开户
125304 该企业开户申请(已经通过/正在审核中/已被拒绝不能修改)
125305 省份地区信息非法
125306 企业名称与开户银行账户名不相同
125307 营业执照注册号已被使用
125308 统一社会信用代码已被使用
125309 该企业已有正在处理的开户申请或已开户成功
125310 行业非法
125311 上传失败,文件大小超过5M
125312 上传失败,不支持该文件格式
125313 上传失败,文件数量超过限制
125314 文件上传失败,请稍后重试
125315 操作超时,请重试
125316 文件信息不匹配
125317 开户申请提交失败,数据异常
125319 文件数据异常
125321 文件已被使用

120 代理商商户开户接口

功能说明

用于代理商在本平台系统下为旗下商户开户

  • 准备工作:商户开户前先调用 商户文件上传接口 上传图片资料,资料要求如下:

    五证:营业执照、组织机构代码、税务登记证、法人身份证(正反面)、对公银行账户信息;

    三证:统一社会信用码、法人身份证(正反面)、对公银行账户信息;

    1、五证必须提供全,若三证合一,则只需要传三证合一的附件

    2、上传图片必须清晰,证件字体能清楚辨认,每张证件必须盖有注册企业的 有色公章 且证件均需在有效期内

    3、“对公银行账户信息”提供印鉴卡、银行流水单号、银行开户许可证、银行开户回执单,4项中任一即可

    4、“对公银行账户信息”中必须显示对应银行的支行信息,并附有银行公章

    5、上传资料内容与接口参数上的信息及要求一致

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为120
商户客户号 mer_cust_id 定长16位String 必须 传代理商ID
商户全称 mer_name 变长50位String 必须 商户全称(同银行账户名称)
商户简称 mer_short_name 变长25位String 必须  
商户英文名 mer_en_name 变长25位String 必须 简称的首字母拼音缩写
注册资本(元) reg_fund 变长14位String 必须  
实缴资本(元) paid_in_fund 变长14位String 必须  
网站地址 mer_website 变长200位String 必须  
ICP备案号 per_icp_code 变长50位String 必须  
成立时间 est_date 定长8位String 必须  
商户所在省份 mer_prov 定长4位String 必须  
商户所在地区 mer_area 定长4位String 必须  
商户经营地址 mer_addr 变长256位String 必须  
商户注册地址 mer_reg_addr 变长256位String 必须  
证照类型 license_type 定长8位String 必须 “普通企业”,” 01030100 ” “三证合一”,” 01030101 “
营业执照注册号 business_code 变长30位String 可选 商户的营业执照注册号 (证照类型为:普通企业 必填)
组织机构代码 institution_code 变长9位String 可选 商户的组织机构代码证 (证照类型为:普通企业 必填)
税务登记号 tax_code 变长30位String 可选 商户的税务登记号 (证照类型为:普通企业必填)
统一社会信用代码 social_credit_code 变长30位String 可选 商户的统一社会信用代码 (证照类型为:三证合一 必填)
证照有效起始日期 license_start_date 定长8位String 必须 精确到年月日,如19701212
证照有效结束日期 license_end_date 定长8位String 必须 精确到年月日,如19701212,支持“永久”
经营范围 business_scope 变长1000位String 必须 商户的经营范围
股东 stockholders 变长3000位String 必须 数据格式:[{“custName”:”测试”,”certType”:”01020100”,”certId”:”371100198212191101”,”shareholderAddr”:”上海市”,”ratio”:”50”}]
法人姓名 legal_name 变长50位String 必须  
法人证件类型 legal_cert_type 定长8位String 必须 01020100:身份证(默认) 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
法人证件号 legal_cert_id 变长30位String 必须 法人的证件号码,与证件类型对应
法人证件起始日期 legal_id_start_date 变长8位String 必须 精确到年月日,如19701212
法人证件结束日期 legal_id_end_date 变长8位String 必须 精确到年月日,如19701212,支持“永久”
法人手机号 legal_mobile 变长11位String 必须 法人的手机号码
联系人姓名 contact_name 变长50位String 必须 联系人的姓名
联系人手机号 contact_mobile 变长11位String 必须  
联系人邮箱 contact_email 变长50位String 必须  
开户银行 bank_id 变长8位String 必须 具体见附件:开户银行代号
开户银行账号 bank_acct_no 变长32位String 必须 商户开户银行账号
开户银行支行名称 bank_branch 变长80位String 可选 商户开户银行的支行名称
开户银行省份 bank_prov 定长4位String 必须 银行卡开户省份
开户银行地区 bank_area 定长4位String 必须 银行卡开户地区
附件编号列表 attach_nos 变长260位String 可选 商户文件上传接口(122)的附件编号列表,多个附件编号之间用逗号隔开,如:abc123或者abc123,abc1234
结算卡标志 card_type 定长1位String 可选 结算卡对公对私标志 1:对公 2:对私
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 企账通代理商必填,如:{“eacloud”:”proxy”}
行业 mer_industry 定长2位String 必须 行业类别,具体见下方:行业类表
固定电话 corp_phone 变长15位的String 必须  
法人国籍 nationality 变长128位的String 必须 例如:中华人民共和国

控股股东(controlling_shareholder)

参数中文名称 参数名称 数据格式 是否必须 说明
姓名 custName 变长20位String 必须  
证件类型 certType 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
证件号码 certId 变长20位String 必须 股东的证件号码,与证件类型对应
股东地址 shareholderAddr 变长250位String 必须 股东地址
股份占比 ratio 变长4位String 必须 股份占比

行业类表(mer_industry)

行业名称 编号   行业名称 编号   行业名称 编号
酒店、餐饮类 01   信息传输、计算机服务业和软件业类 10   水利环境和公共设施管理类 19
旅游类 02   预售卡及虚拟物品销售类 11   政府类 20
艺术品交易/收藏类 03   租赁和商务服务业类 12   卫生、社会保障和社会福利类 21
娱乐类 04   慈善、基金会等非盈利组织 13   教育业 22
建筑业/房地产类 05   金融理财类 14   采矿业类 23
拍卖和典当类 06   外贸类 15   制造业类 24
废品收购类 07   货币服务 16   科学研究、技术服务和地质勘查业 25
居民服务、快递和其他服务类 08   林、渔、农、牧业类 17   其他 26
批发和零售类 09   交通运输,仓储类 18      

同步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为120
应答返回码 resp_code 定长6位String 必须 120000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 可选 返回码的对应中文描述
代理商ID agent_id 变长16 的String 必须 由商户提供,代理商唯一标识
审核状态 audit_status 定长2位String 可选 00:待审核 (resp_code=120000时返回,否则不返回)
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
返参扩展域 extension 变长512位的String 可选  

异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为120
应答返回码 resp_code 定长6位String 必须 120000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 可选 返回码的对应中文描述
商户客户号 mer_cust_id 变长16 的String 必须 商户唯一标识
审核状态 audit_status 定长2位String 必须 审核拒绝时resp_code=120003,audit_status=02 ,审核通过时resp_code=120000,audit_status=01
审核描述 audit_desc 变长500位String 可选  
商户名称 mer_name 变长50位String 可选  
基本账户号 acct_id 变长9位String 可选  
结算卡绑卡ID bind_card_id 变长20位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
返参扩展域 extension 变长512位的String 可选  

代码示例

java

package com.huifu.zeusClient.webapp.controller.zeus;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huifu.saturn.cfca.CFCASignature;
import com.huifu.saturn.cfca.SignResult;
import com.huifu.saturn.cfca.VerifyResult;

import jodd.http.HttpRequest;
import jodd.http.HttpResponse;

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang.StringUtils;

import java.io.File;
import java.net.URLEncoder;
import java.nio.charset.Charset;

/**
 * Function : 代理商开户测试
 * Date : 2018年9月26日 下午4:45:53
 */
public class CreateMerUserMain {
    // 地址可以询问对方运营
    public static String TEST_FILE_URL = "http://localhost:8087/service-provider/fileMerchantRequest";
    public static String TEST_URL = "http://localhost:8087/service-provider/merchantRequest";
    // 加签用pfx文件
    public static String PFX_FILE_NAME = "888888-NEW.pfx";
    // 加签用密码
    public static String PFX_FILE_PWD = "123456";
    //商户号
    public static String MER_CUST_ID = "6666000000026086";
    //文件可以询问对方运营
    public static String CER_NAME = "CFCA_ACS_TEST_OCA31.cer";
    public static String VERSION = "10";
    public static String CHARSET = "UTF-8";

    public static void main(String[] args) {
        String attachNos = "c1454422338,c1454422339";
                //上传附件
                uploadFile(attachNos);
        //代理商开户---同类型附件最多只能有一个
                createAgentUser(attachNos);
    }

         /**
    * 商户附件上传
    *
    * @param attachNos
    */
   public static void uploadFile(String attachNos) {
       if (StringUtils.isNotBlank(attachNos)) {
           String[] attachNoList = attachNos.split(",");
           for (String attachNo : attachNoList) {
               //循环上传附件
               uploadFileMain(attachNo);
               try {
                   //测试环境,休眠一会再上传;正式环境不需要
                   Thread.sleep(2000);
               } catch (InterruptedException e) {
                   e.printStackTrace();
               }
           }
       }
   }

   public static void uploadFileMain(String attachNo) {
       String valueObj = "{\"version\":\"10\",\"cmd_id\":\"122\",\"mer_cust_id\":\"" + MER_CUST_ID + "\",\"attach_no\":\"" + attachNo + "\",\"trans_type\":\"01\",\"attach_type\":\"05\",\"extension\":\"1\"}";
       // 进行base64转换
       String base64RequestParams = Base64.encodeBase64String(valueObj.getBytes(Charset.forName("utf-8")));
       // 加签
       SignResult signResult = CFCASignature.signature("F:/app/" + PFX_FILE_NAME, PFX_FILE_PWD, base64RequestParams,
               "utf-8");
       if (!"000".equals(signResult.getCode())) {
           System.out.println("加签错误");
           return;
       }
       String checkValue = signResult.getSign();
       String cmdId = "122";

       //如果文件名称中有中文,请先使用URLEncoder.encode(filename, "UTF-8")对文件名编码
       File newFile = new File("C:\\Users\\hao.sun\\Desktop\\0.png");

       HttpRequest httpRequest = HttpRequest.post(TEST_FILE_URL).charset(CHARSET);
       HttpResponse httpResponse = httpRequest.contentType("multipart/form-data").form(
               "cmd_id", cmdId,
               "version", VERSION,
               "mer_cust_id", MER_CUST_ID,
               "check_value", checkValue,
               "attach_file", newFile).send();
       String body = httpResponse.bodyText();
       // 响应解密 验签失败
       JSONObject jsonObject = JSON.parseObject(body);
       String sign = jsonObject.getString("check_value");
       VerifyResult verifyResult = CFCASignature.verifyMerSign("100001", sign, CHARSET,
               "F:/app/" + CER_NAME);
       if (!"000".equals(verifyResult.getCode())) {
           System.out.println("验签失败");
           return;
       }
       String content = new String(verifyResult.getContent(), Charset.forName(CHARSET));
       String decrptyContent = new String(Base64.decodeBase64(content), Charset.forName(CHARSET));
       System.out.println(decrptyContent);
   }

    /**
     * 代理商开户申请
     *
     * @param attachNos
     */
    public static void createAgentUser(String attachNos) {
        String socialCreditCode = "344452111561313162";
        String valueObj = "{\"version\":\"10\",\"cmd_id\":\"120\",\"mer_cust_id\":\"6666000000026086\",\"mer_name\":\"代理商商户测试\",\"mer_short_name\":\"商户简称\",\"mer_en_name\":\"我爱你中国\",\"reg_fund\":\"10000000000000\",\"paid_in_fund\":\"90000000000000\",\"mer_website\":\"www.baidu.com\",\"per_icp_code\":\"dhfdshfhsdfsd\",\"est_date\":\"20160512\",\"mer_prov\":\"0011\",\"mer_area\":\"1100\",\"mer_addr\":\"无法adfdf\",\"mer_reg_addr\":\"普通商户注册地\",\"license_type\":\"01030101\",\"business_code\":\"\",\"institution_code\":\"\",\"tax_code\":\"\",\"social_credit_code\":\""+socialCreditCode+"\",\"license_start_date\":\"20120612\",\"license_end_date\":\"20190612\",\"business_scope\":\"fdksfhsdkfggfg\",\"stockholders\":\"fdksfhsdkfggfg\",\"legal_name\":\"张大庄\",\"legal_cert_type\":\"01020100\",\"legal_cert_id\":\"020103197101062287\",\"legal_id_start_date\":\"20111220\",\"legal_id_end_date\":\"21111220\",\"legal_mobile\":\"15811111111\",\"contact_name\":\"测试sh\",\"contact_mobile\":\"15911111111\",\"contact_email\":\"15911111111@163.com\",\"bank_acct_no\":\"6217001257387383\",\"bank_branch\":\"gfdgfdg\",\"bank_prov\":\"0012\",\"bank_area\":\"1200\",\"addr_fileid\":\"\",\"gate_fileid\":\"\",\"manage_fileid\":\"\",\"social_credit_code_fileid\":\"\",\"business_license_fileid\":\"\",\"org_code_fileid\":\"\",\"tax_reg_fileid\":\"\",\"other_data_fileid\":\"\",\"legal_license_fileid1\":\"\",\"legal_license_fileid2\":\"\",\"bank_acct_open_lice_fileid\":\"\",\"elec_protocol_fileid\":\"\",\"bg_ret_url\":\"http://192.168.0.74:8001/npayCallBack/asyncHandle.json\",\"mer_priv\":\"\",\"extension\":\"\",\"attach_nos\":\""+attachNos+"\"}";
        // 进行base64转换
        String base64RequestParams = Base64.encodeBase64String(valueObj.getBytes(Charset.forName("utf-8")));
        // 加签
        SignResult signResult = CFCASignature.signature("F:/app/" + PFX_FILE_NAME, PFX_FILE_PWD, base64RequestParams, "utf-8");
        if (!"000".equals(signResult.getCode())) {
            System.out.println("加签错误");
            return;
        }

        String checkValue = signResult.getSign();
        String cmdId = "120";
        String contentType = "application/x-www-form-urlencoded";
        String postStr = "cmd_id=" + cmdId + "&version=" + VERSION + "&mer_cust_id=" + MER_CUST_ID + "&check_value=" + checkValue;

        HttpRequest httpRequest = HttpRequest.post(TEST_URL).charset(CHARSET);
        HttpResponse httpResponse = httpRequest.contentType(contentType).body(postStr).send();
        String body = httpResponse.bodyText();
        // 响应解密 验签失败
        JSONObject jsonObject = JSON.parseObject(body);
        String sign = jsonObject.getString("check_value");
        VerifyResult verifyResult = CFCASignature.verifyMerSign("100001", sign, CHARSET,
                "F:/app/" + CER_NAME);
        if (!"000".equals(verifyResult.getCode())) {
            System.out.println("验签失败");
            return;
        }
        String content = new String(verifyResult.getContent(), Charset.forName(CHARSET));
        String decrptyContent = new String(Base64.decodeBase64(content), Charset.forName(CHARSET));
        System.out.println(decrptyContent);
    }
}

返回码

代理商商户开户(cmd_id=120)  
120000 交易成功
120003 交易失败;开户审核拒绝
120098 系统超时
120099 系统异常
120100 请求参数非法
120101 商户无此接口权限
120102 验证签名失败
120103 商户状态异常
120107 消息类型与签名内容不一致
120108 商户客户号与签名内容不一致
120109 版本号与签名内容不一致
120110 商户号不存在
120300 该企业证照类型与证照号不匹配
120303 银行卡号与银行不匹配
120304 银行卡类型错误
120305 省份地区信息非法
120319 文件数据异常
120321 代理商配置信息不存在(或”文件已被使用”)
120322 商户开户请求异常(或”文件不存在”)
120323 商户名称与开户银行账户名不一致(或”同类型文件有多个”)
120324 更新附件状态异常(或”验卡失败”)
120325 该商户名称已使用
120326 该商户名称简称已使用
120327 该商户邮箱已被使用
120328 营业执照注册号已被使用(或”统一社会信用代码已被使用”)
120329 联系人手机号不正确
120330 联系人邮箱不正确
120331 法人证件号不正确
120332 法人手机号不正确
120333 开户银行帐号不正确(或”证照图片异常,请先上传证照再处理”)
120334 保存请求数据失败
120335 联系人手机号邮箱不允许都为空
120336 调用账管家”商户与分销商关系新增”接口失败
120337 商户信息不存在
120338 开户审核拒绝
120339 开户银行ID不存在
120340 银行卡号不正确(或”请联系管理员,配置SFTP服务!”)
120341 新增开发者用户商户关系失败
120348 绑定对私卡银行卡卡号不能为空!

124 个体工商户开户接口

功能说明

用于在本平台系统下为个体工商户开设专属账户。返回的参数列表中开发者至少要保存用户虚拟账户客户号user_cust_id和子账号acct_id,以便后续其他接口中会用到。

  • 准备工作:个体工商户开户调该接口前先调用 商户文件上传接口 上传图片资料,资料要求如下:

    1、五证必须提供全,若三证合一,则只需要传三证合一的附件

    2、上传图片必须清晰,证件字体能清楚辨认,每张证件必须盖有注册企业的 有色公章 且证件均需在有效期内

    3、“对公账户信息”提供印鉴卡、银行流水单号、银行开户许可证、银行开户回执单,4项中任一即可

    4、“对公账户信息”中必须显示对应银行的支行信息,并附有银行公章

    5、上传资料内容与接口参数上的信息及要求一致

  • 注:若个体工商户无公章,可上传 经营者有色指印+签名 的复印件。

调用方式:系统调用

接口方式:同步

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为124
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
操作类型 operate_type 定长8位String 必须 00090000 新增 00090001 修改
个体工商户开户申请号 apply_id 变长20位String 必须 个体工商户开户申请号
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
个体户名称 user_name 变长50位String 必须 个体户名称
营业执照注册号 business_code 变长30位的String 必须 个体工商户的营业执照注册号
证照起始日期 license_start_date 定长8 位String 必须 个体工商户的营业证照起始日期,精确到年月日
证照结束日期 license_end_date 定长8 位String 必须 个体工商户的营业证照结束日期,精确到年月日,支持“永久”
个体工商户经营地址 solo_business_address 变长250位字符串 必须 个体工商户的经营地址
个体工商户注册地址 solo_reg_address 变长250位字符串 必须 个体工商户的注册地址
个体工商户固定电话 solo_fixed_telephone 变长15位字符串 必须 个体工商户的固定电话
经营范围 business_scope 变长1000位字符串 必须 个体工商户的经营范围
经营者姓名 legal_name 变长20位String 必须 个体工商户的法人姓名
经营者证件类型 legal_cert_type 定长8位String 必须 01020100:身份证 01020101:护照 01020102:军官证 01020103士兵证 01020104:回乡证 01020105警官证 01020106:台胞证 01020107:其他
经营者证件号码 legal_cert_id 变长20位String 必须 经营者的证件号码,与证件类型对应
经营者证件起始日期 legal_cert_start_date 定长8 位String 必须 经营者的证件起始日期,精确到年月日
经营者证件到期日期 legal_cert_end_date 定长8 位String 必须 经营者的证件结束日期,精确到年月日,支持“永久”
经营者手机号码 legal_mobile 定长11位String 必须 法人的手机号码
个体工商户联系人姓名 contact_name 变长50位String 必须 个体工商户联系人的姓名
联系人手机号 contact_mobile 定长11位String 必须 联系人的手机号码
联系人邮箱 contact_email 变长40位的String 必须 联系人的邮箱地址
职业 occupation 定长2位的String 必须 见下面个人职业分类附表
住址 address 变长256位的String 必须 填写经营者的住址
附件编号列表 attach_nos 变长210位String 必须 商户文件上传接口(122)的附件编号列表,多个附件编号之间用逗号隔开,如:abc123或者abc123,abc1234,需要的文件类型(营业执照,法人身份证照片正反面,结算卡正反面)—附件最多十个
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
行业 industry 定长2位String 必须 行业类别,具体见下方:行业类表
经营者国籍 nationality 变长128位的String 必须 例如:中华人民共和国

行业类表(industry)

行业名称 编号   行业名称 编号   行业名称 编号
酒店、餐饮类 01   信息传输、计算机服务业和软件业类 10   水利环境和公共设施管理类 19
旅游类 02   预售卡及虚拟物品销售类 11   政府类 20
艺术品交易/收藏类 03   租赁和商务服务业类 12   卫生、社会保障和社会福利类 21
娱乐类 04   慈善、基金会等非盈利组织 13   教育业 22
建筑业/房地产类 05   金融理财类 14   采矿业类 23
拍卖和典当类 06   外贸类 15   制造业类 24
废品收购类 07   货币服务 16   科学研究、技术服务和地质勘查业 25
居民服务、快递和其他服务类 08   林、渔、农、牧业类 17   其他 26
批发和零售类 09   交通运输,仓储类 18      

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为124
应答返回码 resp_code 定长6位String 必须 124000–调用成功,其他见附件四:返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述,中文为UTF-8字符集URLEncode编码后的字符串,商户应解码获取原文
个体工商户开户申请号 apply_id 变长20 的String 必须 由商户提供,申请个体工商户开户的唯一标识
个体工商户用户客户号 user_cust_id 定长16位String 可选  
订单号 order_id 定长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8 位String 必须 格式为YYYYMMDD,例如:20160307
商户唯一标识号 mer_cust_id 变长16位的String 必须 由汇付生成,商户的唯一标识号
经营者姓名 legal_name 变长20位String 必须 个体工商户的法人姓名
子账户号 acct_id 变长9位String 可选 基本户-支付账户
审核状态 audit_status 定长2位String 必须 00:通过 01:待修改 02:拒绝 04:待审核
审核描述 audit_desc 变长500位String 可选  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选  

代码示例

java

String valueObj = "{
      "version":"10",
         "cmd_id":"124",
         "mer_cust_id":"6666000000026086",
         "operate_type":"00090000",
         "apply_id":"138",
         "order_id":"139",
         "order_date":"20181107",
         "user_name":"张三",
         "business_code":"135",
         "license_start_date":"20181107",
         "license_end_date":"20181107",
         "solo_business_address":"测试注册地址",
         "solo_reg_address":"测试",
         "solo_fixed_telephone":"156172514233",
         "business_scope":"是啥",
         "legal_name":"测试姓名",
         "legal_cert_type":"01020100",
         "legal_cert_id":"14010120040217509X",
         "legal_cert_start_date":"20181107",
         "legal_cert_end_date":"20181107",
         "legal_mobile":"15625142312",
         "contact_name":"方法",
         "contact_mobile":"15641324132",
         "contact_email":"6636@qq.com",
         "occupation":"01",
         "address":"测试地址",
         "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
      "attach_nos": "test01,test02",
      "mer_priv": "test_priv",
      "extension": "test"
      }";

String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
String checkValue = sign(valueObj);
String cmdId = "124";
String merCustId = "6666000000026086";
String version = "10";
response.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
out.println(" <BODY style=\"display: none\">");
out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
out.println("</from>");
out.println("<script>window.document.submitForm.submit();</script>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();

返回码

返回码 返回描述
124000 交易成功
124003 交易失败
124099 系统异常
124100 请求参数非法
124101 商户无此接口权限
124102 验证签名失败
124103 商户状态异常
124110 商户号不存在
124204 商户配置异常
124301 该用户已开户,身份证号已存在
124302 该用户已开户,手机号已存在
124303 该用户正在开户中,请勿重复申请
124304 个体工商户开户失败
124305 手续费收取失败
124306 个体工商户开户时,支付密码为必输
124307 个体工商户开户时,证件有效期为必输
124308 省份地区信息非法
124309 营业执照注册号已被使用
124310 该个体工商户已有正在处理的开户申请或已开户成功
124311 该个体工商户申请已完成开户
124312 该个体工商户开户申请正在审核中,不能修改
124313 该个体工商户开户申请审核拒绝,不能修改

122 商户文件上传接口

功能说明

给商户提供个体工商户开户、企业用户开户、代理商商户开户文件上传的功能。

  • 注:此接口强烈建议用下方代码示例方式来写代码,避免不必要的麻烦。

  • 目前支持的文件格式:rar,zip,png,jpg,jpeg,gif,bmp,pdf,doc,docx。

  • 附件材料要求如下:

    1、五证必须提供全,若三证合一,则只需要传三证合一的附件

    2、上传图片必须清晰,证件字体能清楚辨认,每张证件必须盖有注册企业的 有色公章 且证件均需在有效期内

    3、“对公账户信息”提供印鉴卡、银行流水单号、银行开户许可证、银行开户回执单,4项中任一即可

    4、“对公账户信息”中必须显示对应银行的支行信息,并附有银行公章

    5、上传资料内容与接口参数上的信息及要求一致

  • 注:若个体工商户无公章,可上传 经营者有色指印+签名 的复印件。

调用方式:系统调用

请求地址:

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为 10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为 122
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
附件编号 attach_no 变长20位的String 必须 商户下唯一
业务类型 trans_type 定长2位String 必须 01:代理商开户,02:生利宝开户 03:企业开户, 05:个体工商户开户, 06:批量代发, 19:活体验证
附件类型 attach_type 定长2位String 必须 营业执照注册号:00 组织结构代码证:01 税务登记证号:02 法人证件:03 开户银行许可证:04 统一社会信用代码:05 开户电子协议:08 法人证件反面:09 经营照片:10 经营照片(地址照片):11 经营照片(门面照片):12 其他:99 经办人证件:15 活体验证照片:19
文件描述 attach_desc 变长80位String 可选  
文件 attach_file File 必须 传入的中文文件名称为 UTF-8 字符集 URLEncode 编码后的字符串
上传类型 file_upload_type 定长2位String 可选 01:新增 说明(非必填。默认为新增,新增情况下,文件名重复报错)
用户客户号 user_cust_id 定长16位String 可选 业务类型为活体验证时必填
App名称 app_name 变长128位String 可选 业务类型为活体验证时必填
是否活体验证 live_verify 定长2位String 可选 业务类型为活体验证时必填,01:是,02:否
活体验证结果 verify_result 定长2位String 可选 业务类型为活体验证时必填,01:通过,02:未通过
活体验证渠道 verify_channel 定长2位String 可选 业务类型为活体验证时必填,01:realme,02:公安,03:其他
活体验证节点 verify_node 定长2位String 可选 业务类型为活体验证时必填,01:注册,02:登录,03:绑卡,04:支付

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为 122
应答返回码 resp_code 定长6位的String 必须 122000:交易成功, 122003:交易失败 122099:系统异常
应答描述 resp_desc 变长String 必须  

代码示例

java

import java.io.File;
import java.nio.charset.Charset;
import jodd.http.HttpRequest;
import jodd.http.HttpResponse;
import org.apache.commons.codec.binary.Base64;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huifu.saturn.cfca.CFCASignature;
import com.huifu.saturn.cfca.SignResult;
import com.huifu.saturn.cfca.VerifyResult;

/**
 * Function : 文件上传测试
 * Date : 2018年9月26日 下午4:45:53
 */
public class Demo122 {

    public static void main(String[] args) {
       // 地址可以询问对方运营
        String testUrlFile = "http://mertest.chinapnr.com/npay/fileMerchantRequest";
        String charset = "UTF-8";
        // 加签用pfx文件,配置商户的Pfx文件名
        String pfxFile = "D:/app/etc/product/888888-NEW.pfx";
       // 加签用密码,配置商户的pwd
        String pfxFilePwd = "123456";
       // 文件可以询问对方运营
        String cerFile = "D:/app/etc/product/CFCA_ACS_TEST_OCA31.cer";
        // 商户客户号
        String merCustId = "6666000000002619";
        String cmdId = "122";
        String version = "10";

        // 拼装请求参数
       String valueObj = "{\"version\":\"10\",\"cmd_id\":\"122\",\"mer_cust_id\":\"6666000000002619\",\"attach_no\":\"a2454422338\",\"trans_type\":\"01\",\"attach_type\":\"05\",\"extension\":\"1\"}";
        // 进行base64转换
        String base64RequestParams = Base64.encodeBase64String(valueObj.getBytes(Charset.forName("utf-8")));
        // 加签
        SignResult signResult = CFCASignature.signature(pfxFile, pfxFilePwd, base64RequestParams,
                "utf-8");
        if (!"000".equals(signResult.getCode())) {
            System.out.println("加签错误");
            return;
        }
        String checkValue = signResult.getSign();


        //如果文件名称中有中文,请先使用URLEncoder.encode(filename, "UTF-8")对文件名编码
        File newFile = new File("D:/app/a.jpg");

        HttpRequest httpRequest = HttpRequest.post(testUrlFile).charset(charset);
        HttpResponse httpResponse = httpRequest.contentType("multipart/form-data").form(
                "cmd_id", cmdId,
                "version", version,
                "mer_cust_id", merCustId,
                "check_value", checkValue,
                "attach_file", newFile).send();
        String body = httpResponse.bodyText();
        // 响应解密 验签失败
        JSONObject jsonObject = JSON.parseObject(body);
        String sign = jsonObject.getString("check_value");
        VerifyResult verifyResult = CFCASignature.verifyMerSign("100001", sign, charset,cerFile);
        if (!"000".equals(verifyResult.getCode())) {
            System.out.println("验签失败");
            return;
        }
        String content = new String(verifyResult.getContent(), Charset.forName(charset));
        String decrptyContent = new String(Base64.decodeBase64(content), Charset.forName(charset));
        System.out.println(decrptyContent);
    }
}

返回码

返回码 返回描述
122000 交易成功
122003 交易失败
122099 系统异常
122100 请求参数非法
122101 商户无此接口权限
122102 验证签名失败
122103 商户状态异常
122107 消息类型与签名内容不一致
122108 商户客户号与签名内容不一致
122109 版本号与签名内容不一致
122110 商户号不存在
122310 附件编号不能重复
122311 上传文件不能为空
122312 上传失败,不支持该文件格式
122316 上传失败,文件大小超过限制
122322 文件名称有误

121 创建子账户接口

功能说明

调用该接口为商户/用户创建子账户

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位的String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为121
商户客户号 mer_cust_id 定长16位的String 必须 商户的唯一标识
用户客户号 user_cust_id 定长16位的String 必须 用户的唯一标识;
账户类型 acct_type 定长2位string 可选 00:基本支付账户; 01:基本非支付账户; 02:手续费账户; 05:专用资金账户; 不填默认01;
账户名称 acct_name 变长32位String 可选  

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为121
应答返回码 resp_code 定长6位String 必须 121000—成功 , 其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位的String 必须 用户的唯一标识;
账户号 acct_id 变长9位String 可选  

代码示例

java

String valueObj = "{"version":"10","cmd_id":"121","mer_cust_id":"6666000000076596","user_cust_id":"6666000000076598","acct_type":"01","acct_name":"user非支付账户"}";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "121";
 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": "121",
        "resp_code": "121000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
    {
      "cmd_id": "121",
      "resp_code": "121099",
      "resp_desc": "交易失败",
      "mer_cust_id" : "6666000000026086",
      "order_date": "20180327",
      "order_id": "10000000001",
      .......
    }

返回码

添加子账户(cmd_id=121)  
121000 交易成功
121003 交易失败
121099 系统异常
121100 请求参数非法
121101 商户无此接口权限
121102 验证签名失败
121103 商户状态异常
121104 用户状态异常
121107 消息类型与签名内容不一致
121108 商户客户号与签名内容不一致
121109 版本号与签名内容不一致
121110 商户号不存在
121310 产品信息校验失败
121300 客户号不存在
121301 调用PA子账户开户失败
121302 子账户信息不存在
121303 调用PA子账户修改失败
121304 不允许创建该类型的子账户
121305 子账户数已超过最大限制

814 二级商户录入接口

功能说明

使用该接口二级商户录入操作;

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为814
订单日期 order_date 定长8位 String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位 String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
二级商户名 sub_mer_cust_name 变长50位String 必须 二级商户名称
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知,商户应在应答接收的响应中输出RECV_ORD_ID字样的字符串,表明商户已经收到该笔交易结果。注意:1) URL中请不要包含特殊字符 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用。
入参扩展域 extension 变长512位的String 可选 用于扩展请求参数

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为814
应答返回码 resp_code 定长6位String 必须 814000–调用成功,其他见返回码表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
二级商户号 sub_mer_cust_id 变长20位String 可选 二级商户号, 20位内数字或字母的组合,录入成功(返回码:000)时必返
订单日期 order_date 定长8位 String 必须 格式为YYYYMMDD,例如:20160307
订单号 order_id 变长20位 String 必须 由商户生成,必须保证唯一,20位内数字或字母的组合
平台流水号 platform_seq_id 定长18位String 可选 组成规则:8位本平台日期+ 10位系统流水号,录入成功(返回码:000)时必返
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回。注意:如参数中包含中文,应对参数进行Base64加密后再使用.

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "814",
       "mer_cust_id": "6666000000026086",
       "order_date": "20180816",
       "order_id": "2018081616035656",
       "sub_mer_cust_name": "贸负",
       "bg_ret_url": "http://192.168.0.70:8081/asharp/acceptbgret/virgo",
       "mer_priv": "test_mer_priv",
       "extension": "test_textension"
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "814";
 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": "814",
        "resp_code": "814000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
成功响应:
200
   {
     "cmd_id": "814",
     "resp_code": "814099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

二级商户录入(cmd_id=814)  
814000 交易成功
814099 系统异常
814100 请求参数非法
814101 商户无此接口权限
814202 交易订单号重复
814103 商户状态异常
814104 用户状态异常
814107 消息类型与签名内容不一致
814108 商户客户号与签名内容不一致
814109 版本号与签名内容不一致
814213 不支持二级商户号
814215 二级商户名已存在
814202 交易订单号重复

130 无卡收款绑卡短信接口

功能说明

供商户无卡收款的绑卡流程的一阶段短信发送

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为130
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
验卡类型 card_verify_type 定长2位String 必须 快捷绑卡: 02 消费分期代扣绑卡: 03 非消费分期代扣绑卡: 04
开户银行代号 bank_id 变长8位String 可选 具体见附件:开户银行代号
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡 2–准贷记卡
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_ mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
卡姓名 card_name 变长120位String 可选 当前绑定银行卡的开户名称 (只有快捷绑卡时才需要输入)
卡证件号 cert_id 定长18位String 可选 当前绑定银行卡的开户证件号 (只有快捷绑卡时才需要输入)
银行卡开户省份 card_prov 定长4位String 可选(可以为空默认为上海) 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 可选(可以为空默认为上海) 本次快捷绑卡待绑定的银行卡开户地区
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为130
应答返回码 resp_code 定长6位String 130000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
验卡类型 card_verify_type 定长8位String 必须 快捷绑卡: 02 消费分期代扣绑卡: 03 非消费分期代扣绑卡: 04
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "130",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000027184",
       "order_date": "20180328",
       "order_id": "0020180365",
       "card_verify_type": "02",
       "bank_id": "01020000",
       "dc_flag": "0",
       "card_no": "6212261001039279143",
       "card_mobile": "13666666691",
       "card_name": "",
       "cert_id": "",
       "card_prov": "0031",
       "card_area": "3100",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "mer_priv": "",
       "extension": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "130";
 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": "130",
        "resp_code": "130000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "130",
     "resp_code": "130099",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
130000 交易成功
130098 系统超时
130099 系统异常
130100 请求参数非法
130101 商户无此接口权限
130102 验证签名失败
130103 商户状态异常
130104 用户状态异常
130107 消息类型与签名内容不一致
130108 商户客户号与签名内容不一致
130109 版本号与签名内容不一致
130110 商户号不存在
130111 用户客户号不存在
130204 商户配置异常
130210 短信验证码发送过于频繁
130211 短信验证码发送失败
130300 当前商户不支持借记卡
130301 当前商户不支持贷记卡
130302 当前银行卡已绑过快捷卡
130303 银行卡信息与上次绑卡信息不一致,请解绑后再提交绑卡
130304 验证码发送失败
130305 验证码发送成功
130306 贷记卡类型时,贷记卡CVV2、贷记卡有效期必须输入
130307 非贷记卡类型时,贷记卡CVV2、贷记卡有效期不能输入
130308 只有个人用户和个体户能绑定快捷卡
130309 验证码发送中

131 无卡收款绑卡接口

功能说明

该接口支持个人用户小额收款的支付需求情景下,绑定C端客户的银行卡,进行快捷支付收款。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 目前固定为10
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为131
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
借贷标记 dc_flag 定长1位String 必须 0–借记,储蓄卡 1–贷记,信用卡 2–准贷记卡
银行卡号 card_no 变长32位String 必须 本次快捷绑卡待绑定的银行卡号
银行预留手机号 card_mobile 变长11位String 必须 本次快捷绑卡待绑定的银行卡,在银行开户时的预留手机号
卡姓名 card_name 变长120位String 可选 当前绑定银行卡的开户名称
卡证件号 cert_id 定长18位String 可选 当前绑定银行卡的开户证件号
银行卡开户省份 card_prov 定长4位String 必须 本次快捷绑卡待绑定的银行卡开户省份
银行卡开户地区 card_area 定长4位String 必须 本次快捷绑卡待绑定的银行卡开户地区
短信验证码 sms_code 定长6位String 必须  
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数
设备信息 dev_info_json 变长1024位的String 必须 参见 设备静态信息

返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为131
应答返回码 resp_code 定长6位String 必须 131000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 必须 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20160307
本平台交易唯一标识号 platform_seq_id 定长18位String 必须 组成规则:8位本平台日期+ 10位系统流水号
开户银行代号 bank_id 变长8位String 必须 具体见附件:开户银行代号
银行卡号 card_no 变长32位String 必须 返回银行卡号掩码
绑定银行卡ID bind_card_id 变长20位String 必须 本次快捷绑卡的ID
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址
页面返回URL ret_url 变长128位的String 可选 交易完成后,本平台系统把交易结果通过页面方式,发送到该地址上
商户私有域 mer_priv 变长120位的String 可选 为商户的自定义字段,该字段在交易完成后由本平台原样返回
扩展域 extension 变长512位的String 可选 用于扩展请求参数

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "131",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000291215",
       "order_id": "0020180368",
       "order_date": "20180402",
       "bank_id": "03134402",
       "dc_flag": "0",
       "card_no": "6230580000038076969",
       "card_mobile": "13761708192",
       "card_name": "",
       "cert_id": "",
       "card_prov": "0031",
       "card_area": "3100",
       "sms_code": "324402",
       "bg_ret_url": "http://192.168.0.74:8001/npayCallBack/asyncHandle.json",
       "ret_url": "",
       "mer_priv": "",
       "extension": ""
       }";

 String testUrl = "http://192.168.3.170:8083/npay/merchantRequest";
 String checkValue = sign(valueObj);
 String cmdId = "131";
 String merCustId = "6666000000026086";
 String version = "10";
 httpServletResponse.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
 PrintWriter out = httpServletResponse.getWriter();
 out.println();
 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
 out.println("<HTML>");
 out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
 out.println(" <BODY style=\"display: none\">");
 out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
 out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
 out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
 out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
 out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
 out.println("</from>");
 out.println("<script>window.document.submitForm.submit();</script>");
 out.println(" </BODY>");
 out.println("</HTML>");
 out.flush();
 out.close();
成功响应:
200
      {
        "cmd_id": "131",
        "resp_code": "131000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "131",
     "resp_code": "131304",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
131000 交易成功
131002 请求已受理
131003 交易失败
131099 系统异常
131100 请求参数非法
131101 商户无此接口权限
131102 验证签名失败
131103 商户状态异常
131104 用户状态异常
131107 消息类型与签名内容不一致
131108 商户客户号与签名内容不一致
131109 版本号与签名内容不一致
131110 商户号不存在
131201 页面数据被篡改
131202 交易订单号重复
131204 商户配置异常
131205 短信验证码验证失败
131206 短信验证码发送手机号与验证手机号不一致
131207 短信验证码或短信唯一标识为空
131208 短信验证码已失效请重新获取
131209 验证码发送接口与接口不一致
131210 短信验证码发送过于频繁
131211 短信验证码发送失败
131303 银行卡号与银行不匹配
131305 只有个人用户和个体户能绑定快捷卡
131308 省份地区信息非法
131314 请获取验证码
131315 银行卡信息有更新,请重新获取验证码
131316 用户已绑定快捷卡,请勿重复申请
131317 用户有快捷卡正在绑定中,请勿重复绑卡
131318 该银行卡号与卡类型不匹配
131320 该商户不支持绑定贷记卡

129 银行卡四要素验证

功能说明

该接口支持个人用户银行卡验证。

调用方式:系统调用

请求参数

参数中文名称 参数名称 数据格式 是否必须 说明
版本号 version 定长2位String 必须 固定为10,如版本升级,能向前兼容
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为129。
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20200513
用户姓名 card_name 变长40位String 必须 银行卡的开户户名
客户身份证号 cert_id 定长18位String 必须 银行卡开户身份证号
手机号 user_mobile 定长11位String 必须 银行卡开户备案手机号
银行卡号 card_no 变长32位String 必须 验证的银行卡号
商户后台应答地址 bg_ret_url 变长128位的String 必须 通过后台异步通知商户开户结果 注意: 1) 使用时不要包含中文 2) 必须是外网地址

同步/异步返回参数

参数中文名称 参数名称 数据格式 是否必须 说明
消息类型 cmd_id 定长3位String 必须 每一种消息类型代表一种交易,此处为129
应答返回码 resp_code 定长6位String 必须 129000–调用成功,其他见返回码附件表
应答返回描述 resp_desc 变长String 必须 返回码的对应中文描述
商户客户号 mer_cust_id 定长16位String 必须 由汇付生成,商户的唯一性标识
用户客户号 user_cust_id 定长16位String 可选 由汇付生成,用户的唯一性标识
订单号 order_id 变长20位String 必须 由商户生成,必须保证唯一, 20位内的字母或数字组合
订单日期 order_date 定长8位String 必须 格式为YYYYMMDD,例如:20200513

代码示例

java

String valueObj = "{
       "version": "10",
       "cmd_id": "129",
       "mer_cust_id": "6666000000026086",
       "user_cust_id": "6666000000291215",
       "order_id": "0020180368",
       "order_date": "20180402",
       "card_name":"XXX",
       "cert_id":"370102199503072253",
       "user_mobile":"13678450973",
       "card_no":"62128400123456786438",
       "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 = "129";
 String merCustId = "6666000000026086";
 String version = "10";
 httpServletResponse.setContentType("application/x-www-form-urlencoded; charset=UTF-8");
 PrintWriter out = httpServletResponse.getWriter();
 out.println();
 out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
 out.println("<HTML>");
 out.println(" <HEAD><TITLE>sender</TITLE></HEAD>");
 out.println(" <BODY style=\"display: none\">");
 out.println("<form name=\"submitForm\" action=\"" + url + "\" method=\"post\">");
 out.println("<input type=\"hidden\" name=\"cmd_id\" value=\"" + cmd_id + "\"/>");
 out.println("<input type=\"hidden\" name=\"version\" value=\"" + version + "\"/>");
 out.println("<input type=\"hidden\" name=\"mer_cust_id\" value=\"" + merCustId + "\"/>");
 out.println("<input type=\"hidden\" name=\"check_value\" value=\"" + checkValue + "\"/>");
 out.println("</from>");
 out.println("<script>window.document.submitForm.submit();</script>");
 out.println(" </BODY>");
 out.println("</HTML>");
 out.flush();
 out.close();
成功响应:
200
      {
        "cmd_id": "129",
        "resp_code": "129000",
        "resp_desc": "交易成功",
        "mer_cust_id" : "6666000000026086",
        "order_date": "20180327",
        "order_id": "10000000001",
        .......
      }
失败响应:
200
   {
     "cmd_id": "129",
     "resp_code": "129003",
     "resp_desc": "交易失败",
     "mer_cust_id" : "6666000000026086",
     "order_date": "20180327",
     "order_id": "10000000001",
     .......
   }

返回码

返回码 返回描述
129000 交易成功
129002 请求已受理
129003 交易失败
129099 系统异常
129100 请求参数非法
129101 商户无此接口权限
129102 验证签名失败
129103 商户状态异常
129104 用户状态异常
129107 消息类型与签名内容不一致
129108 商户客户号与签名内容不一致
129109 版本号与签名内容不一致
129110 商户号不存在
129201 页面数据被篡改
129202 交易订单号重复
129204 商户配置异常
129323 该卡号绑定次数超限制
129303 银行卡号与银行不匹配
129321 支付手续费未配置
129314 支付手续费账户状态不正常
129112 账号不存在
129212 账户余额查询失败
129225 手续费计算异常
129903 手续费余额不足
129325 银行卡与姓名或身份证不符