From 75bbddb51ff4abb872140a6469972f81b9bb489a Mon Sep 17 00:00:00 2001 From: "zhenghaiyang@ele-cloud.com" Date: Tue, 11 Apr 2023 11:23:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=90=8D=E6=96=B9=E5=BC=8F=E6=94=B9?= =?UTF-8?q?=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SDNYMainProcessController.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java index fc98d304..2f653e73 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/SDNYMainProcessController.java @@ -3,6 +3,7 @@ package com.dxhy.erp.controller; import com.alibaba.fastjson.JSONObject; import com.dxhy.common.aspect.SysLog; import com.dxhy.common.constant.CommonConstants; +import com.dxhy.common.constant.ConfigureConstant; import com.dxhy.common.controller.AbstractController; import com.dxhy.common.enums.SNFplxEnum; import com.dxhy.common.util.InvoiceUtil; @@ -22,6 +23,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.util.*; @@ -281,7 +283,7 @@ public class SDNYMainProcessController extends AbstractController { @PostMapping("/sn/signature") @ResponseBody @SysLog("获取接口签名值") - public String signature(@RequestBody Map paramMap) { + public String signature(HttpServletRequest request, @RequestBody Map paramMap) { String ip = paramMap.get("ip"); String apiCode = paramMap.get("apiCode"); String secretId = paramMap.get("secretId"); @@ -296,12 +298,33 @@ public class SDNYMainProcessController extends AbstractController { sortMap.put("zipCode", "0"); sortMap.put("content", content); - String url = "POST" + ip + "/invoice/jxpt/api/v5/" + apiCode + "?"; - - String signature = HmacSHA1Util.genSign(url, sortMap, secretKey); + String reqUrl = request.getRequestURL().toString(); + if (reqUrl.contains(ConfigureConstant.STRING_WH)) { + reqUrl = reqUrl.substring(ConfigureConstant.INT_0, reqUrl.indexOf(ConfigureConstant.STRING_WH)); + } + //获取鉴权URL + String signUrl = getAuthUrl(reqUrl, request.getMethod()); + String signature = HmacSHA1Util.genSign(signUrl, sortMap, secretKey); return signature; } + private static String getAuthUrl(String reqUrl, String method) { + if (reqUrl.split(ConfigureConstant.STRING_COLON).length > ConfigureConstant.INT_2) { + String one = reqUrl.split(ConfigureConstant.STRING_COLON)[1]; + String two = reqUrl.split(ConfigureConstant.STRING_COLON)[2]; + //支持带端口数据的返回 + if (two.indexOf(ConfigureConstant.STRING_SLASH_LINE) > 0) { + reqUrl = one.replaceAll("//", "") + ConfigureConstant.STRING_COLON + two; + } else { + reqUrl = one.replaceAll("//", "") + two.substring(two.indexOf(ConfigureConstant.STRING_SLASH_LINE)); + } + } else if (reqUrl.split(ConfigureConstant.STRING_COLON).length == ConfigureConstant.INT_2) { + String one = reqUrl.split(ConfigureConstant.STRING_COLON)[1]; + reqUrl = one.contains("//") ? one.replaceAll("//", "") : reqUrl; + } + return method + reqUrl + "?"; + } + private SAPInvoiceInfo convertToSapOnject(SNInvoice snInvoice, String imageId, String compCode) { Date date = new Date();