Commit ec249ccd authored by 黎博's avatar 黎博

新增加密和返回类型判断

parent 20e71a04
......@@ -15,7 +15,18 @@ public class Mock {
private String description;
private String success;
private String fail;
/**
* 0-返回失败,1-返回成功
*/
private Integer flag;
/**
* 0-不加密,1-加密
*/
private Integer encrypt;
/**
* 1-json,2-字符串
*/
private Integer type;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
......
......@@ -69,6 +69,12 @@ public class YeebaoInterceptor implements HandlerInterceptor {
return map;
}
/**
* 解析从数据库获取的响应,赋对应的值
* @param requestMap
* @param responseMap
* @return
*/
public Map<String, Object> handleResponseMap(Map<String, Object> requestMap, Map<String, Object> responseMap) {
for (Map.Entry<String, Object> entry: responseMap.entrySet()) {
if (entry.getValue() instanceof List) {
......@@ -103,13 +109,59 @@ public class YeebaoInterceptor implements HandlerInterceptor {
SwitchDataSource.dataSourceSwitch(namespace, "qa");
String uri = request.getRequestURI().substring(5);
Map<String, String[]> parameterMap = request.getParameterMap();
log.info("打印请求参数:{}", parameterMap);
QueryWrapper<Mock> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("url", uri);
Mock mock = mockMapper.selectOne(queryWrapper);
response.setHeader("Content-type", "application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
// PrintWriter printWriter = response.getWriter();
Map<String, Object> requestMap;
Map<String, Object> responseMap = new HashMap<>();
String responseStr = null;
if (mock.getFlag().equals(1)) {
if (mock.getType() == 2) {
responseStr = mock.getSuccess();
} else if (mock.getType() == 1) {
responseMap = JsonTransUtils.strToMap(mock.getSuccess());
}
} else if (mock.getFlag().equals(0)) {
if (mock.getType() == 2) {
responseStr = mock.getSuccess();
} else if (mock.getType() == 1) {
responseMap = JsonTransUtils.strToMap(mock.getSuccess());
}
}
if (mock.getEncrypt() == 1) {
EncryptConvertor encryptConvertor = EncryptFactory.produce("yeebao");
requestMap = JsonTransUtils.strToMap(encryptConvertor.decrypt(JsonTransUtils.mapToJson(requestMapTrans(parameterMap))));
// 针对 /tzt-api/api/bankcard/check 接口特殊处理
if (uri.equals("/tzt-api/api/bankcard/check")) {
String cardNo = requestMap.get("cardno").toString();
String merchantno = requestMap.get("merchantno").toString();
responseMap = getBankcardCheckResponse(cardNo, merchantno);
modifyResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
return true;
}
if (uri.equals("/tzt-api/api/bindcard/confirm")) {
responseMap.put("bankcode", "ABC");
modifyResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
return true;
}
// 判断返回是字符串还是json,1-字符串,2-json
if (mock.getType() == 1) {
modifyResponse(response, encryptConvertor.encrypt(responseStr));
return true;
} else if (mock.getType() == 2) {
responseMap = handleResponseMap(requestMap, responseMap);
if (uri.equals("/tzt-api/api/bindcard/request")) {
requestMap.put("yborderid", "TZAUba0c7b8" + requestMap.get("requestno") + "95c929ca802e");
}
modifyResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)), "application/json; charset=utf-8");
return true;
}
} else if (mock.getEncrypt() == 0) {
if (uri.equals("/tzt-api/api/divide/record")) {
responseStr = "{\"dividelist\":[{\"divideamount\":\"0.01\",\"dividevalue\":\"0.01\",\"dividemode\":\"AMOUNT\",\"ledgerno\":\"10000449633\"}],\"errorcode\":\"\",\"errormsg\":\"\",\"free1\":\"\",\"free2\":\"\",\"free3\":\"\",\"merchantno\":\"10000449592\",\"requestno\":\"67467179200514\",\"sign\":\"RzhX1vUEQp1nI5lDCeroMr0VgOJ1pQknwN++Y7oyTUAvHErLUtZcNQulCUlh3iwlzRHWL5uJain6NQ79Z2T38MZ8hqDohpReFH31YMWoDytJJpS5B2zLTVZIyHq4GmjmS/HXDpvZnMgoZibOESLsKLbS7dTnhdxy8ceDliJhBQ4=\",\"status\":\"DIVIDE_SUCCESS\",\"yborderid\":\"TZNC19ec1bd4222e489c9409854452b31138\"}";
modifyResponse(response, responseStr);
return true;
}
// 针对 /balance-board/transfer 接口特殊处理
if (uri.equals("/balance-board/transfer")) {
BufferedReader br = request.getReader();
......@@ -133,68 +185,51 @@ public class YeebaoInterceptor implements HandlerInterceptor {
//放款结果查询的返回值
transferResponse = "<data><cmd>BatchDetailQuery</cmd><hmac>MIIE6QYJKoZIhvcNAQcCoIIE2jCCBNYCAQExCzAJBgUrDgMCGgUAMC8GCSqGSIb3DQEHAaAiBCA2ZWU1ODE3Y2UwNDg4NDczNmJlNWFlNGM0MDViZGNlYaCCA7EwggOtMIIDFqADAgECAhAuyfCgPbMcigfvVyGazeQRMA0GCSqGSIb3DQEBBQUAMCQxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxDRkNBIFRFU1QgQ0EwHhcNMTExMTI4MDcwOTUzWhcNMTMxMTI4MDcwOTUzWjBzMQswCQYDVQQGEwJDTjEVMBMGA1UEChMMQ0ZDQSBURVNUIENBMQ8wDQYDVQQLEwZZRUVQQVkxEjAQBgNVBAsTCUN1c3RvbWVyczEoMCYGA1UEAxQfMDQxQFoxMjNxd2VAemhpd2VuLm1laUAwMDAwMDAwMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzrITNElBaFF7xPXtPguWeTnGOI1gVMMkUDI57ZQz+Gg9PPcfF+ExrtDgMQEOwfRs7X4XiraPE2l6ub0Xkpl0ftu8ELnii91wUKAqsvp88NIdAdLQnC7PeveWlquVSAf//2WtAkdBI7xnhXaL/ObUkhHheT0aR5miYmDyLAkTBj8CAwEAAaOCAY8wggGLMB8GA1UdIwQYMBaAFEZy3CVynwJOVYO1gPkL2+mTs/RFMB0GA1UdDgQWBBS0k6A7ZSwLRwbIhFsgcChrYd27PDALBgNVHQ8EBAMCBaAwDAYDVR0TBAUwAwEBADA7BgNVHSUENDAyBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDBAYIKwYBBQUHAwgwgfAGA1UdHwSB6DCB5TBPoE2gS6RJMEcxCzAJBgNVBAYTAkNOMRUwEwYDVQQKEwxDRkNBIFRFU1QgQ0ExDDAKBgNVBAsTA0NSTDETMBEGA1UEAxMKY3JsMTI2XzE5NDCBkaCBjqCBi4aBiGxkYXA6Ly90ZXN0bGRhcC5jZmNhLmNvbS5jbjozODkvQ049Y3JsMTI2XzE5NCxPVT1DUkwsTz1DRkNBIFRFU1QgQ0EsQz1DTj9jZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0P2Jhc2U/b2JqZWN0Y2xhc3M9Y1JMRGlzdHJpYnV0aW9uUG9pbnQwDQYJKoZIhvcNAQEFBQADgYEAKX4CXCPQEE4RWGsZTXZXLBct2gcPYEjqpgPZ5ERiUrYLTDGuIT90ECfSoxCrcTJEeY7EJBojig9gLRoMn/4xXW/XscGarQ3XxyZw8VxTMFkotuUkAPoaacYlIrc34t2DR0DqvU6umgFL3yTMYxl5WLjOh47OH7Aw7VPscmrtzEIxgd0wgdoCAQEwODAkMQswCQYDVQQGEwJDTjEVMBMGA1UEChMMQ0ZDQSBURVNUIENBAhAuyfCgPbMcigfvVyGazeQRMAkGBSsOAwIaBQAwDQYJKoZIhvcNAQEBBQAEgYCD/g83n6KyattYAEPqff/9z613+4AaZDHVxY9xEb3lBGRRosVQptgkZItEc9cM2Em/o9GfV/mqj5T6CP5glvbbtFnrz2Z0GGNbDR/gqOIPhpACRZozZipwUeQESVhRCiCJa4sPuoEkgSSq5XvL5nIvAxc59DeKWIv/LGqYq9dK8Q==</hmac><ret_Code>1</ret_Code><batch_No>' + batchNo + '</batch_No><total_Num>1</total_Num><end_Flag>Y</end_Flag><list><items><item><remarksInfo></remarksInfo><amount>0.01</amount><fee></fee><abstractInfo>提现打款</abstractInfo><note/><order_Id>PAYMENT78162155286528</order_Id><payee_Bank_Account>1506213009022200623</payee_Bank_Account><refund_Date></refund_Date><real_pay_amount>0.01</real_pay_amount><payee_BankName>工商银行</payee_BankName><complete_Date>2020-01-16 18:20:09</complete_Date><request_Date>2020-01-16 18:20:08</request_Date><payee_Name>蒋素霞</payee_Name><bank_Status>S</bank_Status><r1_Code>0026</r1_Code><fail_Desc></fail_Desc></item></items></list></data>";
}
// printWriter.write(transferResponse);
returnResponse(response, transferResponse);
modifyResponse(response, transferResponse);
return false;
}
// 对request进行解密
EncryptConvertor encryptConvertor = EncryptFactory.produce("yeebao");
Map<String, Object> requestMap = JsonTransUtils.strToMap(encryptConvertor.decrypt(JsonTransUtils.mapToJson(requestMapTrans(parameterMap))));
Map<String, Object> responseMap = new HashMap<>();
// 针对 /tzt-api/api/bankcard/check 接口特殊处理
if (uri.equals("/tzt-api/api/bankcard/check")) {
String cardNo = requestMap.get("cardno").toString();
String merchantno = requestMap.get("merchantno").toString();
responseMap = getBankcardCheckResponse(cardNo, merchantno);
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
if (mock.getType() == 1) {
modifyResponse(response, responseStr);
return true;
}
if (uri.equals("/tzt-api/api/bindcard/confirm")) {
responseMap.put("bankcode", "ABC");
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
} else if (mock.getType() == 2) {
modifyResponse(response, JsonTransUtils.mapToJson(responseMap));
return true;
}
if (uri.equals("/tzt-api/api/divide/record")) {
String responseStr = "{\"dividelist\":[{\"divideamount\":\"0.01\",\"dividevalue\":\"0.01\",\"dividemode\":\"AMOUNT\",\"ledgerno\":\"10000449633\"}],\"errorcode\":\"\",\"errormsg\":\"\",\"free1\":\"\",\"free2\":\"\",\"free3\":\"\",\"merchantno\":\"10000449592\",\"requestno\":\"67467179200514\",\"sign\":\"RzhX1vUEQp1nI5lDCeroMr0VgOJ1pQknwN++Y7oyTUAvHErLUtZcNQulCUlh3iwlzRHWL5uJain6NQ79Z2T38MZ8hqDohpReFH31YMWoDytJJpS5B2zLTVZIyHq4GmjmS/HXDpvZnMgoZibOESLsKLbS7dTnhdxy8ceDliJhBQ4=\",\"status\":\"DIVIDE_SUCCESS\",\"yborderid\":\"TZNC19ec1bd4222e489c9409854452b31138\"}";
returnResponse(response, responseStr);
}
return true;
}
if (mock.getFlag().equals(1)) {
responseMap = JsonTransUtils.strToMap(mock.getSuccess());
} else if (mock.getFlag().equals(0)) {
responseMap = JsonTransUtils.strToMap(mock.getFail());
}
// 如果response中存在变量,则使用requestMap中对应变量进行替换
// for (Map.Entry<String, Object> entry: responseMap.entrySet()) {
// String value = (String) entry.getValue();
// if (value.startsWith("$request")) {
// entry.setValue(requestMap.get(value.split("\\.")[1]));
// }
// if (uri.equals("/tzt-api/api/bindcard/request")) {
// requestMap.put("yborderid", "TZAUba0c7b8" + requestMap.get("requestno") + "95c929ca802e");
// }
// }
responseMap = handleResponseMap(requestMap, responseMap);
if (uri.equals("/tzt-api/api/bindcard/request")) {
requestMap.put("yborderid", "TZAUba0c7b8" + requestMap.get("requestno") + "95c929ca802e");
/**
* 修改返回响应
* @param response HttpServletResponse
* @param result 返回的json或字符串
*/
private void modifyResponse(HttpServletResponse response, String result) {
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
// response.setContentType("application/json; charset=utf-8");
try {
writer = response.getWriter();
writer.print(result);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (writer != null) {
writer.close();
}
}
// 对response加密
// printWriter.write(encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
returnResponse(response, encryptConvertor.encrypt(JsonTransUtils.mapToJson(responseMap)));
return true;
}
/**
*
* @param response
* @param result
* 修改返回响应
* @param response HttpServletResponse
* @param result 返回的json或字符串
* @param contentType content-type
*/
private void returnResponse(HttpServletResponse response, String result) {
private void modifyResponse(HttpServletResponse response, String result, String contentType) {
PrintWriter writer = null;
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
response.setContentType(contentType);
try {
writer = response.getWriter();
writer.print(result);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment