From c313a253b1fcdc75b6be5db575fc2b29fb407021 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期三, 15 四月 2026 20:05:04 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/web/src/main/java/com/doumee/api/web/PaymentCallback.java |  157 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 157 insertions(+), 0 deletions(-)

diff --git a/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
new file mode 100644
index 0000000..0aae790
--- /dev/null
+++ b/server/web/src/main/java/com/doumee/api/web/PaymentCallback.java
@@ -0,0 +1,157 @@
+package com.doumee.api.web.mall;
+
+import com.doumee.api.web.ApiController;
+import com.doumee.core.utils.Constants;
+import com.doumee.core.utils.ID;
+import com.doumee.core.wx.WxMiniConfig;
+import com.doumee.dao.business.model.ActivitySign;
+import com.doumee.dao.business.model.Fund;
+import com.doumee.dao.business.model.Goodsorder;
+import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * 鏀粯鍥炶皟
+ *
+ * @Author : Rk
+ * @create 2023/3/24 16:57
+ */
+@Slf4j
+@RestController
+@CrossOrigin
+public class PaymentCallback extends ApiController {
+
+
+    @PostMapping("/web/api/wxPayNotify")
+    public String wxPay_notify(@RequestBody String xmlResult) {
+        String wxId = ID.nextGUID();
+        log.info("鏀粯鍥炶皟淇℃伅("+wxId+") = > "  + xmlResult);
+        if (StringUtils.isEmpty(xmlResult)){
+            return null;
+        }
+        try {
+            WxPayOrderNotifyResult result = WxMiniConfig.wxPayService.parseOrderNotifyResult(xmlResult);
+            //鑷畾涔夎鍗曞彿
+            String outTradeNo = result.getOutTradeNo();
+            //寰俊璁㈠崟鍙�
+            String paymentNo = result.getTransactionId();
+
+            if (Constants.SUCCESS_STR.equals(result.getReturnCode())) {
+                // 鏀粯鎴愬姛
+                switch (result.getAttach()) {
+                    //娲诲姩鍙備笌鏀粯
+                    case "ActivitySign": {
+                        ActivitySign activitySign = activitySignService.findById(Integer.valueOf(outTradeNo));
+                        if(Objects.isNull(activitySign)){
+                            return WxPayNotifyResponse.fail( "鏀粯鍥炶皟淇℃伅("+ wxId + ") = > 鏈煡璇㈠埌鏀粯瀵硅薄淇℃伅!");
+                        }
+                        if(activitySign.getStatus().equals(Constants.ONE)){
+                            return WxPayNotifyResponse.success("澶勭悊鎴愬姛!");
+                        }
+                        activitySign.setPayStatus(Constants.ONE);
+                        activitySign.setPayDate(new Date());
+                        activitySign.setPayOrderId(paymentNo);
+                        activitySign.setStatus(Constants.ONE);
+                        activitySignService.updateById(activitySign);
+                        break;
+                    }
+                    case "terraceMall": {
+                        Goodsorder DBGoodsOrder = new Goodsorder();
+                        DBGoodsOrder.setCode(Long.valueOf(outTradeNo));
+                        Goodsorder goodsOrder = goodsorderService.findOne(DBGoodsOrder);
+                        if(Objects.isNull(goodsOrder)){
+                            return WxPayNotifyResponse.fail( "鏀粯鍥炶皟淇℃伅("+ wxId + ") = > 鏈煡璇㈠埌鏀粯瀵硅薄淇℃伅!");
+                        }
+                        if(goodsOrder.getStatus().equals(Constants.ONE)){
+                            return WxPayNotifyResponse.success("澶勭悊鎴愬姛!");
+                        }
+                        goodsOrder.setPayStatus(Constants.ONE);
+                        goodsOrder.setPayDate(new Date());
+                        goodsOrder.setPayOrderId(paymentNo);
+                        goodsOrder.setStatus(Constants.OrderStatus.PAY_DONE.getKey());
+                        goodsOrder.setPayMethod(Constants.ZERO);
+                        goodsorderService.updateById(goodsOrder);
+                        //鐢熸垚 鍜栧暋璁″垝璁㈠崟鏄庣粏琛�
+                        if(goodsOrder.getType().equals(Constants.TWO)){
+                            planorderDetailService.createPlanOrderDetail(goodsOrder);
+                        }
+                        Fund fund = new Fund();
+                        fund.setOrderCode(goodsOrder.getPayOrderId());
+                        fund.setCreator(goodsOrder.getMemberId());
+                        fund.setCreateDate(new Date());
+                        fund.setIsdeleted(Constants.ZERO);
+                        fund.setRemark(goodsOrder.getCode().toString());
+                        fund.setMemberId(goodsOrder.getMemberId());
+                        fund.setTitle("璁㈠崟鏀粯");
+                        fund.setContent("璁㈠崟鏀粯");
+                        fund.setObjId(goodsOrder.getId());
+                        fund.setObjType(Constants.ONE);
+                        fund.setType(Constants.ZERO);
+                        fund.setNum(goodsOrder.getPrice());
+                        fundService.create(fund);
+                        break;
+                    }
+                    case "shopGoods": {
+                        Goodsorder DBGoodsOrder = new Goodsorder();
+                        DBGoodsOrder.setCode(Long.valueOf(outTradeNo));
+                        Goodsorder goodsOrder = goodsorderService.findOne(DBGoodsOrder);
+                        if(Objects.isNull(goodsOrder)){
+                            return WxPayNotifyResponse.fail( "鏀粯鍥炶皟淇℃伅("+ wxId + ") = > 鏈煡璇㈠埌鏀粯瀵硅薄淇℃伅!");
+                        }
+                        if(goodsOrder.getStatus().equals(Constants.ONE)){
+                            return WxPayNotifyResponse.success("澶勭悊鎴愬姛!");
+                        }
+                        goodsOrder.setPayStatus(Constants.ONE);
+                        goodsOrder.setPayDate(new Date());
+                        goodsOrder.setPayOrderId(paymentNo);
+                        goodsOrder.setStatus(Constants.OrderStatus.PAY_DONE.getKey());
+                        //鐢熸垚鏍搁攢鐮�
+                        if(Constants.equalsInteger(goodsOrder.getReceiveType(),Constants.ONE)){
+                            goodsOrder.setExchangeCode(goodsorderService.createExchangeCode());
+                        }
+                        goodsOrder.setPayMethod(Constants.ZERO);
+                        goodsorderService.updateById(goodsOrder);
+                        if(Objects.nonNull(goodsOrder.getPickUpShopId())){
+                            //鍙戦�佺珯鍐呬俊 - 缁忛攢鍟�
+                            noticeService.orderPayNotice(goodsOrder.getPickUpShopId(),goodsOrder.getId(),goodsOrder.getReceiveType());
+                        }
+                        Fund fund = new Fund();
+                        fund.setOrderCode(goodsOrder.getPayOrderId());
+                        fund.setCreator(goodsOrder.getMemberId());
+                        fund.setCreateDate(new Date());
+                        fund.setIsdeleted(Constants.ZERO);
+                        fund.setRemark(goodsOrder.getCode().toString());
+                        fund.setMemberId(goodsOrder.getMemberId());
+                        fund.setTitle("璁㈠崟鏀粯");
+                        fund.setContent("璁㈠崟鏀粯");
+                        fund.setObjId(goodsOrder.getId());
+                        fund.setObjType(Constants.ONE);
+                        fund.setType(Constants.ZERO);
+                        fund.setNum(goodsOrder.getPrice());
+                        fundService.create(fund);
+                        break;
+                    }
+
+                }
+                return WxPayNotifyResponse.success("澶勭悊鎴愬姛!");
+            }
+            return WxPayNotifyResponse.fail(result.getReturnMsg());
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error("寰俊鍥炶皟缁撴灉寮傚父,寮傚父鍘熷洜{}", e.getLocalizedMessage());
+            return WxPayNotifyResponse.fail(e.getMessage());
+        }
+    }
+
+
+
+}

--
Gitblit v1.9.3