From 18fb219ee5ed5c267665b4c84d2306eea25349f6 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 10 Oct 2023 16:09:33 +0800
Subject: [PATCH] redbagprod

---
 src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java |   65 ++++++++++++++++++++++++++++----
 1 files changed, 56 insertions(+), 9 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
index b9655e0..a3e1bc2 100644
--- a/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
+++ b/src/main/java/cc/mrbird/febs/pay/controller/PayCallBackController.java
@@ -1,14 +1,23 @@
 package cc.mrbird.febs.pay.controller;
 
-import cc.mrbird.febs.common.entity.FebsResponse;
-import com.alibaba.fastjson.JSONObject;
+import cc.mrbird.febs.pay.properties.AliPayProperties;
+import cc.mrbird.febs.pay.service.AliIPayService;
+import cc.mrbird.febs.pay.service.IPayService;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.internal.util.AlipaySignature;
+import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;
+import com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
 import com.ijpay.alipay.AliPayApi;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
@@ -21,14 +30,52 @@
 @RequestMapping(value = "/api/pay")
 public class PayCallBackController {
 
+    @Autowired
+    private AliIPayService payService;
+
+    @Resource
+    private AliPayProperties aliPayProperties;
+
+    @Autowired
+    private WxPayService wxPayService;
+//    private WxPayService wxPayService = new com.github.binarywang.wxpay.service.impl.WxPayServiceImpl();
+
+    @Autowired
+    private IPayService wechatPayService;
+
     @RequestMapping("/aliCallBack")
-    public FebsResponse aliPayCallBack(HttpServletRequest request) {
-        log.info("进入回调");
+    public String aliPayCallBack(HttpServletRequest request){
+        log.info("进入支付宝回调");
         Map<String, String> params = AliPayApi.toMap(request);
-        log.info("回调参数:{}", JSONObject.toJSONString(params));
-        for (Map.Entry<String, String> entry : params.entrySet()) {
-            log.info("支付宝回调:{}===={}", entry.getKey(), entry.getValue());
+
+        boolean verifyResult = false;
+        try {
+            verifyResult = AlipaySignature.verifyV1(params, aliPayProperties.getPublicKey(), "UTF-8", "RSA2");
+        } catch (AlipayApiException e) {
+            log.info("=验证失败=:{}", params);
+            return "failure";
         }
-        return new FebsResponse().success();
+
+        if (verifyResult) {
+            if ("TRADE_SUCCESS".equals(params.get("trade_status")) || "TRADE_FINISHED".equals(params.get("trade_status"))) {
+                payService.aliCallback(params);
+                return "success";
+            } else {
+                log.info("支付失败:{}", params);
+                return "failure";
+            }
+        } else {
+            log.info("验证失败:{}", params);
+            return "failure";
+        }
+    }
+
+    @PostMapping(value = "/wxPayCallBack")
+    public String wxPayCallBack(@RequestBody String xmlData) throws WxPayException {
+        log.info("=======微信回调:{}========", xmlData);
+        WxPayOrderNotifyResult notifyResult = this.wxPayService.parseOrderNotifyResult(xmlData);
+
+        wechatPayService.payCallback(notifyResult.toMap());
+        return WxPayNotifyResponse.success("成功");
     }
 }

--
Gitblit v1.9.1