diff --git a/ebike-payment/pom.xml b/ebike-payment/pom.xml index fb9d0865..036b922e 100644 --- a/ebike-payment/pom.xml +++ b/ebike-payment/pom.xml @@ -74,6 +74,13 @@ ${hutool.version} + + + javax.servlet + javax.servlet-api + true + + org.springframework.boot spring-boot-starter-validation diff --git a/ebike-payment/src/main/java/com/cdzy/payment/config/WxPayConfig.java b/ebike-payment/src/main/java/com/cdzy/payment/config/WxPayConfig.java index c071b9c4..2b42de6a 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/config/WxPayConfig.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/config/WxPayConfig.java @@ -1,7 +1,7 @@ package com.cdzy.payment.config; import com.wechat.pay.java.core.Config; -import com.wechat.pay.java.core.RSAAutoCertificateConfig; +import com.wechat.pay.java.core.RSAPublicKeyConfig; import com.wechat.pay.java.core.cipher.RSASigner; import com.wechat.pay.java.core.util.PemUtil; import com.wechat.pay.java.service.payments.jsapi.JsapiService; @@ -33,9 +33,17 @@ public class WxPayConfig { */ private String merchantId; /** - * 微信支付商户密钥文件路径 + * 微信支付商户私钥文件路径 */ private String privateKeyPath; + /** + * 微信支付商户公钥文件路径 + */ + private String publicKeyPath; + /** + * 微信支付商户公钥ID + */ + private String publicKeyId; /** * 微信支付商户证书序列号 */ @@ -58,13 +66,16 @@ public class WxPayConfig { */ private Integer expireMinute = 5; + @Bean public Config certificateConfig() { - return new RSAAutoCertificateConfig.Builder() + return new RSAPublicKeyConfig.Builder() .merchantId(merchantId) // 使用 com.wechat.pay.java.core.util 中的函数从本地文件中加载商户私钥,商户私钥会用来生成请求的签名 .privateKeyFromPath(privateKeyPath) + .publicKeyFromPath(publicKeyPath) .merchantSerialNumber(merchantSerialNumber) .apiV3Key(apiV3Key) + .publicKeyId(publicKeyId) .build(); } diff --git a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPayNotifyController.java b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPayNotifyController.java index 86117fae..b8c3af87 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPayNotifyController.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPayNotifyController.java @@ -4,8 +4,8 @@ import com.alibaba.fastjson2.JSONObject; import com.cdzy.payment.model.dto.HandleNotifyResult; import com.cdzy.payment.service.WxPayService; import jakarta.annotation.Resource; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java index da4b0b65..9f7509f5 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/controller/EbikeWxPaymentController.java @@ -75,7 +75,7 @@ public class EbikeWxPaymentController { } /** - * 调用微信退款接口 + * 调用退款接口 * * @param orderId 订单id * @return 退款成功返回true,否则返回false diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/EbikeRefundService.java b/ebike-payment/src/main/java/com/cdzy/payment/service/EbikeRefundService.java index ddb512f6..3e9b0f26 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/EbikeRefundService.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/EbikeRefundService.java @@ -2,7 +2,6 @@ package com.cdzy.payment.service; import com.mybatisflex.core.service.IService; import com.cdzy.payment.model.entity.EbikeRefund; -import com.wechat.pay.java.service.payments.model.Transaction; import com.wechat.pay.java.service.refund.model.Refund; import java.util.List; diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java b/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java index 30ab79c2..0ca5189f 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/WxPayService.java @@ -2,12 +2,11 @@ package com.cdzy.payment.service; import com.alibaba.fastjson2.JSONObject; -import com.cdzy.payment.model.dto.AmountRefundDto; import com.cdzy.payment.model.dto.HandleNotifyResult; import com.wechat.pay.java.service.payments.model.Transaction; import com.wechat.pay.java.service.refund.model.Refund; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; /** * 微信支付服务类(JSAPI支付),小程序 diff --git a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java index 928cbac9..daad6155 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/service/impl/WxPayServiceImpl.java @@ -1,6 +1,5 @@ package com.cdzy.payment.service.impl; -import cn.hutool.core.util.RandomUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.cdzy.common.model.JsonResult; @@ -27,6 +26,7 @@ import com.wechat.pay.java.core.exception.ValidationException; import com.wechat.pay.java.core.notification.NotificationConfig; import com.wechat.pay.java.core.notification.NotificationParser; import com.wechat.pay.java.core.notification.RequestParam; +import com.wechat.pay.java.core.util.NonceUtil; import com.wechat.pay.java.service.payments.jsapi.model.*; import com.wechat.pay.java.service.payments.jsapi.model.Amount; import com.wechat.pay.java.service.payments.jsapi.model.GoodsDetail; @@ -38,7 +38,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.time.*; @@ -114,7 +114,7 @@ public class WxPayServiceImpl implements WxPayService { r.put("error", "查询订单失败, "+result.getMessage()); return r; } - EbikePaymentDto paymentDto = JSON.parseObject(JSON.toJSONString(result.getData()), EbikePaymentDto.class); + EbikePaymentDto paymentDto = JSON.parseObject(JSONObject.toJSONString(result.getData()), EbikePaymentDto.class); return prepay(paymentDto, ebikePayment); } @@ -188,7 +188,7 @@ public class WxPayServiceImpl implements WxPayService { WxJsapiPromptDto wxJsapiPromptDto = new WxJsapiPromptDto(); wxJsapiPromptDto.setAppId(wxPayConfig.getAppId()); wxJsapiPromptDto.setTimeStamp(String.valueOf(Instant.now().getEpochSecond())); - wxJsapiPromptDto.setNonceStr(RandomUtil.randomStringUpper(32)); + wxJsapiPromptDto.setNonceStr(NonceUtil.createNonce(32)); wxJsapiPromptDto.setExtension("prepay_id=" + payId); return wxJsapiPromptDto.toJson(wxRsaSigner); } diff --git a/ebike-payment/src/main/java/com/cdzy/payment/utils/HttpServletUtils.java b/ebike-payment/src/main/java/com/cdzy/payment/utils/HttpServletUtils.java index 9cba544e..5b0d2932 100644 --- a/ebike-payment/src/main/java/com/cdzy/payment/utils/HttpServletUtils.java +++ b/ebike-payment/src/main/java/com/cdzy/payment/utils/HttpServletUtils.java @@ -1,7 +1,7 @@ package com.cdzy.payment.utils; -import jakarta.servlet.ServletInputStream; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.ServletInputStream; +import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; diff --git a/ebike-payment/src/main/resources/application-dev.yml b/ebike-payment/src/main/resources/application-dev.yml index d50448d7..946a6df1 100644 --- a/ebike-payment/src/main/resources/application-dev.yml +++ b/ebike-payment/src/main/resources/application-dev.yml @@ -2,7 +2,7 @@ server: port: 10017 spring: application: - name: ebike-pay + name: ebike-payment cloud: nacos: server-addr: 127.0.0.1:8848 # nacos @@ -33,11 +33,13 @@ mybatis-flex: mapper-locations: classpath:mapper/*.xml payment: wx-pay: - app-id: wx097b305458b0757c - merchant-id: 1668000369 - private-key-path: D:\Projects\eBIKE\docs\wechatpay\apiclient_key.pem - merchant-serial-number: 5157F09EFDC096DE15EBE81A47057A72******** - api-v3-key: 5157F09EFDC096DE15EBE81A47057A72******** + app-id: wx327d788d7bd6eddf + merchant-id: 1715147005 + private-key-path: D:/Projects/eBIKE/docs/secrets/apiclient_key.pem + public-key-path: D:/Projects/eBIKE/docs/secrets/apiclient_cert.pem + merchant-serial-number: 7873E3E694ADD0368EA3E9FAC929F496EECB8DF9 + api-v3-key: 1715147005V3Key20250425174554633 + public-key-id: PUB_KEY_ID_0117151470052025042500331704000601 pay-notify_url: http://192.168.2.156:10017/wxPayment/pay-notify refund-notify_url: http://192.168.2.156:10017/wxPayment/refund-notify expire-minutes: 5