商户进件结果通知
1、修订记录
修订记录 | 日期 | 说明 | 作者 |
---|---|---|---|
1.0 | 2021.11.10 | 初稿 | 薛晨 |
2、业务说明
(1)接口说明
商户进件信息调用审核,银盛支付会通过本接口将审核结果异步通知调用方;注:异步通知地址由用户方提供
3、异步通知参数说明
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
check | String | Y | aseKey 经过国密加密的字符串,用于对data部分数据进行解密 |
data | String | Y | 业务参数(des加密成密文字符串) |
signValue | String | Y | 签名串,请参考"签名样例以及demo下载"。 |
4、通知业务参数(data加密前的json数据明文字符串):
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
notifyType | String(2) | Y | 通知类别: 00:进件通知 01:报备通知 02:变更通知 如:00 |
status | String(2) | Y | 状态: 00:成功 10:转人工审核 20:人工审核通过,待签约 90:审核拒绝 97:变更失败 98:报备失败 如:00 |
urm | String | Y | notifyType 为 00 时返回(JSON数据)参数详情 |
report | String | Y | notifyType 为 01 时返回(JSON数据)参数详情 |
change | String | Y | notifyType 为 02 时返回(JSON数据)参数详情 |
4.1 通知业务参数urm(JSON数据)
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
sysFlowId | String(32) | Y | 合作方系统流水(商户进件接口返回) 示例:12202110111409447515387 |
mercId | String(20) | N | 银盛商户号 开户成功时返回 |
custId | String(32) | N | 客户编号 开户成功时返回 |
mercCnm | String(60) | N | 商户名称 开户成功时返回 |
mercAbbr | String(20) | N | 商户简称 开户成功时返回 |
coOperatorNo | String(20) | N | 银盛商户所属代理商编号 开户成功时返回 |
signUrl | String(32) | N | 签约地址URL status为20时,转人工审核后人工初审通过时。返回 |
sysSignFlowId | String(50) | N | 合作方系统签约流水 status为20时,转人工审核后人工初审通过时。返回 |
noticeType | String(20) | N | 通知类型 审核拒绝/开户成功返回 |
nogoRemark | String(200) | N | 拒绝说明 审核拒绝时返回 |
4.2 通知业务参数report(JSON数据)
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
sysFlowId | String(32) | Y | 合作方系统流水(商户进件接口返回) 示例:12202110111409447515387 |
nogoRemark | String(200) | N | 报备备注 |
thridMercList | JSONArray | N | 第三方商户号列表 参数详情 |
4.2.1 第三方商户号对象(json 数据 key: thridMercLis):
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
apprSts | String | Y | 报备状态: 00:报备成功 03:报备失败 04:交易失败 如:00 |
remark | String | Y | 报备备注 |
type | String | N | 银联网联标识: CUPS:银联 NUCC:网联 如:NUCC |
flag | String | N | 微信支付宝标识: wx:微信 alipay:支付宝 如:alipay |
thirdMercId | String | Y | 第三方商户号 |
alipayLevel | String | Y | 支付宝等级 |
4.3 通知业务参数change(JSON数据):
参数 | 类型(长度) | 必填 | 参数说明 |
---|---|---|---|
changeFlowId | String(50) | Y | 合作方系统变更流水(变更接口返回) 示例:12202110111409447515387 |
noticeType | String(50) | Y | 审核拒绝/变更失败/变更成功 |
nogoRemark | String(200) | N | 变更备注 |
mercId | String(20) | N | 业务商户号,成功时,返回 |
mercCnm | String(60) | N | 商户名称,成功时,返回 |
4、接收异步通知样例
@Test
public void test() throws Exception {
String result = "{\"check\":\"MIH/BgoqgRzPVQYBBAIDoIHwMIHtAgECMYGpMIGmAgECgBSQ6DBK/PZV77Tg4qGyL7tyzqaIhTANBgkqgRzPVQGCLQMFAAR8MHoCIQDTcSf/c9qLEQAHT1Bg+GN+auZd9xn0lYu8x0nBM/mPgQIhAJ/E6I0YBK84QfEZHpaH0lO0/axQPImdpnfJdgPwwmPyBCDSep7ZgeU26/57Eghod2bG4esfFwOSlAhBjk3KcF+wIwQQ44pMMOZKAMEPhsb2ZcwHJDA8BgoqgRzPVQYBBAIBMAwGCCqBHM9VAWgBBQCAIOqBmGAFFBEuXNkyT1pMyEvtsES2xpdDexftqIvnfk0G\",\"data\":\"D5pKKpC2TsSeEuCDe630qShq7vKSB5iO+9NSouS2miDoOHVeRyYrhqxoM4b91DE638A4gP7KIZcqoeq/Qg9OP4fGTL00dl8ibtJhojHKacICw3ahvwZxMami7ltSLs2SAW60Ni+sfKngQ5aJbVXjrJ7vkVCA+pCD+/jDVv/aJyDhYqFEMi5MviVHkhqClnDIiebE5tgqEdQW913O0AnydRC6jczFzosclL4OTm3tr4HOl8RHKUSlarXsJJj+KVEFwZuqTInLY86IOBUCFIAZ6blN2ItxWY9lAGmBsI3Rqx1mWxFLtr3esA3boNwesSdmLmmxtSWCPkvM1iy+THFnhM5IK8L+8fRO/hhG8cxwNusUn+z8nMXugp0ICR/q5nK3\",\"signValue\":\"MEYCIQCFzA4SsuW45N4Mx6eq8ouHMmaC5gmUBIZcuybuMlyDhQIhAOMzKzWJFflZe/r2RdiSe9Mm3qqOqXsiaxVEjjyUVxol \"}";
JSONObject resultO = JSON.parseObject(result);
Map<String, String> resultMap = new HashMap<>();
resultO.forEach((k, v) -> {
resultMap.put(k, v.toString());
});
String sign = resultMap.get("signValue");
resultMap.remove("signValue");
byte[] array = IOUtils.toByteArray(new FileInputStream(ysPublicKeyPath));
boolean checkSign = CheckSignUtil.gmsM2CheckContent(resultMap, sign, array, "UTF-8");
System.out.println("验签结果:" + checkSign);
String cerData = resultMap.get("data");
byte[] base64Data = Base64.decodeBase64(cerData);
String check = resultMap.get("check");
String randomAesKey = GMSignUtils.decryptData(privateKeyPath, publicKeyPath, check.getBytes(StandardCharsets.UTF_8), "ys123456");
System.out.println("randomAesKey:" + randomAesKey);
byte[] aesData = AESUtil.decrypt(base64Data, randomAesKey.getBytes(StandardCharsets.UTF_8));
System.out.println("data解密:" + new String(aesData));
}
{"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}