From cfaf819cb87cec28fcc4341c560185ee3fb3baf6 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 21 八月 2025 19:22:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java |   48 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java b/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
index 33f43ee..b2ecae3 100644
--- a/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
+++ b/server/admin/src/main/java/com/doumee/api/business/PaymentCallback.java
@@ -3,10 +3,12 @@
 import com.alibaba.fastjson.JSON;
 import com.doumee.config.wx.TransferDetailEntityNew;
 import com.doumee.config.wx.WxMiniConfig;
+import com.doumee.core.constants.Constants;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.model.ApiResponse;
 import com.doumee.service.business.OrdersService;
+import com.doumee.service.business.WithdrawalOrdersService;
 import com.wechat.pay.java.core.Config;
 import com.wechat.pay.java.core.RSAAutoCertificateConfig;
 import com.wechat.pay.java.core.RSAPublicKeyConfig;
@@ -16,6 +18,7 @@
 import com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction;
 import com.wechat.pay.java.service.refund.model.RefundNotification;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.apache.shiro.mgt.DefaultSecurityManager;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +48,9 @@
 
     @Autowired
     private OrdersService ordersService;
+
+    @Autowired
+    private WithdrawalOrdersService withdrawalOrdersService;
 
     /**
      * 銆愬井淇℃敮浠樸�戝紓姝ラ�氱煡
@@ -177,14 +183,30 @@
      * @return
      */
     @PostMapping(value = "/web/wechat/transferNotify")
-    public ApiResponse wxPayCallback( HttpServletRequest request) {
+    public ApiResponse transferNotify( HttpServletRequest request) {
         Map<String,String> errMap = new HashMap<>();
         try {
-            log.info("寰俊鍟嗘埛闆剁嚎杞处 - 鍥炶皟閫氱煡 /wxpay/callback");
-            TransferDetailEntityNew entity = wxPaySuccessCallback(request);
-            log.info("transfer ok.{}",entity);
+            log.error("寰俊鍟嗘埛闆剁嚎杞处 - 鍥炶皟閫氱煡 /wxpay/callback");
+
+            Config config = new RSAPublicKeyConfig.Builder()
+                .merchantId(WxMiniConfig.wxProperties.getSubMchId()) //寰俊鏀粯鐨勫晢鎴峰彿
+                .privateKeyFromPath(WxMiniConfig.wxProperties.getWechatPrivateKeyPath()) // 鍟嗘埛API璇佷功绉侀挜鐨勫瓨鏀捐矾寰�
+                .publicKeyFromPath(WxMiniConfig.wxProperties.getWechatPubKeyPath()) //寰俊鏀粯鍏挜鐨勫瓨鏀捐矾寰�
+                .publicKeyId(WxMiniConfig.wxProperties.getWechatPayPublicKeyId()) //寰俊鏀粯鍏挜ID
+                .merchantSerialNumber(WxMiniConfig.wxProperties.getWechatSerialNumer()) //鍟嗘埛API璇佷功搴忓垪鍙�
+                .apiV3Key("7tG4Vk9Zp2L8dXw5Jq0N3hR6yE1sF3cB") //APIv3瀵嗛挜
+                .build();
+
+            TransferDetailEntityNew entity = wxSuccessCallback(request,config);
+            log.error("transfer ok.{}",entity);
             //鍥炶皟鎴愬姛鍚庡鐞嗚嚜宸辩殑涓氬姟
             if(entity != null){
+                if((entity.getState().equals(Constants.SUCCESS)
+                        || entity.getState().equals(Constants.CANCELLED)
+                        || entity.getState().equals(Constants.FAIL))
+                        && StringUtils.isNotBlank(entity.getOutBillNo())){
+                    withdrawalOrdersService.transferSuccess(entity.getOutBillNo(),entity.getState().equals(Constants.SUCCESS)?true:false);
+                }
             }
             return ApiResponse.success("澶勭悊鎴愬姛");
         } catch (Exception e) {
@@ -195,7 +217,7 @@
         }
     }
 
-    public TransferDetailEntityNew wxPaySuccessCallback(HttpServletRequest request) throws IOException {
+    public TransferDetailEntityNew wxSuccessCallback(HttpServletRequest request,Config config) throws IOException {
         String requestBody = getBodyString(request, "UTF-8");
         //璇佷功搴忓垪鍙凤紙寰俊骞冲彴锛�   楠岀鐨勨�滃井淇℃敮浠樺钩鍙拌瘉涔︹�濇墍瀵瑰簲鐨勫钩鍙拌瘉涔﹀簭鍒楀彿
         String wechatPaySerial = request.getHeader("Wechatpay-Serial");
@@ -214,14 +236,14 @@
                 .body(requestBody)
                 .build();
         // 2. 鏋勫缓Config RSAPublicKeyConfig
-        Config config = new RSAPublicKeyConfig.Builder()
-                        .merchantId(WxMiniConfig.wxProperties.getMchId()) //寰俊鏀粯鐨勫晢鎴峰彿
-                        .privateKeyFromPath(WxMiniConfig.wxProperties.getPrivateKeyPath()) // 鍟嗘埛API璇佷功绉侀挜鐨勫瓨鏀捐矾寰�
-                        .publicKeyFromPath(WxMiniConfig.wxProperties.getWechatPubKeyPath()) //寰俊鏀粯鍏挜鐨勫瓨鏀捐矾寰�
-                        .publicKeyId(WxMiniConfig.wxProperties.getWechatPayPublicKeyId()) //寰俊鏀粯鍏挜ID
-                        .merchantSerialNumber(WxMiniConfig.wxProperties.getSerialNumer()) //鍟嗘埛API璇佷功搴忓垪鍙�
-                        .apiV3Key("") //APIv3瀵嗛挜
-                        .build();
+//        Config config = new RSAPublicKeyConfig.Builder()
+//                        .merchantId(WxMiniConfig.wxProperties.getMchId()) //寰俊鏀粯鐨勫晢鎴峰彿
+//                        .privateKeyFromPath(WxMiniConfig.wxProperties.getPrivateKeyPath()) // 鍟嗘埛API璇佷功绉侀挜鐨勫瓨鏀捐矾寰�
+//                        .publicKeyFromPath(WxMiniConfig.wxProperties.getWechatPubKeyPath()) //寰俊鏀粯鍏挜鐨勫瓨鏀捐矾寰�
+//                        .publicKeyId(WxMiniConfig.wxProperties.getWechatPayPublicKeyId()) //寰俊鏀粯鍏挜ID
+//                        .merchantSerialNumber(WxMiniConfig.wxProperties.getSerialNumer()) //鍟嗘埛API璇佷功搴忓垪鍙�
+//                        .apiV3Key("") //APIv3瀵嗛挜
+//                        .build();
         log.info("WxPayService.wxPaySuccessCallback request : wechatPaySerial is [{}]  , wechatSignature is [{}] , wechatTimestamp is [{}] , wechatpayNonce  is [{}] , requestBody is [{}]",wechatPaySerial,wechatSignature,wechatTimestamp,wechatpayNonce,requestBody);
         // 3. 鍒濆鍖� NotificationParser
         NotificationParser parser = new NotificationParser((NotificationConfig) config);

--
Gitblit v1.9.3