wuxw
2024-01-09 5c0f842e318250eb1ad6d1a6905c7377cbf0e24a
优化1.6 拆分费用bug
6个文件已修改
116 ■■■■■ 已修改文件
java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/CallApiServiceFactory.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-acct/src/main/java/com/java110/acct/payment/business/payFee/PayFeePaymentBusiness.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-api/src/main/java/com/java110/api/smo/payment/impl/GoodsToNotifySMOImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-common/src/main/java/com/java110/common/thread/UpdateApplicationKeyPwd.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springboot/src/main/java/com/java110/boot/smo/payment/impl/GoodsToNotifySMOImpl.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/AuthenticationFactory.java
@@ -14,6 +14,8 @@
import com.java110.core.log.LoggerFactory;
import com.java110.dto.reportData.ReportDataDto;
import com.java110.dto.reportData.ReportDataHeaderDto;
import com.java110.dto.system.AppRoute;
import com.java110.utils.cache.AppRouteCache;
import com.java110.utils.cache.CommonCache;
import com.java110.utils.cache.JWTCache;
import com.java110.utils.cache.MappingCache;
@@ -22,9 +24,12 @@
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.NoAuthorityException;
import com.java110.utils.util.Base64Convert;
import com.java110.utils.util.ListUtil;
import com.java110.utils.util.StringUtil;
import org.apache.commons.codec.digest.DigestUtils;
import org.slf4j.Logger;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import javax.crypto.Cipher;
import javax.crypto.SecretKeyFactory;
@@ -37,10 +42,7 @@
import java.security.*;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import java.util.*;
/**
 * 鉴权工厂类
@@ -237,7 +239,7 @@
        reqInfo += ((dataFlow.getReqBusiness() == null || dataFlow.getReqBusiness().size() == 0)
                ? dataFlow.getReqData() : dataFlow.getReqBusiness().toJSONString());
        reqInfo += dataFlow.getAppRoutes().get(0).getSecurityCode();
        logger.debug("加密字符串={}",reqInfo);
        logger.debug("加密字符串={}", reqInfo);
        return md5(reqInfo);
    }
@@ -284,12 +286,93 @@
        reqInfo += "GET".equals(dataFlow.getRequestHeaders().get(CommonConstant.HTTP_METHOD)) ?
                param : dataFlow.getReqData();
        reqInfo += dataFlow.getAppRoutes().get(0).getSecurityCode();
        logger.debug("加密字符串={}",reqInfo);
        logger.debug("加密字符串={}", reqInfo);
        return md5(reqInfo);
    }
    /**
     * 创建 签名
     * @param headers
     * @param httpMethod
     * @param url
     * @param param
     */
    public static void createSign(HttpHeaders headers, HttpMethod httpMethod, String url, String param) {
        String appId = headers.getFirst(CommonConstant.HTTP_APP_ID);
        if (StringUtil.isEmpty(appId)) {
            appId = headers.getFirst(CommonConstant.APP_ID);
        }
        String transactionId = headers.getFirst(CommonConstant.HTTP_TRANSACTION_ID);
        if (StringUtil.isEmpty(transactionId)) {
            transactionId = headers.getFirst(CommonConstant.TRANSACTION_ID);
        }
        String requestTime = headers.getFirst(CommonConstant.HTTP_REQ_TIME);
        if (StringUtil.isEmpty(transactionId)) {
            requestTime = headers.getFirst(CommonConstant.REQUEST_TIME);
        }
        List<AppRoute> appRoutes = AppRouteCache.getAppRoute(appId);
        if (ListUtil.isNull(appRoutes)) {
            return;
        }
        if (StringUtil.isEmpty(appRoutes.get(0).getSecurityCode())) {
            return;
        }
        String paramStr = "";
        if (HttpMethod.GET == httpMethod) {
            paramStr = url.substring(url.indexOf("?"));
        } else {
            paramStr = param;
        }
        String sign = transactionId + requestTime + appId + paramStr + appRoutes.get(0).getSecurityCode();
        headers.remove("sign");
        headers.add("sign", md5(sign));
    }
    /**
     * 创建 签名
     * @param headers
     * @param httpMethod
     * @param url
     * @param param
     */
    public static void createSign(Map<String, String> headers, HttpMethod httpMethod, String url, String param) {
        String appId = headers.get(CommonConstant.HTTP_APP_ID);
        if (StringUtil.isEmpty(appId)) {
            appId = headers.get(CommonConstant.APP_ID);
        }
        String transactionId = headers.get(CommonConstant.HTTP_TRANSACTION_ID);
        if (StringUtil.isEmpty(transactionId)) {
            transactionId = headers.get(CommonConstant.TRANSACTION_ID);
        }
        String requestTime = headers.get(CommonConstant.HTTP_REQ_TIME);
        if (StringUtil.isEmpty(transactionId)) {
            requestTime = headers.get(CommonConstant.REQUEST_TIME);
        }
        List<AppRoute> appRoutes = AppRouteCache.getAppRoute(appId);
        if (ListUtil.isNull(appRoutes)) {
            return;
        }
        if (StringUtil.isEmpty(appRoutes.get(0).getSecurityCode())) {
            return;
        }
        String paramStr = "";
        if (HttpMethod.GET == httpMethod) {
            paramStr = url.substring(url.indexOf("?"));
        } else {
            paramStr = param;
        }
        String sign = transactionId + requestTime + appId + paramStr + appRoutes.get(0).getSecurityCode();
        headers.put("sign", md5(sign));
    }
    /**
     * md5加密
     *
     * @param transactionId 流水
java110-core/src/main/java/com/java110/core/factory/CallApiServiceFactory.java
@@ -277,7 +277,8 @@
        header.add(CommonConstant.USER_ID.toLowerCase(), StringUtil.isEmpty(pd.getUserId()) ? CommonConstant.ORDER_DEFAULT_USER_ID : pd.getUserId());
        header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), StringUtil.isEmpty(pd.getTransactionId()) ? GenerateCodeFactory.getUUID() : pd.getTransactionId());
        header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), StringUtil.isEmpty(pd.getRequestTime()) ? DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_DEFAULT) : pd.getRequestTime());
        header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        //header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        AuthenticationFactory.createSign(header,httpMethod,url,param);
        HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
        //logger.debug("请求中心服务信息,{}", httpEntity);
service-acct/src/main/java/com/java110/acct/payment/business/payFee/PayFeePaymentBusiness.java
@@ -5,6 +5,7 @@
import com.java110.core.context.ICmdDataFlowContext;
import com.java110.core.factory.CallApiServiceFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.app.AppDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.payment.PaymentOrderDto;
import com.java110.utils.cache.CommonCache;
@@ -30,7 +31,7 @@
        String appId = context.getReqHeaders().get("app-id");
        String userId = context.getReqHeaders().get("user-id");
        JSONObject orderInfo = CallApiServiceFactory.postForApi(appId, reqJson, "fee.payFeePre", JSONObject.class, userId);
        JSONObject orderInfo = CallApiServiceFactory.postForApi(AppDto.WEB_APP_ID, reqJson, "fee.payFeePre", JSONObject.class, userId);
        String orderId = orderInfo.getString("oId");
        String feeName = orderInfo.getString("feeName");
        double money = Double.parseDouble(orderInfo.getString("receivedAmount"));
service-api/src/main/java/com/java110/api/smo/payment/impl/GoodsToNotifySMOImpl.java
@@ -1,6 +1,7 @@
package com.java110.api.smo.payment.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.AuthenticationFactory;
import com.java110.core.factory.WechatFactory;
import com.java110.dto.wechat.SmallWeChatDto;
import com.java110.api.properties.WechatAuthProperties;
@@ -168,7 +169,9 @@
        header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), userId);
        header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
        header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
        header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        //header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        AuthenticationFactory.createSign(header,httpMethod,url,param);
        header.add("content-type", "application/json");
        HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
        //logger.debug("请求中心服务信息,{}", httpEntity);
service-common/src/main/java/com/java110/common/thread/UpdateApplicationKeyPwd.java
@@ -1,6 +1,7 @@
package com.java110.common.thread;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.AuthenticationFactory;
import com.java110.intf.common.IApplicationKeyInnerServiceSMO;
import com.java110.dto.machine.ApplicationKeyDto;
import com.java110.utils.constant.CommonConstant;
@@ -95,7 +96,9 @@
        header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), CommonConstant.ORDER_DEFAULT_USER_ID);
        header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
        header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
        header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        //header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        AuthenticationFactory.createSign(header,httpMethod,url,param);
        HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
        //logger.debug("请求中心服务信息,{}", httpEntity);
        try {
springboot/src/main/java/com/java110/boot/smo/payment/impl/GoodsToNotifySMOImpl.java
@@ -4,6 +4,7 @@
import com.java110.boot.properties.WechatAuthProperties;
import com.java110.boot.smo.AppAbstractComponentSMO;
import com.java110.boot.smo.payment.IGoodsToNotifySMO;
import com.java110.core.factory.AuthenticationFactory;
import com.java110.core.factory.WechatFactory;
import com.java110.core.log.LoggerFactory;
import com.java110.dto.wechat.SmallWeChatDto;
@@ -168,7 +169,9 @@
        header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), userId);
        header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), UUID.randomUUID().toString());
        header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), DateUtil.getDefaultFormateTimeString(new Date()));
        header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        //header.add(CommonConstant.HTTP_SIGN.toLowerCase(), "");
        AuthenticationFactory.createSign(header,httpMethod,url,param);
        header.add("content-type", "application/json");
        HttpEntity<String> httpEntity = new HttpEntity<String>(param, header);
        //logger.debug("请求中心服务信息,{}", httpEntity);