From 2d25e2703cf90f5326765dab9938b52f64ada345 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 13 Aug 2024 09:14:53 +0800 Subject: [PATCH] 'commit' --- ZhuQue/pom.xml | 7 +- .../com/dsideal/ZhuQue/Util/SignUtils.java | 83 ++++++++++++++++++ .../ZhuQue/Ylt/Controller/YltController.java | 18 ++-- .../dsideal/ZhuQue/Ylt/Model/YltModel.java | 10 ++- ...外统一标准接口_充电桩抵扣.docx | Bin 0 -> 162 bytes ...特收到的需求、分析与现状.docx | Bin 564946 -> 565203 bytes ...标准接口(收费系统)文档254.docx | Bin 0 -> 162 bytes 7 files changed, 104 insertions(+), 14 deletions(-) create mode 100644 ZhuQue/src/main/java/com/dsideal/ZhuQue/Util/SignUtils.java create mode 100644 业务梳理/~$对外统一标准接口_充电桩抵扣.docx create mode 100644 资料/~$对外统一标准接口(收费系统)文档254.docx diff --git a/ZhuQue/pom.xml b/ZhuQue/pom.xml index 93afff8..daa0b8b 100644 --- a/ZhuQue/pom.xml +++ b/ZhuQue/pom.xml @@ -75,7 +75,12 @@ 2.4 jdk15 - + + + com.google.guava + guava + 21.0 + diff --git a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Util/SignUtils.java b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Util/SignUtils.java new file mode 100644 index 0000000..94b8e46 --- /dev/null +++ b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Util/SignUtils.java @@ -0,0 +1,83 @@ +package com.dsideal.ZhuQue.Util; + +import com.alibaba.fastjson.JSONObject; +import com.google.common.base.Joiner; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Map; +import java.util.TreeMap; + +/** + * 签名工具 + * + * @author keytop + * @date 2020/3/6 + */ +public class SignUtils { + /** + * 参数签名 + * 示例: + * 参数对象:{"amount":100,"orderNo":"闽C12345","payTime":"2020-03-06 10:57:22","freeDetail":"[{\"code\":\"\",\"money\":100,\"time\":0,\"type\":0}]","paySource":"85d15350778b11e9bbaa506b4b2f6421","outOrderNo":"T20200306124536001","parkId":"1000001","payableAmount":200,"reqId":"5be4e3e6d5704a7d91ccbd9731d970f5","payType":1006,"payMethod":6,"appId":"85d15350778b11e9bbaa506b4b2f6421","freeTime":0,"paymentExt":"{\"deviceNo\":\"123456\"}","freeMoney":100,"ts":1583744086841} + * url拼接:amount=100&freeDetail=[{"code":"","money":100,"time":0,"type":0}]&freeMoney=100&freeTime=0&orderNo=闽C12345&outOrderNo=T20200306124536001&parkId=1000001&payMethod=6&paySource=85d15350778b11e9bbaa506b4b2f6421&payTime=2020-03-06 10:57:22&payType=1006&payableAmount=200&paymentExt={"deviceNo":"123456"}&reqId=5be4e3e6d5704a7d91ccbd9731d970f5&ts=1583744086841&EED96C219E83450A + * 签名结果:B19F7863ADCC8B5442A757AC7B90F6AC + * + * @param requestBody 参数对象 + * @param appSecret 秘钥 + * @return + */ + public static String paramsSign(JSONObject requestBody, String appSecret) { + TreeMap params = new TreeMap<>(); + //过滤掉key,appId字段,空属性及Map或List等复杂对象 + requestBody.entrySet().stream().filter( + p -> !"key".equals(p.getKey()) + && !"appId".equals(p.getKey()) + && p.getValue() != null + && !(p.getValue() instanceof Map) + && !(p.getValue() instanceof Iterable)) + .forEach(p -> { + if (!p.getValue().equals("")) { + params.put(p.getKey(), p.getValue().toString()); + } + }); + //拼接appSecret + String temp = Joiner.on("&").withKeyValueSeparator("=").join(params).concat("&").concat(appSecret); + return md5(temp).toUpperCase(); + } + + /** + * 对文本执行 md5 摘要加密, 此算法与 mysql,JavaScript生成的md5摘要进行过一致性对比. + * + * @param plainText + * @return 返回值中的字母为小写 + */ + private static String md5(String plainText) { + if (null == plainText) { + plainText = ""; + } + String mD5Str = null; + try { + // JDK 支持以下6种消息摘要算法,不区分大小写 + // md5,sha(sha-1),md2,sha-256,sha-384,sha-512 + MessageDigest md = MessageDigest.getInstance("MD5"); + md.update(plainText.getBytes(StandardCharsets.UTF_8)); + byte[] b = md.digest(); + int i; + StringBuilder builder = new StringBuilder(32); + for (byte value : b) { + i = value; + if (i < 0) { + i += 256; + } + if (i < 16) { + builder.append("0"); + } + builder.append(Integer.toHexString(i)); + } + mD5Str = builder.toString(); + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + return mD5Str; + } +} diff --git a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java index 1e198fa..4768e84 100644 --- a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java +++ b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Controller/YltController.java @@ -4,6 +4,7 @@ import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.dsideal.ZhuQue.Interceptor.IsLoginInterface; import com.dsideal.ZhuQue.Util.CommonUtil; +import com.dsideal.ZhuQue.Util.SignUtils; import com.dsideal.ZhuQue.Ylt.Model.YltModel; import com.jfinal.aop.Before; import com.jfinal.core.Controller; @@ -43,15 +44,14 @@ public class YltController extends Controller { @Before({POST.class}) @IsLoginInterface({}) // 非指定闸机场地 - // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_id=1 + // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_no=2020092315154430479 // 科拓闸机场地 - // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_id=248933 + // http://10.10.21.20:8888/ZhuQue/Ylt/SyncChargePilePay?order_no=2022012911045715187 public void SyncChargePilePay(String order_no) { //根据订单号获取到第三方方面提供的车场信息 Record thirdPartyStation = ym.getThirdPartyStation(order_no); if (thirdPartyStation == null) { - Record record = new Record(); - renderJson(CommonUtil.getRet(record, false, "检查到不是需要免费的道闸所在车场,无需发送减免消息!!")); + renderJson(CommonUtil.getRet(false, "检查到不是需要免费的道闸所在车场,无需发送减免消息!!")); return; } //请求地址 @@ -59,7 +59,7 @@ public class YltController extends Controller { //与科拓对接,对方平台分配的我司平台ID String appId = thirdPartyStation.getStr("third_party_appId"); //与科拓对接,对方平台分配的我司平台秘钥 - String key = thirdPartyStation.getStr("third_party_key"); + String appSecret = thirdPartyStation.getStr("third_party_key"); //闸机提供商 String name = thirdPartyStation.getStr("third_party_name"); //闸机所在车场ID @@ -73,7 +73,7 @@ public class YltController extends Controller { String charge_end_time = dingDanRecord.getStr("charge_end_time");//充电结束时间 int stationId = dingDanRecord.getInt("station_id");//电站ID //获取车场名称 - String stationName = ym.getStationById(String.valueOf(stationId)).getStr("station_name"); + String stationName = ym.getStationById(stationId).getStr("station_name"); //设备号 int deviceId = dingDanRecord.getInt("equipment_id");//充电桩ID //充电桩名称 @@ -96,7 +96,6 @@ public class YltController extends Controller { if ("科拓".equals(name)) { JSONObject jo = new JSONObject(); jo.put("appId", appId); - jo.put("key", key); jo.put("parkId", parkId); jo.put("serviceCode", "syncChargePilePay"); // 获取当前时间戳 @@ -119,12 +118,11 @@ public class YltController extends Controller { jo.put("freeType", freeType);//减免类型 jo.put("freeMoney", freeMoney);//减免金额 jo.put("freeTime", freeTime);//减免时长 + jo.put("key", SignUtils.paramsSign(jo, appSecret)); // 发送 POST 请求并获取响应 String result = HttpUtil.createPost(url) .body(jo.toString()) // 将 JSON 对象转换为字符串作为请求正文 - //.header("accept-language","zh-CN") - //.header("User-Agent","Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36") - //.header("version","1.0.0") + .header("version", "1.0.0") .header("Content-Type", "application/json") // 设置请求头,指明内容类型为 JSON .execute().body(); // 发送请求并获取响应体 diff --git a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java index 2807c29..2a0542a 100644 --- a/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java +++ b/ZhuQue/src/main/java/com/dsideal/ZhuQue/Ylt/Model/YltModel.java @@ -3,7 +3,9 @@ package com.dsideal.ZhuQue.Ylt.Model; import com.dsideal.ZhuQue.Util.JwtUtil; import com.jfinal.plugin.activerecord.Db; import io.jsonwebtoken.Claims; + import javax.servlet.http.HttpServletRequest; + import com.jfinal.plugin.activerecord.Record; public class YltModel { @@ -73,8 +75,9 @@ public class YltModel { * @param station_id * @return */ - public Record getStationById(String station_id) { - return Db.findById("t_station", "id", station_id); + public Record getStationById(int station_id) { + String sql = "select * from t_station where id=?"; + return Db.findFirst(sql, station_id); } /** @@ -84,6 +87,7 @@ public class YltModel { * @return */ public Record getEquipmentById(int equipment_id) { - return Db.findById("t_equipment", "id", equipment_id); + String sql = "select * from t_equipment where id =?"; + return Db.findFirst(sql, equipment_id); } } diff --git a/业务梳理/~$对外统一标准接口_充电桩抵扣.docx b/业务梳理/~$对外统一标准接口_充电桩抵扣.docx new file mode 100644 index 0000000000000000000000000000000000000000..e4e31b2c302c9ce887fbb6c76f7e28c45b48e5c8 GIT binary patch literal 162 zcmd;eOv%m6%PcM_N-W7QVjvRmGB`4%Fyu01GUNeqF+&MM5kn%7%m>oQfC~F@1H!Cp89!KUqObrQhCSgz4dvwpaR5&%h7@69CcxbVeC` literal 0 HcmV?d00001 diff --git a/业务梳理/驿来特收到的需求、分析与现状.docx b/业务梳理/驿来特收到的需求、分析与现状.docx index 1b50350ec354ad2bf04f68c5b39d0a25ed5a06b3..dc4bee8755c440087f682e5dca033823b71eb454 100644 GIT binary patch delta 17122 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 vOBop$J~5#i%QGR}Ca6+>r1+L>s3(Ff!Rp4bsK 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 diff --git a/资料/~$对外统一标准接口(收费系统)文档254.docx b/资料/~$对外统一标准接口(收费系统)文档254.docx new file mode 100644 index 0000000000000000000000000000000000000000..5ee492b99fda517e5e2dacf7a4dafe6244fa8f1b GIT binary patch literal 162 zcmd;eOv%m6%PcM_N-W7QVjvRmGB`4%Fyu01GUNeqF+&MM5kn%7%m>oQfC