Просмотр исходного кода

feature: 微信收款二维码

luoyb 1 год назад
Родитель
Сommit
ef93a616db

+ 0 - 18
pom.xml

@@ -432,24 +432,6 @@
                 <artifactId>core</artifactId>
                 <version>${qrcode.version}</version>
             </dependency>
-<!--            聚合支付-->
-            <dependency>
-                <groupId>com.egzosn</groupId>
-                <artifactId>pay-spring-boot-starter</artifactId>
-                <version>0.0.4</version>
-            </dependency>
-            <!-- 支付宝 -->
-            <dependency>
-                <groupId>com.egzosn</groupId>
-                <artifactId>pay-java-ali</artifactId>
-                <version>2.13.1</version>
-            </dependency>
-            <!-- 微信 -->
-            <dependency>
-                <groupId>com.egzosn</groupId>
-                <artifactId>pay-java-wx</artifactId>
-                <version>2.13.1</version>
-            </dependency>
         </dependencies>
     </dependencyManagement>
 

+ 1 - 1
ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/producer/KafkaNormalProducer.java → ruoyi-common/ruoyi-common-message/src/main/java/org/dromara/common/message/kafka/producer/KafkaCommonProducer.java

@@ -23,7 +23,7 @@ import java.util.concurrent.CompletableFuture;
 @RequiredArgsConstructor
 @Slf4j
 @Component
