From df4733091b30b0434a04dacd0e844663114d4cfe Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 09 七月 2025 17:51:56 +0800
Subject: [PATCH] 修改支付宝支付和bug修改

---
 cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java |   81 ++++++++++++++++++++++++++++++++++++++--
 1 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
index 4823159..dc89dab 100644
--- a/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
+++ b/cloud-server-communityWorldCup/src/main/java/com/dsh/communityWorldCup/service/impl/WorldCupServiceImpl.java
@@ -25,8 +25,10 @@
 import com.dsh.communityWorldCup.model.*;
 import com.dsh.communityWorldCup.service.*;
 import com.dsh.communityWorldCup.util.*;
+import com.dsh.communityWorldCup.util.wx.WxV3PayConfig;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
@@ -511,6 +513,8 @@
         return payment;
     }
 
+    private String smid = "2088330203191220";//平台支付宝商户号
+
 
     /**
      * 支付逻辑
@@ -539,17 +543,57 @@
                 worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash()));
                 worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num)));
                 worldCupPaymentService.save(worldCupPayment);
-                return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(),
+                List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list();
+                if (list.isEmpty()){
+                                    return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(),
                         worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", "");
+                }else{
+                    Integer storeId = list.get(0).getStoreId();
+                    Store store = storeClient.queryStoreById(storeId);
+                    if (store.getOperatorId()==null||store.getOperatorId()==0){
+                        // 平台
+                        return payMoneyUtil.weixinpay("社区世界杯报名", "", worldCupPayment.getCode(),
+                                worldCupPayment.getAmount().toString(), "/base/worldCup/wxPayWorldCupCallback", "APP", "");
+                    }else{
+                        String s2 = storeClient.getmerchantNumberByOperatorId(store.getOperatorId());
+                        System.err.println("微信商户号"+s2);
+                        if(!StringUtils.hasLength(s2)){
+                            return ResultUtil.error("运营商未配置微信商户号,获取支付失败!");
+                        }
+                        return payMoneyUtil.weixinpayV3(s2,"社区世界杯报名",worldCupPayment.getCode()
+                                ,"/base/worldCup/wxPayWorldCupCallback1",worldCupPayment.getAmount().toString());
+                    }
+                }
+
+
+
             }
             //支付宝
             if(payType == 2){
+                String smidRes = smid;// 结算资金到商户号
+
                 worldCupPayment.setAmount(new BigDecimal(num).multiply(worldCup.getCash()));
                 worldCupPayment.setUnitPrice(worldCupPayment.getAmount().divide(new BigDecimal(num)));
                 worldCupPaymentService.save(worldCupPayment);
-                return payMoneyUtil.alipay("2088330203191220", "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
+                List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCup.getId()).list();
+
+                if (list.isEmpty()){
+            }else{
+                    Integer storeId = list.get(0).getStoreId();
+                    Store store = storeClient.queryStoreById(storeId);
+                    if (store.getOperatorId()==null||store.getOperatorId()==0){
+                    }else{
+                        String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
+                        System.err.println("支付宝商户号"+s2);
+                        if(!StringUtils.hasLength(s2)){
+                            return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
+                        }
+                        smidRes=s2;
+                    }
+                }
+                return payMoneyUtil.alipay(smidRes, "社区世界杯报名", "世界杯报名", "", worldCupPayment.getCode(),
                         worldCupPayment.getAmount().toString(), "/base/worldCup/aliPayWorldCupCallback");
-            }
+                }
             //玩湃币
             if(payType == 3){
                 AppUser appUser = appUserClient.getAppUser(paymentWorldCup.getUid());
@@ -712,7 +756,7 @@
      * @return
      */
     @Override
-    public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) {
+    public ResultUtil paymentWorldCupCallback(String code, String outTradeNo) throws AlipayApiException {
         WorldCupPayment worldCupPayment = worldCupPaymentService.getOne(new QueryWrapper<WorldCupPayment>().eq("code", code));
         Integer worldCupId = worldCupPayment.getWorldCupId();
         worldCupPayment.setPayStatus(2);
@@ -740,6 +784,35 @@
             worldCupPaymentParticipant.setCreateTime(new Date());
             worldCupPaymentParticipantService.save(worldCupPaymentParticipant);
         }
+        if (worldCupPayment.getPayType()==2){
+            List<WorldCupStore> list = worldCupStoreService.lambdaQuery().eq(WorldCupStore::getWorldCupId, worldCupPayment.getWorldCupId()).list();
+            String resSmid = smid;
+            if (!list.isEmpty()){
+                Integer storeId = list.get(0).getStoreId();
+                Store store = storeClient.queryStoreById(storeId);
+                if (store.getOperatorId()==null||store.getOperatorId()==0){
+                }else{
+                    String s2 = storeClient.getmerchantNumberAliByOperatorId(store.getOperatorId());
+                    System.err.println("支付宝商户号"+s2);
+                    if(!StringUtils.hasLength(s2)){
+                        return ResultUtil.error("运营商未配置支付宝商户号,获取支付失败!");
+                    }
+                    resSmid=s2;
+                }
+            }
+            String finalResSmid = resSmid;
+            new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    try {
+                        Thread.sleep(30000);
+                        payMoneyUtil.confirm(finalResSmid, code, outTradeNo, worldCupPayment.getAmount().toString());
+                    }catch (Exception e){
+                    }
+                }
+            }).start();
+        }
+
         return ResultUtil.success();
     }
 

--
Gitblit v1.7.1