单笔代收协议签约

1.修订记录

修订 日期 说明 作者
V0.1 2017/4/26 新接口参数定义 黄月巧
V0.2 2017/06/19 将请求参数”notify_url”修改成不可空 陈宋东
V0.3 2017/8/2 新增协议签约的两种状态:PROTOCOL_WAIT_AUTHORIZE 黄月巧
V0.31 2017/8/2 新增协议签约的两种状态:PROTOCOL_AUTHORIZED
V0.4 2017/10/20 新增异常类型ACQ.BUSINESS_TIMEOUT_ERROR(业务超时) 陈宋东
V0.5 2019/08/15 bank_account_name从原来的String(100),修改成String(200) 黄敏
V0.6 2021/12/27 支持国密 王晶

2.接口说明

(1)场景说明

1、单笔代收协议签约

(2)接口说明

1、单笔代收协议签约

3.请求地址

环境 HTTPS请求地址
正式环境 https://ds.ysepay.com/gateway.do

4.请求参数说明

4.1公共请求参数

参数 类型(字节长度) 必填 参数说明
method String(1,128) Y 接口名称。固定值:ysepay.ds.protocol.single.accept
partner_id String(1,20) Y 商户在银盛支付平台开设的用户号[商户号]
timestamp String(1,19) Y 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss",示例值:2014-07-24 03:07:50
charset String(1,10) Y 商户网站使用的编码格式,如utf-8、gbk、gb2312等。示例值:GBK
sign_type String(1,10) Y 签名类型,RSA/SM
sign String(1,256) Y 签名字符串,再用Base64编码
notify_url String(190) Y 银盛支付服务器主动通知商户网站里指定的页面http路径。示例值:http://api.test.ysepay.net/atinterface/receive_return.htm
version String(1,3) Y 接口版本,示例值:3.0
biz_content String Y 业务请求参数的集合,最大长度不限,除公共参数外所有请求参数都必须放在这个参数中传递

4.2 业务请求参数

参数名biz_content,值为一个json格式对象,下面列表描述json对象的值

参数 类型(字节长度) 必填 参数说明
protocol_no String(1,32) Y 客户、企业协议号,只能由大小写英文字母、数字、下划线及横杠组成,示例值:DS00004991
business_code String(1,10) Y 业务代码 ,请联系银盛客户经理获取。注意:业务代码非固定值,不同到账方式需要传不同的业务代码
effect_date String(8,8) Y 生效时间,格式为yyyyMMdd,示例值:20160619
expire_date String(8,8) Y 失效时间,格式为yyyyMMdd,示例值:20160619
bank_account_type String(3,9) Y 付款方银行账户类型,此处必填corporate :对公账户;personal:对私账户
bank_card_type String(3,6) Y 支持卡类型,此处必填debit:借记卡;credit:信用卡
bank_name String(1,128) Y 银行名称,为了保证代付交易成功,银行名称最好具体到分行,示例值:中国银行深圳民治支行
bank_account_no String(15,19) Y 银行帐号,注:当bank_account_type为对公账户时,该属性字段长度可以为String(1,32),示例值:1000000000000000000
bank_account_name String(1,200) Y 银行帐号用户名,示例值:李四
bank_province String(40) N 开户行所在省份,示例值:广东省
bank_city String(1,40) Y 开户行所在城市,示例值:深圳市
bank_telephone_no String(1,11) Y 银行预留手机号码
cert_type Number(2) Y 付款方证件类型,暂时只支持证件类型:00(身份证)
cert_no String(1,50) Y 付款方证件号码,当前只对特殊银行机构特定场景下使用此字段注:如果签名方式为RSA,则用DES加密,密钥Src用户号前8位,不足8位前补空格;如果签名方式为SM,则用SM加密
cert_expire String(8) N 付款方证件有效期,格式yyyyMMdd,长期有效的居民身份证可为空,示例值:20220930
single_amount_limit Number(10,2) N 单笔限额,默认无限额
month_num_limit Number(10) Y 月交易笔数限制
month_amount_limit Number(10,2) Y 月交易限额

5.同步返回参数说明

银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。

请注意:银盛后期对返回参数保留扩展的权利,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。

5.1 公共响应参数