-public class KafkaNormalProducer {
+public class KafkaCommonProducer {
     private final KafkaTemplate<String, String> kafkaTemplate;
     private final DefaultConfig defaultConfig;
 

+ 1 - 1
ruoyi-common/ruoyi-common-message/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1,2 +1,2 @@
 org.dromara.common.message.kafka.aop.aspect.SyncDataToLocalAspect
-org.dromara.common.message.kafka.producer.KafkaNormalProducer
+org.dromara.common.message.kafka.producer.KafkaCommonProducer

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/RuoYiBackstageApplication.java

@@ -4,6 +4,8 @@ import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.context.metrics.buffering.BufferingApplicationStartup;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.ComponentScans;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.scheduling.annotation.EnableScheduling;
 

+ 46 - 30
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/business/payments/ThirdPayBusiness.java

@@ -2,8 +2,11 @@ package org.dromara.backstage.business.payments;
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSONObject;
 import com.egzosn.pay.common.util.DateUtils;
 import com.egzosn.pay.spring.boot.core.PayServiceManager;
 import com.egzosn.pay.spring.boot.core.bean.MerchantPayOrder;
@@ -16,11 +19,12 @@ import org.dromara.backstage.payment.domain.vo.PayOrderVo;
 import org.dromara.backstage.payment.service.IPayOrderService;
 import org.dromara.backstage.payment.util.Img2Base64Util;
 import org.dromara.backstage.payment.util.QRCodeUtil;
+import org.dromara.common.core.api.ReturnResult;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.enums.BalanceUpdateEnum;
 import org.dromara.common.core.enums.CreditStatusEnum;
 import org.dromara.common.core.enums.CreditTypeEnum;
-import org.dromara.common.core.utils.SpringUtils;
+import org.dromara.common.core.enums.ResultCodeEnum;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -46,6 +50,7 @@ public class ThirdPayBusiness {
     private final IPayOrderService payOrderService;
     private final PayOrderBusiness payOrderBusiness;
     private final WechatPayConfig wechatPayConfig;
+    //private final PayServiceManager manager;
 
     /**
      * 生成充值收款二维码
@@ -182,33 +187,44 @@ public class ThirdPayBusiness {
     }
 
     public R<Map<String,String>> createWechatQrCode(PayOrderVo vo) throws Exception {
-        String orderSn = vo.getOrderId().toString();
-        String callBackUrl = vo.getBackUrl() + orderSn;
-        BigDecimal amount = vo.getReceiptMoney();
-        Map<String, String> mapCode = new HashMap<>();
-        mapCode.put("orderSn", vo.getOrderId().toString());
-
-        String detailsId = "2";
-        String wayTrade = "NATIVE";
-        Map<String, Object> addition = new HashMap<String, Object>();
-        addition.put("callBackUrl", callBackUrl);
-
-        MerchantPayOrder payOrder = new MerchantPayOrder(detailsId, wayTrade, vo.getTitle(), "摘要",
-                                                         vo.getReceiptMoney(), orderSn);
-        payOrder.setAddition(JSONObject.toJSONString(addition));
-
-        PayServiceManager manager = SpringUtils.getBean(PayServiceManager.class);
-        // 存放在二维码中的内容
-        String text = manager.getQrPay(payOrder);
-        // String text = "";
-        // 嵌入二维码的图片路径
-        String imgPath = wechatPayConfig.getQrCodeEmbed();
-        // 生成的二维码的路径及名称
-        String destPath = wechatPayConfig.getQrCodeDir() + "/"+ DateUtils.formatDate(new Date(), "yyyy/MM/dd/HHmmssSSS-") + amount + ".jpg";
-        // 生成二维码
-        QRCodeUtil.encode(text, imgPath, destPath, true);
-        mapCode.put("qrCode", Img2Base64Util.getImgStr(destPath));
-
-        return R.ok(mapCode);
+        String sendUrl = "http://localhost:8083/pay/qrCode";
+        HttpRequest req = HttpUtil.createPost(sendUrl);
+        req.body(JSONUtil.toJsonStr(vo));
+        try(HttpResponse res = req.execute()){
+            JSONObject object = JSONUtil.parseObj(res.body());
+            //return JSONUtil.toBean(res.body(), ReturnResult.class);
+            return R.ok();
+        }catch (Exception e){
+            log.error("[生成微信收款码错误]-[{0}]",e);
+            return R.fail("[生成微信收款码错误]");
+        }
+        //String orderSn = vo.getOrderId().toString();
+        //String callBackUrl = vo.getBackUrl() + orderSn;
+        //BigDecimal amount = vo.getReceiptMoney();
+        //Map<String, String> mapCode = new HashMap<>();
+        //mapCode.put("orderSn", vo.getOrderId().toString());
+        //
+        //String detailsId = "2";
+        //String wayTrade = "NATIVE";
+        //Map<String, Object> addition = new HashMap<>();
+        //addition.put("callBackUrl", callBackUrl);
+        //
+        //MerchantPayOrder payOrder = new MerchantPayOrder(detailsId, wayTrade, vo.getTitle(), "摘要",
+        //                                                 vo.getReceiptMoney(), orderSn);
+        //payOrder.setAddition(JSONObject.toJSONString(addition));
+        //
+        ////PayServiceManager manager = SpringUtils.getBean(PayServiceManager.class);
+        //// 存放在二维码中的内容
+        ////String text = manager.getQrPay(payOrder);
+        // String text = "1234567890123456890";
+        //// 嵌入二维码的图片路径
+        //String imgPath = wechatPayConfig.getQrCodeEmbed();
+        //// 生成的二维码的路径及名称
+        //String destPath = wechatPayConfig.getQrCodeDir() + "/"+ DateUtils.formatDate(new Date(), "yyyy/MM/dd/HHmmssSSS-") + amount + ".jpg";
+        //// 生成二维码
+        //QRCodeUtil.encode(text, imgPath, destPath, true);
+        //mapCode.put("qrCode", Img2Base64Util.getImgStr(destPath));
+
+        //return R.ok(mapCode);
     }
 }

+ 2 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/mq/PushKafkaData.java

@@ -5,14 +5,14 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
-import org.dromara.common.message.kafka.producer.KafkaNormalProducer;
+import org.dromara.common.message.kafka.producer.KafkaCommonProducer;
 import org.springframework.stereotype.Service;
 
 @RequiredArgsConstructor
 @Slf4j
 @Service
 public class PushKafkaData {
-    private final KafkaNormalProducer kafkaNormalProducer;
+    private final KafkaCommonProducer kafkaNormalProducer;
     private final DefaultConfig defaultConfig;
 
     public void sendKafkaMessage(String topic, String eventType, String sender, Object data){

+ 9 - 2
ruoyi-modules/ruoyi-backstage/src/main/java/org/dromara/backstage/payment/config/MerchantPayServiceConfigurer.java

@@ -4,6 +4,10 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
 import com.egzosn.pay.spring.boot.core.PayServiceConfigurer;
 import com.egzosn.pay.spring.boot.core.configurers.MerchantDetailsServiceConfigurer;
 import com.egzosn.pay.spring.boot.core.configurers.PayMessageConfigurer;
+import com.egzosn.pay.spring.boot.core.merchant.PaymentPlatform;
+import com.egzosn.pay.spring.boot.core.provider.merchant.platform.AliPaymentPlatform;
+import com.egzosn.pay.spring.boot.core.provider.merchant.platform.PaymentPlatforms;
+import com.egzosn.pay.spring.boot.core.provider.merchant.platform.WxPaymentPlatform;
 import lombok.RequiredArgsConstructor;
 import org.dromara.backstage.payment.handlers.WxPayMessageHandler;
 import org.springframework.context.annotation.Configuration;
@@ -78,7 +82,10 @@ public class MerchantPayServiceConfigurer implements PayServiceConfigurer {
     }
 
     @Override
-    public void configure(PayMessageConfigurer payMessageConfigurer) {
-
+    public void configure(PayMessageConfigurer configurer) {
+        PaymentPlatform aliPaymentPlatform = PaymentPlatforms.getPaymentPlatform(AliPaymentPlatform.platformName);
+        //configurer.addHandler(aliPaymentPlatform, aliPayMessageHandler);
+        //configurer.addInterceptor(aliPaymentPlatform, spring.getBean(AliPayMessageInterceptor.class));
+        configurer.addHandler(PaymentPlatforms.getPaymentPlatform(WxPaymentPlatform.platformName),wxPayMessageHandler);
     }
 }

+ 2 - 0
ruoyi-modules/ruoyi-backstage/src/main/resources/MET-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1,2 +1,4 @@
 org.dromara.backstage.config.LockConfig
 org.dromara.backstage.payment.config.WechatPayConfig
+org.dromara.backstage.payment.config.ThirdPayBaseConfig
+org.dromara.backstage.payment.config.MerchantPayServiceConfigurer

+ 2 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/mq/PushKafkaData.java

@@ -5,14 +5,14 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.config.DefaultConfig;
 import org.dromara.common.core.constant.DefaultConstants;
-import org.dromara.common.message.kafka.producer.KafkaNormalProducer;
+import org.dromara.common.message.kafka.producer.KafkaCommonProducer;
 import org.springframework.stereotype.Service;
 
 @RequiredArgsConstructor
 @Slf4j
 @Service
 public class PushKafkaData {
-    private final KafkaNormalProducer kafkaNormalProducer;
+    private final KafkaCommonProducer kafkaNormalProducer;
     private final DefaultConfig defaultConfig;
 
     public void sendKafkaMessage(String topic, String eventType, String sender, Object data){

+ 2 - 3
ruoyi-server/ruoyi-server-consume/src/main/java/org/dromara/server/consume/business/BaseBusiness.java

@@ -23,13 +23,12 @@ import org.dromara.common.core.utils.RecordIdUtils;
 import org.dromara.common.message.kafka.constant.EventTypeConstants;
 import org.dromara.common.message.kafka.constant.KafkaTopicConstants;
 import org.dromara.common.message.kafka.enums.EventSenderEnum;
-import org.dromara.common.message.kafka.producer.KafkaNormalProducer;
+import org.dromara.common.message.kafka.producer.KafkaCommonProducer;
 import org.dromara.server.common.domain.consume.bo.ConsumptionBo;
 import org.dromara.server.common.domain.vo.yc.YcPushConsumeInfoVo;
 import org.dromara.server.consume.domain.bo.*;
 import org.dromara.server.consume.domain.vo.*;
 import org.dromara.server.consume.service.*;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -59,7 +58,7 @@ public class BaseBusiness {
     private final IXfTermTotalService termTotalService;
     private final IXfConsumeDetailService consumeDetailService;
     private final IPtBagService bagService;
-    private final KafkaNormalProducer kafkaNormalProducer;
+    private final KafkaCommonProducer kafkaNormalProducer;
     private final DefaultConfig defaultConfig;
 
     @DubboReference

+ 3 - 1
ruoyi-server/ruoyi-server-mqdata/src/main/java/org/dromara/server/mq/consumer/KafkaCloudConsumer.java

@@ -35,7 +35,9 @@ public class KafkaCloudConsumer {
      *
      * @param record 消息记录
      */
-    @KafkaListener(topics = KafkaTopicConstants.OLD_SYNC_TOPIC, groupId = "old-to-cloud-group")
+    //@KafkaListener(topics = KafkaTopicConstants.OLD_SYNC_TOPIC, groupId = "old-to-cloud-group")
+    @KafkaListener(topics = "eventBus_test", groupId = "old-to-cloud-group1")
+
     public void kafkaEventBusHandler(ConsumerRecord<String, String> record) {
         KafkaMessage<?> receiveMsg = JSONUtil.toBean(record.value(), KafkaMessage.class);
         String sender = receiveMsg.getHeader().getSender();