商户扫码费率变更
1、修订记录
修订记录 |
日期 |
说明 |
作者 |
1.0 |
2021.11.10 |
初稿 |
朱龙玲 |
2、业务说明
(1)接口说明
扫码服务商商户进件成功后,需要变更商户的支付宝、微信、银联云闪付等扫码费率可以通过本接口实现,变更任何信息都需上传“商户信息变更申请表”。
3、请求地址
4、请求参数说明
4.1、公共请求参数
参数 |
类型(长度) |
必填 |
参数说明 |
ver |
String(3) |
Y |
版本号 固定值1.0 |
src |
String(50) |
Y |
由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753 |
msgCode |
String(20) |
Y |
接口代码 固定值Merchant |
method |
String(30) |
Y |
接口方法 固定值changeMerOnlineFee |
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数据明文字符串
参数 |
类型(字节长度) |
必填 |
参数说明 |
mercId |
String(20) |
Y |
银盛商户号 |
bankFee1 |
Object |
N |
银联一档(>1000)费率,参数详情 |
bankFee2 |
Object |
N |
银联二档(<=1000)费率,参数详情 |
wxAliFee |
Object |
N |
微信支付宝费率,参数详情 |
codeDOFeeVO |
Object |
N |
扫码快付垫资费, 参数详情 |
applicationContractType |
String |
N |
变更申请表类型 1=纸质 2=电子。注:2电子不需要上传变更申请表,为空则默认是纸质 |
4.3 银联云闪付一档费率具体参数(bankFee1)
参数 |
类型(字节长度) |
必填 |
参数说明 |
creditRate |
String(10) |
Y |
贷记卡费率,单位:1% 如:0.01%,填0.01 |
creditMin |
String(15) |
Y |
贷记卡封底,单位:分 如:0.01元,填写1 |
debitRate |
String(10) |
Y |
借记卡费率,单位:1% 如:0.01%,填0.01 |
debitMin |
String(15) |
Y |
借记卡封底,单位:分 如:0.01元,填写1 |
debitMax |
String(15) |
Y |
借记卡封顶,单位:分 如:99.99元,填写9999 |
4.4 银联云闪付二档费率具体参数(bankFee2)
参数 |
类型(字节长度) |
必填 |
参数说明 |
creditRate |
String(10) |
Y |
贷记卡费率,单位:1% 如:0.01%,填0.01 |
creditMin |
String(15) |
Y |
贷记卡封底,单位:分 如:0.01元,填写1 |
debitRate |
String(10) |
Y |
借记卡费率,单位:1% 如:0.01%,填0.01 |
debitMin |
String(15) |
Y |
借记卡封底,单位:分 如:0.01元,填写1 |
debitMax |
String(15) |
Y |
借记卡封顶,单位:分 如:99.99元,填写9999 |
4.5 微信、支付宝的扫码费率具体参数(wxAliFee)
参数 |
类型(字节长度) |
必填 |
参数说明 |
wechatSignRate |
String(10) |
Y |
微信签约费率,单位:1% 如:0.01%,填0.01 |
wechatSignMin |
String(15) |
Y |
微信签约费率封底,单位:分 如:0.01元,填写1 |
alipaySignRate |
String(10) |
Y |
支付宝签约费率,单位:1% 如:0.01%,填0.01 |
alipaySignMin |
String(15) |
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(20) |
N |
支付宝签约费率封底,单位:分.贷记 如:0.01元,填写0.01 |
4.6 扫码快付垫资费(codeDOFeeVO)
参数 |
类型(字节长度) |
必填 |
参数说明 |
codeAdvanceRate |
String(10) |
Y |
扫码快付垫资费费率,单位:1% 如:0.01%,填0.01 |
codeAdvanceMin |
String(15) |
Y |
扫码快付垫资费封底,单位:分 如:0.01元,填写1 |
5.响应参数说明
银盛支付对商户的请求数据处理完成后,会将处理的结果数据同步回执给商户。
请注意:银盛后期会对返回参数保留扩展的权力,扩展方式为新增参数但不会删除参数,请商户在解析银盛返回参数时要支持银盛可能扩展参数这种情况。
5.1、公共响应参数
参数 |
类型(长度) |
必填 |
参数说明 |
ver |
String(3) |
Y |
版本号 固定值1.0 |
src |
String(50) |
Y |
由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753 |
msgCode |
String(20) |
Y |
接口代码 固定值Merchant |
method |
String(30) |
Y |
接口方法 固定值changeMerOnlineFee |
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数据)
参数 |
类型(字节长度) |
必填 |
参数说明 |
changeFlowId |
String(50) |
N |
合作方系统变更流水,00-成功时返回 |
code |
String(2) |
Y |
返回码(00-成功;50-超时;99-失败) |
note |
String(100) |
Y |
返回码说明,返回信息描述 |
6.示例
```java
public static String changeMerOnlineFee() throws Exception {
/* 1、外层公有请求参数赋值 /
Map params = new HashMap();
params.put("ver", "1.0");//固定值1.0
params.put("msgCode", "Merchant");//接口代码,详见文档
params.put("method", "changeMerOnlineFee");;//接口方法,详见文档
params.put("src","ORG20210927162704");// 由银盛生成的接入机构号,请联系银盛客户经理获取
params.put("signType", "RSA");//固定值RSA
params.put("charset", Constants.CHARSET_UTF_8);//固定值UTF-8
/** 2、业务参数data赋值: 业务参数说明详细见接口文档 */
/** -----------组装业务参数开始 设置为null相当于map里面没有put这个参数,只是做参数的参考,具体按自己业务设置对应字段的值-------------*/
Map<String,Object> dataparams = new HashMap<>();
dataparams.put("mercId","826690041210008");//银盛商户号
//微信支付费率
Map<String,Object> wxAliFeeMap = new HashMap<>();
wxAliFeeMap.put("wechatSignRate","5");//微信签约费率 单位:1%
wxAliFeeMap.put("wechatSignMin","200");//微信签约费率封底 单位:分
wxAliFeeMap.put("alipaySignRate","5");//支付宝签约费率 单位:1%
wxAliFeeMap.put("alipaySignMin","200");//付宝签约费率封底 单位:分
dataparams.put("wxAliFee",wxAliFeeMap);
//银联一档(>1000)费率
Map<String,Object> bankFee1Map = new HashMap<>();
bankFee1Map.put("creditRate","5");//贷记卡费率
bankFee1Map.put("debitMin","200");//借记卡封底
bankFee1Map.put("debitRate","5");//借记卡费率
bankFee1Map.put("debitMax","1000");//借记卡封顶
bankFee1Map.put("creditMin","200");//贷记卡封底
dataparams.put("bankFee1",bankFee1Map);
//银联二档(<=1000)费率
Map<String,Object> bankFee2Map = new HashMap<>();
bankFee2Map.put("creditRate","5");//贷记卡费率
bankFee2Map.put("debitMin","200");//借记卡封底
bankFee2Map.put("debitRate","5");//借记卡费率
bankFee2Map.put("debitMax","1000");//借记卡封顶
bankFee2Map.put("creditMin","200");//贷记卡封底
dataparams.put("bankFee2",bankFee2Map);
/** 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/changeMerOnlineFee";
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}