From 469b0eacbc45dc5fd4d947c1636651629a286f6b Mon Sep 17 00:00:00 2001
From: wuzeyu <1223318623@qq.com>
Date: 星期五, 18 十月 2024 08:42:53 +0800
Subject: [PATCH] Merge branch 'master' of http://8.140.179.55:20000/r/pipIrr-SV
---
pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java
index 4314bed..ce1fb29 100644
--- a/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java
+++ b/pipIrr-platform/pipIrr-web/pipIrr-web-sell/src/main/java/com/dy/pipIrrSell/wechatpay/PaymentCtrl.java
@@ -6,6 +6,7 @@
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.common.webUtil.ResultCodeMsg;
+import com.dy.pipIrrGlobal.cert.WxCertUtil;
import com.dy.pipIrrGlobal.pojoSe.*;
import com.dy.pipIrrGlobal.voSe.VoClient;
import com.dy.pipIrrSell.client.ClientSv;
@@ -33,6 +34,7 @@
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.core.io.ResourceLoader;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.transaction.annotation.Transactional;
@@ -66,13 +68,15 @@
@RequestMapping(path="payment")
@RequiredArgsConstructor
public class PaymentCtrl {
+ private final ResourceLoader resourceLoader;
+
private final PaymentSv paymentSv;
private final RestTemplateUtil restTemplateUtil;
private final PayHelper payHelper;
private final VirtualCardSv virtualCardSv;
private final ClientSv clientSv;
- private final String privateCertFileName = PayInfo.privateCertFileName;
+ //private final String privateCertFileName = PayInfo.privateCertFileName;
private final String appid = PayInfo.appid;
private final String secret = PayInfo.secret;
private final String mchid = PayInfo.mchid;
@@ -171,7 +175,8 @@
String nonceStr = payHelper.generateRandomString();
Long timestamp = System.currentTimeMillis() / 1000;
- String header = schema + " " + payHelper.getToken(method, httpUrl, "", nonceStr, timestamp, privateCertFileName);
+ byte[] keyPemBs = WxCertUtil.getKey_pemBytes(resourceLoader) ;
+ String header = schema + " " + payHelper.getToken(method, httpUrl, "", nonceStr, timestamp, keyPemBs);
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", header);
@@ -189,7 +194,7 @@
// 鏋勯�犻獙绛惧悕涓�
String signatureStr = payHelper.responseSign(wechatpayTimestamp, wechatpayNonce, job_body.toJSONString());
// 楠岃瘉绛惧悕
- Boolean valid = payHelper.responseSignVerify(wechatpaySerial, signatureStr, wechatpaySignature);
+ Boolean valid = payHelper.responseSignVerify(wechatpaySerial, signatureStr, wechatpaySignature, keyPemBs);
return BaseResponseUtils.buildSuccess();
}
@@ -212,7 +217,7 @@
@PostMapping(path = "placeOrder")
@Transactional(rollbackFor = Exception.class)
@SsoAop()
- public BaseResponse<Boolean> placeOrder(@RequestBody @Valid DtoOrder order, BindingResult bindingResult) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, IOException, SignatureException, InvalidKeyException {
+ public BaseResponse<Boolean> placeOrder(@RequestBody @Valid DtoOrder order, BindingResult bindingResult) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, IOException, SignatureException, InvalidKeyException, Exception {
if(bindingResult != null && bindingResult.hasErrors()){
return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
}
@@ -273,7 +278,7 @@
String httpUrl = "/v3/pay/transactions/jsapi";
String body = job_body.toJSONString();
- String header = schema + " " + payHelper.getToken(method, httpUrl, body, nonceStr, timestamp, privateCertFileName);
+ String header = schema + " " + payHelper.getToken(method, httpUrl, body, nonceStr, timestamp, WxCertUtil.getKey_pemBytes(resourceLoader));
Map<String, String> headers = new HashMap<>();
headers.put("Authorization", header);
@@ -315,7 +320,7 @@
String nonceStr = payHelper.generateRandomString();
String pkg = "prepay_id=" + prepayId;
String message = payHelper.buildMessage_signAgain(appid, timeStamp, nonceStr, pkg);
- String paySign = payHelper.sign(message.getBytes("utf-8"), privateCertFileName);
+ String paySign = payHelper.sign(message.getBytes("utf-8"), WxCertUtil.getKey_pemBytes(resourceLoader));
JSONObject job_result = new JSONObject();
job_result.put("timeStamp", timeStamp);
@@ -348,7 +353,7 @@
@PostMapping(path = "orderNotify", consumes = MediaType.APPLICATION_JSON_VALUE)
@Transactional(rollbackFor = Exception.class)
@SsoAop()
- public JSONObject orderNotify(@RequestHeader HttpHeaders headers, HttpServletRequest request, HttpServletResponse response) throws IOException, GeneralSecurityException {
+ public JSONObject orderNotify(@RequestHeader HttpHeaders headers, HttpServletRequest request, HttpServletResponse response) throws IOException, GeneralSecurityException, Exception {
JSONObject result = new JSONObject();
/**
@@ -386,8 +391,9 @@
// 鏋勯�犻獙绛惧悕涓�
String signatureStr = payHelper.responseSign(wechatpayTimestamp, wechatpayNonce, bodyStr);
+ byte[] keyPemBs = WxCertUtil.getKey_pemBytes(resourceLoader) ;
// 楠岃瘉绛惧悕
- Boolean valid = payHelper.responseSignVerify(wechatpaySerial, signatureStr, wechatpaySignature);
+ Boolean valid = payHelper.responseSignVerify(wechatpaySerial, signatureStr, wechatpaySignature, keyPemBs);
if(!valid) {
response.setStatus(500);
result.put("code", "FAIL");
--
Gitblit v1.8.0