开通、关闭或修改D1到账
1、修订记录
修订记录 | 日期 | 说明 | 作者 |
---|---|---|---|
1.0 | 2021.11.10 | 初稿 | 朱龙玲 |
2、业务说明
(1)接口说明
调用此接口前,需要先通过”设置交易费率和权限“接口设置费率信息和权限,本接口调用成功后商户的交易资金会天天到账(D1),此接口可根据实际业务场景选择性调用。
D1到账的生效时效说明:
- 开通D1到账接口,不会立即生效,而是在次日生效,当天交易到账方式仍按原有方式到账
- 关闭D1到账接口,请在D1到账生效日期之后再次调用,D1到账失效将在次日失效,当天交易仍按D1方式到账。
环境 | HTTPS请求地址 |
---|---|
测试环境 | https://appdev.ysepay.com/saas/orgScan/optOnlineD1 |
正式环境 | https://ouser.ysepay.com:6443/saas/orgScan/optOnlineD1 |
4、请求参数说明
4.1、公共请求参数
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
ver | String(3) | Y | 版本号 固定值1.0 |
src | String(50) | Y | 由银盛生成的接入机构号,请联系银盛客户经理获取。示例值:ORG20210427160753 |
msgCode | String(20) | Y | 接口代码 固定值Merchant |
method | String(30) | Y | 接口方法 固定值optOnlineD1 |
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 | 银盛商户号 |
opType | String(1) | Y | 操作类型。0-关闭 1-开通 2-修改 |
d1AdvanceType | String(2) | Y | 垫资费收取方式。1按百分比收取, 2按固定金额收取 |
feeRate | String(10) | Y | 按百分比收取时-垫资手续费费率(单位%)。当d1AdvanceType=1按百分比收取,必填;示例0.05表示0.05% |
minFeeOnRate | String(10) | Y | 按百分比收取时-垫资最低金额(单位分)。当d1AdvanceType=1按百分比收取,必填;单位:分,必填;如:0.01元,填写1 |
fixFee | String(10) | Y | 按固定金额收取时-固定垫资手续费(单位分)。当d1AdvanceType=2按固定金额收取,必填;单位:分,必填;示例如: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 | 接口方法 固定值optOnlineD1 |
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数据)
参数 | 类型(字节长度) | 必填 | 参数说明 |
---|---|---|---|
code | String(2) | Y | 返回码(00-成功;50-超时;99-失败) |
note | String(100) | Y | 返回码说明(通信状态) |
6.示例
```java
public static String optOnlineD1() throws Exception {
/* 1、外层公有请求参数赋值 /
Map
/** 2、业务参数data赋值: 业务参数说明详细见接口文档 */
/** -----------组装业务参数开始 设置为null相当于map里面没有put这个参数,只是做参数的参考,具体按自己业务设置对应字段的值-------------*/
Map<String,Object> dataparams = new HashMap<>();
dataparams.put("mercId","826690041210008");//银盛商户号
dataparams.put("opType","1");//操作类型。1-开通 0-关闭
//按照百分比收取垫资手续费
dataparams.put("d1AdvanceType", "1");//按百分比收取垫资手续费
dataparams.put("feeRate", "2.5");//垫资手续费率为2.5% d1AdvanceType =1 时有效
dataparams.put("minFeeOnRate", "100");//最低垫资手续费 100分即 1元 d1AdvanceType =1 时有效
/**
dataparams.put("d1AdvanceType", "2");//按固定金额收取垫资手续费 d1AdvanceType =2 时有效
dataparams.put("fixFee", "10");//固定垫资手续费为10分即0.1元
*/
/** 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/orgScan/optOnlineD1";
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}