商户进件
1、修订记录
修订记录 | 日期 | 说明 | 作者 |
---|---|---|---|
1.0 | 2021.11.10 | 初稿 | 章发中 |
2、业务说明
(1)接口说明
扫码服务商使用该接口提交商家(子商户)资料,帮助商家入驻成为银盛支付商户。 流程指引请看 扫码服务商-子商户进件时序图
3、请求地址
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://appdev.ysepay.com/saas/org/addScanMerchant |
正式环境 | https://ouser.ysepay.com:6443/saas/org/addScanMerchant |
4、请求参数说明
4.1、 公共请求参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
ver | String(3) | Y | 版本号 固定值1.0 |
src | String(50) | Y | 由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753 |
msgCode | String(20) | Y | 接口代码 固定值Merchant |
method | String(30) | Y | 接口方法 固定值addScanMerchant |
signType | String(10) | Y | 报文签名算法,RSA、SM 注:应监管要求签名算法变更为国密,新接入商户请选择SM |
charset | String(10) | Y | 字符集 固定值UTF-8 |
reqFlowId | String(20) | Y | 请求流水号,示例值:202110011944011101 注意:该字段不参与签名 |
signValue | String | Y | 签名串,请参考”签名样例以及demo下载“。 |
data | String | Y | 业务参数(des加密成密文字符串) |
4.2、业务请求参数
data加密前的json数据明文字符串
注意:下方分类只是对字段进行名义上的归类,以帮助理解参数意思,无实际意义
分类 | 参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|---|
商户基本信息 | userType | String(1) | Y | 商户模式(0:个体商户;1:企业商户;3:小微商户;5:社会组织;6:事业单位;7:政府机关)。示例:0 无营业执照:选择小微 有营业执照:按营业执照上的类型选择个体或企业 商户模式不同,上传的图片不同。详见上传图片接口 |
userShortName | String(20) | Y | 商户简称, 小微商户名称增加城市名称的校验,有门头(招牌),命名规则为“城市+门头名称”,无门头(招牌),命名规则为"城市+法人姓名+主营",其中城市录入规范为,如果是区的,就选地级市名称,如果是县市的选县市名称,也可以支持地级市或者县市名称。或者直接全部上送地市级名称 |
|
coOperatorNo | String(20) | N | 商户所属代理商编号,空则默认为发起方所属代理商编号 | |
certType | String(10) | Y | 证件类型,身份证00,国外护照06,港澳通行证07,台胞通行证08 。固定值 00 | |
actualManager | String(20) | Y | 实际控制人姓名 个体或者企业商户:实际控制人为实际控制经营单位以及企业的自然人、法人或其他组织 小微商户:与法人一致 |
|
mccCd | String(10) | Y | MCC码。5533。详情见附录1 | |
contactsPhone | String(50) | Y | 联系人电话 | |
contactsEmail | String(50) | Y | 联系人邮箱 | |
contactsName | String(200) | Y | 联系人姓名 | |
contactsAddr | String(200) | Y | 联系人通讯地址 | |
businessType | String(10) | N | 营业证明文件类型。01:营业执照 02:事业单位法人证书 03:身份证件 04:其他证明文件 05:民办非企业单位登记证书 06:基金会法人登记证书。 注:其他证明文件,基金会法人登记证书,只能走纸质合同 | |
法人信息 | legalPersonName | String(200) | Y | 法人姓名 |
legalPersonId | String(200) | Y | 法人身份证号 | |
legalPersonIdSdate | String(50) | Y | 法人身份证开始日期(格式20200101) | |
legalPersonIdEdate | String(50) | Y | 法人身份证到期日期(格式20200101) 注:有效期永久则为29991231 |
|
legalPersonPhone | String(200) | Y | 法人电话 | |
crpProfession | String(10) | Y | 法人职业。示例:10。详情见附录7 | |
crpNationality | String(10) | N | 法人国籍(国家编号,不填默认为:249,代表为中国)示例:249。 | |
crpGender | String(1) | Y | 法人性别(0:男;1:女)。示例:0 | |
crpAddr | String(50) | Y | 法人地址 | |
营业资质信息 | businessLicence | String(20) | Y | 营业执照全称/商户名称(小微商户名称增加城市名称的校验,有门头(招牌),命名规则为"城市+门头名称",无门头(招牌),命名规则为"城市+法人姓名+主营",其中城市录入规范为,如果是区的,就选地级市名称,如果是县市的选县市名称,也可以支持地级市或者县市名称。 或者直接全部上送地市级名称) |
businessLicenceNo | String(200) | N | 营业执照号码,商户模式为小微商户时,不需要传此参数 | |
businessLicenceSdate | String(50) | N | 营业执照开始日期,商户模式为小微商户时,不需要传此参数 | |
businessLicenceEdate | String(50) | N | 营业执照结束日期,商户模式为小微商户时,不需要传此参数 注:有效期永久则为29991231 |
|
registeredAddress | String(500) | N | 注册地址,商户模式为小微商户时,不需要传此参数 | |
结算信息 | balanceAccType | String(2) | Y | 结算卡类型 11:对私借记卡( 结算卡正面照、结算卡反面照图片必传)21:对公账户( 有账户号面照片,开户许可证)23:对公存折( 只须有账户号面照片,开户许可证)24:单位结算卡( 结算卡正面照、 结算卡反面照图片必传) |
settlementType | String(2) | N | 结算类型 选填,结算类型(00:结算至内部类型;01:结算至银行卡类型).默认01 | |
balanceAccCardno | String(200) | Y | 结算账户卡号 | |
balanceAccName | String(200) | Y | 结算账户户名 | |
bankMobile | String(50) | Y | 银行预留手机号 | |
bankType | String(50) | Y | 开户行行别编号。示例:104100。规范详见附录2 | |
bankName | String(200) | Y | 开户行行别名称。示例:中国银行。规范详见附录2 | |
openAccBanktype | String(50) | Y | 开户行编号(支行)。示例:10410005145。规范详见附录2 | |
openAccBankname | String(200) | Y | 开户行名称(支行)。示例:中国银行股份有限公司北京复兴门支行。规范详见附录2 | |
openAccProvince | String(50) | Y | 开户行省示例:广东省。规范详见附录6 | |
openAccCity | String(50) | Y | 开户行市示例:深圳市 。规范详见附录6 | |
openAccArea | String(50) | Y | 开户行区。示例:6412 。规范详见附录6 | |
lowestStlAmt | String(20) | Y | 结算起始金额,必须为自然数(0和正整数)(单位:元) | |
codeLegalPersonAcc | String(2) | Y |
是否同名结算 0: 非同名结算,1: 同名结算; (非同名结算时,备用结算信息必填)
同名结算 1.小微商户:对私且结算账户名为法人姓名 2.个体商户: (1). 对私且结算账户名为法人姓名 (2). 对公且结算账户名为营业执照名 3.企业类商户: 对公结算 非同名结算 1.小微商户:不支持 2.个体商户:对私且结算账户名与法人姓名不相同 3.企业类商户: 对私结算 |
|
unincorporatedName | String(200) | Y | 非法人姓名 注:法人结算则传法人姓名 |
|
unincorporatedId | String(200) | Y | 非法人身份证号码注:法人结算则传法人身份证号码 | |
authCertType | String(8) | N | 非法人证件类型 注:身份证 00(只支持00) |
|
authIdCernoValid | String(8) | N | 非法人证件有效期 |
|
authAddress | String(200) | N | 非法人地址 |
|
如果结算账户为非同名结算,则该信息必传) | 备用结算信息 (reservedBalanceAccType | String(2) | N | 结算卡类型 11 对私借记卡( 结算卡正面照、 结算卡反面照图片必传)21 对公借记卡( 只须结算卡正面照片) |
reservedBalanceAccCardno | String(200) | N | 结算账户卡号 | |
reservedBalanceAccName | String(200) | N | 结算账户户名 | |
reservedBankType | String(50) | N | 开户行行别编号 示例:104100。规范详见附录2 | |
reservedBankName | String(200) | N | 开户行行别名称 示例:中国银行。规范详见附录2 | |
reservedOpenAccBanktype | String(50) | N | 开户行编号(支行) 示例:10410005145。规范详见附录2 | |
reservedOpenAccBankname | String(200) | N | 开户行名称(支行) 示例:中国银行股份有限公司北京复兴门支行。规范详见附录2 | |
reservedOpenAccProvince | String(50) | N | 开户行省 示例:广东省。规范详见附录6 | |
reservedOpenAccCity | String(50) | N | 开户行市 示例:深圳市 。规范详见附录6 | |
reservedOpenAccArea | String(50) | N | 开户行区 示例:6412 。规范详见附录6 | |
门店信息 | mercLvl | String(4) | Y | 商户级别(1:总店 2:分店),默认传总店、分店暂不支持示例:1 |
mercUpId | String(20) | N | 总店商户号(商户级别为分店时必填) | |
businessAddress | String(500) | Y | 营业地址 | |
mercProv | String(50) | Y | 商户归属省。示例:湖北省。规范详见附录6 | |
mercCity | String(50) | Y | 商户归属市。示例:武汉市。规范详见附录6 | |
mercArea | String(50) | N | 商户归属区。示例:武昌区。 规范详见附录6 | |
支付业务信息 | openScan | String(2) | Y | 是否开通POS扫码业务(1:开通)。注:须开通POS扫码业务 |
marketShow | String(2) | N | 是否参与营销(Y:参与,N:不参与;默认不参与)。示例:Y | |
openPosp | String(2) | Y | 是否开通刷卡业务(0:不开通,1:开通)。示例:0 | |
openBusRadio | String(2) | N | 刷卡到账方式(只针对刷卡交易,只有开通刷卡业务必填)。00:T+1到账;01:D+1到账。示例:00 | |
fastPay | String(2) | N | 开通刷卡D0到账(0:不开通,1:开通)。示例:0 | |
codeAdvanceOpen | String(2) | N | 开通扫码D0到账(0:不开通,1:开通)。示例:0 注:默认为1开通费率取发起方配置的垫资费率,如为开通,则自动开通扫码快付业务权限 |
|
费率信息 openScan 为1时才 需要设置 此分类参数 |
POS扫码wechatSignRate | String(7) | Y | 微信签约费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45 |
wechatSignMin | String(13) | Y | 微信签约费率封底(单位:分)。如:封底0.01元,填写1 | |
alipaySignRate | String(10) | Y | 支付宝签约费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45 | |
alipaySignMin | String(20) | Y | 支付宝签约费率封底(单位:分)。如:封底0.01元,填写1 | |
alipayDebitSignRate | String(10) | N | 支付宝签约费率(最低:0.01%).借记(借贷记卡费率需同时上传才会生效) 如:0.01%,填写0.01 | |
alipayDebitSignMin | String(20) | N | 支付宝签约费率封底(单位:分).借记 如:0.01元,填写0.01 | |
alipayCreditSignRate | String(10) | N | 支付宝签约费率(最低:0.01%).贷记(借贷记卡费率需同时上传才会生效) 如:0.01元,填写0.01 | |
alipayCreditSignMin | String(10) | N | 支付宝签约费率封底(单位:分).贷记 如:0.01元,填写0.01 | |
creditRate1 | String(10) | Y | 银联一档(>1000):贷记卡费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45 | |
creditMin1 | String(20) | Y | 银联一档(>1000):贷记卡封底(单位:分)。如:封底0.01元,填写1 | |
debitRate1 | String(10) | Y | 银联一档(>1000):借记卡费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45 | |
debitMin1 | String(20) | Y | 银联一档(>1000):借记卡封底(单位:分)。如:封底0.01元,填写1 | |
debitMax1 | String(20) | Y | 银联一档(>1000):借记卡封顶(单位:分)。如:封顶99.99元,填写9999 | |
creditRate2 | String(10) | Y | 银联二档(<=1000):贷记卡费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45=1000):贷记卡费率(最低:0.01%),按百分比计费。 | |
creditMin2 | String(20) | Y | 银联二档(<=1000):贷记卡封底(单位:分)。如:封底0.01元,填写1=1000):贷记卡封底(单位:分)。 | |
debitRate2 | String(10) | Y | 银联二档(<=1000):借记卡费率(最低:0.01%),按百分比计费。如:费率为0.45%,填0.45=1000):借记卡费率(最低:0.01%),按百分比计费。 | |
debitMin2 | String(20) | Y | 银联二档(<=1000) :借记卡封底(单位:分)。如:封底0.01元,填写1=1000)> | |
debitMax2 | String(20) | Y | 银联二档(<=1000) :借记卡封顶(单位:分)。如:封顶99.99元,填写9999=1000)> | |
费率信息 开通了刷卡业务 (openPosp为1)并且 刷卡到账方式 (openBusRadio) 为00时,才需要 设置此分类参数 |
刷卡到账T+1t111Rate | String(10) | N | T+1到账-借记卡费率,openBusRadio=00则必填,按百分比计费。如:费率为0.01%,填0.01 |
t111RateTop | String(20) | N | T+1到账-借记卡费率封顶(单位:分),openBusRadio=00则必填。如:封顶99.99元,填写9999 | |
t111SignRateMin | String(20) | N | T+1到账-借记卡费率封底(单位:分),openBusRadio=00则必填。如:封底0.01元,填写1 | |
t112Rate | String(10) | N | T+1到账-贷记卡费率,openBusRadio=00则必填,按百分比计费。如:费率为0.01%,填0.01 | |
t112SignRateMin | String(20) | N | T+1到账-贷记卡费率封底(单位:分),openBusRadio=00则必填。如:封底0.01元,填写1 | |
费率信息 开通了刷卡业务 (openPosp为1)并且 刷卡到账方式 (openBusRadio) 为01时,才需要 设置此分类参数 |
刷卡到账D+1t11Rate | String(10) | N | D+1到账-借记卡费率,openBusRadio=01则必填,按百分比计费。如:费率为0.01%,填0.01 |
t11RateTop | String(20) | N | D+1到账-借记卡费率封顶(单位:分),openBusRadio=01则必填。如:封顶99.99元,填写9999 | |
t11SignRateMin | String(20) | N | D+1到账-借记卡费率封底(单位:分),openBusRadio=01则必填。如:封底0.01元,填写1 | |
t12Rate | String(10) | N | D+1到账-贷记卡费率,openBusRadio=01则必填,按百分比计费。如:费率为0.01%,填0.01 | |
t12SignRateMin | String(20) | N | D+1到账-贷记卡费率封底(单位:分),openBusRadio=01则必填。如:封底0.01元,填写1 | |
tAdvanceType | String(10) | N | D+1到账-垫资费类型(百分比、 元),openBusRadio=01则必填。示例:百分比 | |
tAdvanceFee | String(10) | N | D+1到账-垫资费,openBusRadio=01则必填。 tAdvanceType 为“百分比” 单位:元 如费率为0.01%,填0.01 tAdvanceType为“元” 单位:分 如:0.01元,填写1 |
|
tAdvanceMin | String(20) | N | D+1到账-垫资费封底(单位:分),tAdvanceType为“百分比”时必填。如:封底0.01元,填写1 | |
费率信息 开通了刷卡D0到账 (fastPay为1) 时,才需要 设置此分类参数 |
刷卡D0到账d011Rate | String(10) | N | D0到账-借记卡费率,fastPay为1必填。如费率为0.01%,填0.01 |
d011RateTop | String(20) | N | D0到账-借记卡费率封顶(单位:分),fastPay为1必填。如:99.99元,填写9999 | |
d011RateBottom | String(20) | N | D0到账-借记卡费率最低(单位:分),fastPay为1必填。如:0.01元,填写1 | |
d012Rate | String(10) | N | D0到账-贷记卡费率,fastPay为1必填。如费率为0.01%,填0.01 | |
d012RateBottom | String(20) | N | D0到账-贷记卡费率最低(单位:分),fastPay为1必填。如:0.01元,填写1 | |
d0AdvanceJsignType | String(10) | N | D0到账-借记卡垫资费类型(百分比、元),fastPay为1必填。示例:百分比 | |
d0AdvanceJsignFee | String(10) | N | D0到账-借记卡签约费率垫资费,fastPay为1必填。 d0AdvanceJsignType为“百分比” 单位:元 如费率为0.01%,填0.01 d0AdvanceJsignType为“元” 单位:分 如:0.01元,填写1 |
|
d0AdvanceJsignMin | String(20) | N | D0到账-借记卡垫资费封底(单位:分),fastPay为1必填。 | |
d0AdvanceJsignMax | String(20) | N | D0到账-借记卡垫资费封顶(单位:分),fastPay为1必填。如:99.99元,填写9999 | |
d0AdvanceDsignType | String(10) | N | D0到账-贷记卡垫资费类型(百分比、元)示例:百分比 | |
d0AdvanceDsignFee | String(10) | N | D0到账-贷记卡垫资费,fastPay为1必填。 d0AdvanceDsignType为“百分比” 单位:元 如费率为0.01%,填0.01 d0AdvanceDsignType为“元” 单位:分 如:0.01元,填写1 |
|
d0AdvanceDsignMin | String(20) | N | D0到账-贷记卡垫资费封底(单位:分),fastPay为1必填。 | |
d0AdvanceDsignMax | String(20) | N | D0到账-贷记卡垫资费封顶(单位:分),fastPay为1必填。如:99.99元,填写9999 | |
费率信息 开通了扫码D0到账 (codeAdvanceOpen为1) 时,才需要 设置此分类参数 |
扫码D0到账codeAdvanceRate | String(10) | N | 扫码垫资费费率,codeAdvanceOpen为1则必填,按百分比计费。如:费率为0.01%,填0.01 |
codeAdvanceMin | String(20) | N | 扫码垫资费费率最低值(单位:分),codeAdvanceOpen为1则必填。如:封底0.01元,填写1 | |
其他 | remark | String(500) | Y | 备注 |
expandingManager | String(50) | 拓展经理姓名 | ||
referrer | String(50) | N | 推荐人 |
5.响应参数说明
银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。
请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。
5.1、公共响应参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
ver | String(3) | Y | 版本号 固定值1.0 |
src | String(50) | Y | 由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753 |
msgCode | String(20) | Y | 接口代码 固定值Merchant |
method | String(30) | Y | 接口方法 固定值addScanMerchant |
signType | String(10) | Y | 报文签名算法,RSA、SM 注:应监管要求签名算法变更为国密,新接入商户请选择SM |
charset | String(10) | Y | 字符集 固定值UTF-8 |
reqFlowId | String(20) | Y | 请求流水号,示例值:202110011944011101 注意:该字段不参与签名 |
signValue | String | Y | 签名串,请参考”签名样例以及demo下载“。 |
data | String | Y | 业务参数(JSON数据) |
5.2、业务响应参数
data(JSON数据)
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
sysFlowId | String(50) | Y | 合作方系统流水 |
code | String(2) | Y | 返回码00-成功;50-超时;99-失败; |
note | String(100) | Y | 返回码说明,返回信息描述 |
6.示例
```java
public static String addScanMerc() throws Exception {
/* 1、外层公有请求参数赋值 /
Map
/** 2、业务参数data赋值: 业务参数说明详细见接口文档 */
/** -----------组装业务参数开始 设置为null相当于map里面没有put这个参数,只是做参数的参考,具体按自己业务设置对应字段的值-------------*/
Map<String,Object> dataparams = new HashMap<>();
dataparams.put("userShortName","张三科技");//商户简称 (商户模式为3时不用填)
dataparams.put("userType","0");//商户模式 0-个体商户;1-企业商户;3:小微商户,商户模式不同,上传的图片不同。详见上传图片接口
dataparams.put("coOperatorNo","801551099990303");//代理商编号
dataparams.put("certType","00");//证件类型 身份证 00(只支持00)
dataparams.put("actualManager","张三");//实际控制人
dataparams.put("mccCd","5533");//扫码报备所需商户类型 详情见附录7.2
dataparams.put("contactsPhone","12111111111");//联系人电话
dataparams.put("contactsEmail","10xxxxxxxx@qq.com");//联系人邮箱
dataparams.put("contactsName","张三");//联系人姓名
dataparams.put("contactsAddr","广东省深圳市龙华区");//联系人通讯地址
//法人信息
dataparams.put("legalPersonName","张三");//法人姓名
dataparams.put("legalPersonId","430626199301215716");//法人身份证号码
dataparams.put("legalPersonIdSdate","20201010");//法人身份证开始日期
dataparams.put("legalPersonIdEdate","20990505");//法人身份证到期日期
dataparams.put("legalPersonPhone","12111111111");//法人电话
dataparams.put("crpProfession","10");//法人职业
dataparams.put("crpNationality","中国");//法人国籍 选填(不填的话默认选择中国)
dataparams.put("crpGender","0");//法人性别
dataparams.put("crpAddr","广东省深圳市龙华区");//法人地址
//营业资质信息
dataparams.put("businessLicence","张三科技");//营业执照全称
dataparams.put("businessLicenceNo","5466xxxxxxxxxA");//营业执照号码
dataparams.put("businessLicenceSdate","20200101");//营业执照开始日期
dataparams.put("businessLicenceEdate","20990105");//营业执照结束日期
dataparams.put("registeredAddress","中国广东深圳");//注册地址 (商户模式为3时不用填)
//结算信息
dataparams.put("balanceAccType","11");//结算卡类型 11:对私借记卡( 结算卡正面照、结算卡反面照图片必传)21:对公账户( 有账户号面照片,开户许可证)23:对公存折( 只须有账户号面照片,开户许可证)24:单位结算卡( 结算卡正面照、 结算卡反面照图片必传)
dataparams.put("balanceAccCardno","62175123456789119");//结算卡号
dataparams.put("balanceAccName","张三");//结算户名
dataparams.put("bankMobile","15526201167");//银行预留手机号
dataparams.put("bankType","1041000");//开户行行别编号,规范详见附录 7.3
dataparams.put("bankName","中国银行");//开户行行别名称,规范详见附录 7.3
dataparams.put("openAccBanktype","104100005145");//开户行编号(支行),规范详见附录 7.3
dataparams.put("openAccBankname","中国银行股份有限公司北京复兴门支行");//开户行名称(支行),规范详见附录 7.3
dataparams.put("openAccProvince","广东省");//开户行省(如湖北省) 规范详见附录 7.8
dataparams.put("openAccCity","长沙市");//开户行市(如武汉市) 规范详见附录 7.8
dataparams.put("openAccArea","6412");//开户行区,规范详见附录 7.8
dataparams.put("lowestStlAmt","1");//结算起始金额 单位元
dataparams.put("codeLegalPersonAcc","1");//是否法人结算 0: 非法人结算 , 1: 法人结算
dataparams.put("unincorporatedName","张三");//非法人姓名
dataparams.put("unincorporatedId","430626199301215716");//非法人身份证号码
//门店信息
dataparams.put("mercUpId","826440357229AV8");//总店商户号 商户级别为分店时必填
dataparams.put("mercLvl","2");//商户级别 1 总店 2 分店(默认传总店、分店暂不支持)
dataparams.put("businessAddress","广东省深圳市xxxx大厦xx层");//营业地址
dataparams.put("mercProv","广东省");//商户归属省(如湖北省)规范详见附录 7.8
dataparams.put("mercCity","长沙市");//商户归属市(如武汉市)规范详见附录 7.8
dataparams.put("mercArea","龙华区");//商户归属区 规范详见附录 7.8
//支付业务信息
dataparams.put("openScan","0");//是否开通POS扫码业务0:不开通,1:开通
dataparams.put("openPosp","0");//是否开通刷卡业务0:不开通,1:开通
dataparams.put("openBusRadio","00");//到账方式 00:T+1到账 01:D+1到账 只能二选一
dataparams.put("fastPay","1");//是否开通D0
dataparams.put("codeAdvanceOpen","1");//是否开通扫码D0垫资费 0:不开通,1:开通
//todo pos扫码费率信息-----openScan为1时才需要设置以下参数
dataparams.put("wechatSignRate","22");//微信签约费率(最低:0.01%)
dataparams.put("wechatSignMin","1");//微信签约费率封底(单位:分)
dataparams.put("alipaySignRate","22");//支付宝签约费率(最低:0.01%)
dataparams.put("alipaySignMin","1");//支付宝签约费率封底(单位:分)
dataparams.put("creditRate1","55");//银联一档(>1000):贷记卡费率
dataparams.put("creditMin1","10");//银联一档(>1000):贷记卡封底.(单位:分)
dataparams.put("debitRate1","55");//银联一档(>1000):借记卡费率
dataparams.put("debitMax1","10000");//银联一档(>1000):借记卡封顶(单位:分)
dataparams.put("debitMin1","10");//银联一档(>1000):借记卡封底(单位:分)
dataparams.put("creditRate2","55");//银联二档(<=1000):贷记卡费率
dataparams.put("creditMin2","10");//银联二档(<=1000):贷记卡封底(单位:分)
dataparams.put("debitRate2","55");//银联二档(<=1000):借记卡费率
dataparams.put("debitMin2","10");//银联二档(<=1000):借记卡封底(单位:分
dataparams.put("debitMax2","10000");//银联二档(<=1000):借记卡封顶(单位:分)
//todo T+1到账费率信息-----开通了刷卡业务(openPosp为1)并且刷卡到账方式(openBusRadio)为00时,才需要设置以下参数
dataparams.put("t111Rate",null);//T+1到账-借记卡费率
dataparams.put("t111RateTop",null);//T+1到账-借记卡费率封顶(单位:分)
dataparams.put("t111SignRateMin",null);//T+1到账-借记卡费率封底(单位:分)
dataparams.put("t112Rate",null);//T+1到账-贷记卡费率
dataparams.put("t112SignRateMin",null);//T+1到账-贷记卡费率封底(单位:分)
//todo D+1到账费率信息-----开通了刷卡业务(openPosp为1)并且刷卡到账方式(openBusRadio)为01时,才需要设置以下参数
dataparams.put("t11Rate","0.01");//D+1到账-借记卡费率
dataparams.put("t11RateTop","100");//D+1到账-借记卡费率封顶(单位:分)
dataparams.put("t11SignRateMin","1");//D+1到账-借记卡费率封底(单位:分)
dataparams.put("t12Rate","0.01");//D+1到账-贷记卡费率
dataparams.put("t12SignRateMin","1");//D+1到账-贷记卡费率封底(单位:分)
dataparams.put("tAdvanceType","百分比");//D+1到账-垫资费类型(百分比、元)
dataparams.put("tAdvanceFee","10");//D+1到账-垫资费
dataparams.put("tAdvanceMin","10");//D+1到账-垫资费封底(单位:分)
//todo 刷卡D0到账费率信息-----开通了刷卡D0到账(fastPay)为1时,才需要设置以下参数
dataparams.put("d011Rate","0.01");//D0到账-借记卡费率
dataparams.put("d011RateTop","100");//D0到账-借记卡费率封顶(单位:分)
dataparams.put("d011RateBottom","10");//D0到账-借记卡费率最低(单位:分)
dataparams.put("d012Rate","0.01");//D0到账-贷记卡费率
dataparams.put("d012RateBottom","10");//D0到账-贷记卡费率最低(单位:分)
dataparams.put("d0AdvanceJsignType","百分比");//D0到账-借记卡签约费率垫资费类型(百分比;元)
dataparams.put("d0AdvanceJsignFee","10");//D0到账-借记卡签约费率垫资费
dataparams.put("d0AdvanceJsignMin","1");//D0到账-借记卡签约费率垫资费封底(单位:分)
dataparams.put("d0AdvanceJsignMax","100");//D0到账-借记卡签约费率垫资费封顶(单位:分)
dataparams.put("d0AdvanceDsignType","百分比");//D0到账-贷记卡签约费率垫资费类型(百分比;元)
dataparams.put("d0AdvanceDsignFee","10");//D0到账-贷记卡签约费率垫资费
dataparams.put("d0AdvanceDsignMin","1");//D0到账-贷记卡签约费率垫资费封底(单位:分)
dataparams.put("d0AdvanceDsignMax","100");//D0到账-贷记卡签约费率垫资费封顶(单位:分)
//todo 扫码D0到账费率信息-----开通了扫码D0到账(codeAdvanceOpen)为1时,才需要设置以下参数
dataparams.put("codeAdvanceRate","0.03");//垫资费费率 取值区间:0.01-99.99(开通扫码D0垫资费的话则必填)
dataparams.put("codeAdvanceMin","1");//垫资费费率最低值(单位:分)取值区间:1-999900(开通扫码D0垫资费的话则必填)
//其他
dataparams.put("remark","调用商户进件接口,身份/结算卡信息随便填写的,需要自己修改为自己的数据进行测试");//备注
dataparams.put("expandingManager","王五");//拓展经理姓名
/** 3、业务参数加密: 业务参数说明详细见接口文档 */
//加密密钥aeskey: 加密密钥证书入网申请后发放
String aesKey = "A81F41DE7406CC1566579A751D93CA7A";
String addMercData = JSONObject.toJSONString(dataparams);
String creData = DesUtil.encryptExtraData(aesKey, "UTF-8", addMercData);
params.put("data", creData);
/** 4、根据请求参数生成签名 */
//客户端私钥证书路径: 证书在入网流程中自己申请的
String privateKeyFilePath = "D:/data/yulong_666.pfx";
//客户端私钥密钥: 私钥密钥在入网流程中自己申请私钥证书时填写的
String privateKeyPassword = "123456";
String sign = YsfSignUtil.sign(params, privateKeyFilePath, privateKeyPassword);
params.put("signValue", sign);
//因为请求流水号(reqFlowId)不参与签名,在签名之后补充reqFlowId,请自己生成有意义的请求流水号
params.put("reqFlowId", String.valueOf(System.currentTimeMillis()));
/** 5、发送请求*/
//扫码服务商“商户进件”修改地址,具体以文档为准
String reqUrl = "https://appdev.ysepay.com/saas/org/addScanMerchant";
String result = HttpClientUtil.sendPostJson(reqUrl,JSONObject.toJSONString(params));
/** 6、结果验签 */
JSONObject jsonObject = JSONObject.parseObject(result);
// 获取签名串
String sinaValue = jsonObject.getString("signValue");
// 获取返回的业务参数(json数据)
String respData = jsonObject.getString("data");
Map<String, String> dataMap = null;
if(!StringUtil.isEmpty(respData)){
dataMap = JSONObject.parseObject(respData,Map.class);
}
//银盛公钥证书路径: 证书入网申请后发放
String ysPublicKeyFilePath = "D:/data/businessgate.cer";
//校验返回的业务参数是否与签名串匹配
boolean flag = YsfSignUtil.rsaCheckContent(dataMap,sinaValue,ysPublicKeyFilePath);
if(!flag){
throw new Exception("check sign error");
}
return result;
}
```{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}{"code":200,"message":"成功","data":null,"list":null}