参数 类型(字节长度) 必填 参数说明
sign String Y 签名字符串,Base64编码
ysepay_ds_protocol_single_accept_respose String Y 业务响应参数的集合,最大长度不限

5.2 业务响应参数

参数 类型(字节长度) 必填 参数说明
code String Y 响应代码
msg String Y 响应代码描述
protocol_status String(1,32) Y 协议状态, PROTOCOL_EFFECT;PROTOCOL_ACCEPT_SUCCESS;PROTOCOL_INVALID
protocol_status_description String(1,256) Y 协议状态说明PROTOCOL_EFFECT协议生效PROTOCOL_ACCEPT_SUCCESS;协议受理中PROTOCOL_INVALID协议无效
protocol_no String(1,32) Y 客户、企业协议号,示例值:DS00004991

6.异步通知参数说明

参数 类型(字节长度) 必填 参数说明
protocol_status String(1,32) Y 协议状态, PROTOCOL_EFFECT PROTOCOL_INVALID,示例值:附录8.2
protocol_status_description String(1,256) Y 协议状态说明PROTOCOL_EFFECT协议生效PROTOCOL_INVALID协议无效,示例值:协议生效
protocol_no String(1,32) Y 客户、企业协议号,示例值:DS00004991
fee Number(10,2) N 手续费
notify_type String Y 通知类型,固定值:ysepay.ds.protocol.single.notify
notify_time String(19) Y 发送请求的时间,格式"yyyy-MM-dd HH:mm:ss",示例值:2014-07-24 03:07:50
sign_type String Y 签名类型,交易请求时传入的签名类型RSA/SM
sign String Y 签名字符串,Base64编码

7.样例

7.1 sdk样例

  • 银盛将与服务端交互的接口封装在开发工具包(SDK)中,开发者无需自行实现同服务端交互的复 杂逻辑,直接将SDK导入自己的工程后,通过sdk示例代码实现同银盛服务端的交互。
     /**1、获取需要的参数*/
     //商户进件请求路径,建议配置在项目的配置文件里面
     String reqUrl = "https://ds.ysepay.com/gateway.do";

     //私钥证书存放路径,建议配置在项目的配置文件里面
     String privateKeyFilePath = "D:\\openRSA\\hyfz_test2.pfx";

     //ys公钥证书存放地址 建议配置在项目的配置文件里面
     String publicKeyFilePath = "D:\\openRSA\\businessgate.cer";

     //私钥证书密钥,建议配置在项目的配置文件里面
     String privateKeyPassworde = "123456";

     //商户在银盛支付平台开设的用户号[商户号],接入时需要替换成自己的
     String partnerId = "hyfz_test2";

     String notifyUrl = "http://127.0.0.1";
     /**2、组装需要的参数*/
     OnlineReqDataVo req = new OnlineReqDataVo();
     //设置私钥证书路径
     req.setPrivateKeyFilePath(privateKeyFilePath);
     //设置私钥密钥
     req.setPrivateKeyPassword(privateKeyPassworde);
     //设置ys公钥证书路径
     req.setYsPublicKeyFilePath(publicKeyFilePath);
     //设置请求路径
     req.setReqUrl(reqUrl);
     req.setPartnerId(partnerId);
     req.setNotifyUrl(notifyUrl);
     Map<String,Object>paramData = new LinkedHashMap<>();
     //企业、客户代收协议号
     paramData.put("protocol_no","DS00004991");
     //业务代码
     paramData.put("business_code","00120001");
     //生效时间,格式为yyyyMMdd
     paramData.put("effect_date","20160619");
     //失效时间,格式为yyyyMMdd
     paramData.put("expire_date","20160619");
     //付款方银行账户类型,此处必填corporate :对公账户;personal:对私账户
     paramData.put("bank_account_type","corporate");
     //支持卡类型,此处必填debit:借记卡;credit:信用卡
     paramData.put("bank_card_type","debit");
     //银行名称,为了保证代收交易成功,银行名称最好具体到分行
     paramData.put("bank_name","中国银行深圳民治支行");
     //银行帐号,注:当bank_account_type为对公账户时,该属性字段长度可以为String(1,32)
     paramData.put("bank_account_no","1000000000000000000");
     //银行帐号用户名
     paramData.put("bank_account_name","李四");
     //开户行所在省份
     paramData.put("bank_province","广东省");
     //开户行所在城市
     paramData.put("bank_city","深圳市");
     //银行预留手机号码
     paramData.put("bank_telephone_no","18512345678");
     //付款方证件类型,暂时只支持证件类型:00(身份证)
     paramData.put("cert_type","");
     //付款方证件号码,当前只对特殊银行机构特定场景下使用此字段注:如果签名方式为RSA,则用DES加密,密钥Src用户号前8位,不足8位前补空格; 如果签名方式为SM,则用SM加密
     paramData.put("cert_no","");
     //付款方证件有效期,格式yyyyMMdd,长期有效的居民身份证可为空
     paramData.put("cert_expire","20270112");
     //单笔限额,默认无限额
     paramData.put("single_amount_limit",10000);
     //月交易笔数限制
     paramData.put("month_num_limit",100);
     //月交易限额
     paramData.put("month_amount_limit",100000);


     //业务员参数
     req.setParamData(paramData);


     logger.info("单笔代收协议签约入参为:"+ JSONObject.toJSONString(req));

     /**2、调用API的方法*/
     String result = null;
     try{
         result = DsApi.singleProtocolAcceptDs(req);
         JSONObject jsonObject = JSON.parseObject(result, Feature.OrderedField);

         //根据返回结果处理自己的业务逻辑,result内容详见接口文档
     }catch (Exception e){
         logger.info("单笔代收协议签约失败:"+e.getCause().getMessage());

     }

8.附录

8.1 业务错误码

错误码 错误描述 解决方案
ACQ.SYSTEM_ERROR 系统错误 请调用查询接口查询协议状态
ACQ.BUSINESS_TIMEOUT_ERROR 业务超时 请调用查询接口查询订单状态
ACQ.SUB_SYS_CHECK_CUSTINFO 该协议中存在空要素(手机号码,流水号,验证码),业务检查不通过 调用查询接口查询协议的信息,并联系银盛客服处理
ACQ.INVALID_PARAMETER 无效的业务参数 找不到对应的客户信息,检查发起参数
ACQ.SUB_SYS_CHECK_TIME_LIM 当前请求过于频繁,请稍后重试 每次获取授权码之后,需等待30秒后才能重新获取,还需等待30秒
ACQ.CONNECTIONT_ERROR 连接子系统出错 请联系客服或市场技术支持人员
ACQ.PROTOCOL_STATE_ERROR 待授权协议状态错误,当前状态不允许发送或验证授权码 调用查询接口查询协议的信息,查询当前协议状态是否可以发起请求
ACQ.PROTOCOL_NOT_EXIST 查询不到对应协议信息 请检查参数中的协议号是存在
ACQ.SYSTEM_ERROR 系统错误 请联系银盛客户或者市场技术支持
ACQ.PROTOCOL_TEL_VALID_ERROR 传递的手机号码与协议中付款方所留号码不一致 请检查协议中的手机号码
ACQ.PROTOCOL_VALID_OVERTIME 授权码超时,请重新获取并再次发起请求 授权码120s有效,超时验证失败,请重新获取
ACQ.ACQ.PROTOCOL_VALID_ERROR 授权码验证错误,请重新输入或者重新获取并再次发起请求 验证失败,请重新输入或者重新获取并再次发起请求
ACQ.PROTOCOL_EXISTED 协议已经存在 协议已经存在不需要重新签订
ACQ.PROTOCOL_BUZICODE.ERROR 代收协议不支持此业务代码 检查业务代码或者联系银盛客服
ACQ.PROXY_CHECK_FAILD 代理关系检查失败 比如委托关系不存在
ACQ.PROXY_CHECK_PARAM 代理关系参数验证失败 比如代理密码解密失败,或者代理密码与委托商户号没有同时传或者同时不传

8.2 交易状态

枚举名称 枚举说明
PROTOCOL_ACCEPT_SUCCESS 签约请求受理成功,正在审核
PROTOCOL_EFFECT 生效
PROTOCOL_INVALID 无效
PROTOCOL_WAIT_AUTHORIZE 协议待授权
PROTOCOL_AUTHORIZED 协议已授权

results matching ""

    No results matching ""