From 0f4459e4201fdc19185b7dd03215871f036acd70 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期三, 28 五月 2025 16:45:01 +0800
Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile into dev

---
 ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java |   86 +++++++++++++++++++++++++++++++++----------
 1 files changed, 66 insertions(+), 20 deletions(-)

diff --git a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
index c3d5bc2..0d927f1 100644
--- a/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
+++ b/ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java
@@ -1,5 +1,7 @@
 package com.ruoyi.payment.controller;
 
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.internal.util.AlipaySignature;
 import com.ruoyi.common.core.domain.R;
 import com.ruoyi.common.core.web.domain.AjaxResult;
 import com.ruoyi.order.api.feignClient.ChargingOrderClient;
@@ -14,8 +16,12 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.PrintWriter;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
 
 /**
  * @author zhibing.pu
@@ -95,35 +101,75 @@
 	private ChargingOrderClient chargingOrderClient;
 	@ResponseBody
 	@PostMapping(value = "/callBack")
-	public void chargingOrderALICallback(@RequestBody AliQueryOrder aliQueryOrder, HttpServletResponse response) {
+	public void chargingOrderALICallback(HttpServletRequest request, HttpServletResponse response) {
 		try {
-			String out_trade_no = aliQueryOrder.getOutTradeNo();
-			String transaction_id = aliQueryOrder.getTradeNo();
-			String attach = aliQueryOrder.getPassbackParams();
-			String substring = out_trade_no.substring(0, 2);
-			switch (substring){
-				//购物订单
-				case "GW":
-					R r = orderClient.callBack(out_trade_no, transaction_id);
-					System.err.println("----收到购物回调");
-					break;
-				case "HY":
-					orderClient.vipCallBack(out_trade_no,transaction_id);
-					System.err.println("----收到会员回调");
-					break;
-				case "CD":
-					chargingOrderClient.chargingOrderWXCallback(out_trade_no, transaction_id, attach);
-					System.err.println("----充电支付回调");
-					break;
+			Map<String, String> callback = alipayCallback(request);
+			if(null != callback){
+				String out_trade_no = callback.get("out_trade_no");
+				String attach = callback.get("subject");
+				String total_amount = callback.get("total_amount");
+				String transaction_id = callback.get("trade_no");
+				String substring = out_trade_no.substring(0, 2);
+				switch (substring){
+					//购物订单
+					case "GW":
+						R r = orderClient.callBack(out_trade_no, transaction_id);
+						System.err.println("----收到购物回调");
+						break;
+					case "HY":
+						orderClient.vipCallBack(out_trade_no,transaction_id);
+						System.err.println("----收到会员回调");
+						break;
+					case "CD":
+						chargingOrderClient.chargingOrderALICallback(out_trade_no, transaction_id, attach);
+						System.err.println("----充电支付回调");
+						break;
+				}
+				PrintWriter writer = response.getWriter();
+				writer.println("success");
+				writer.flush();
+				writer.close();
 			}
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
-
 	
 	
 	
 	
+	public Map<String, String> alipayCallback(HttpServletRequest request){
+		Map<String,String> params = new HashMap<String,String>();
+		Map requestParams = request.getParameterMap();
+		for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
+			String name = (String) iter.next();
+			String[] values = (String[]) requestParams.get(name);
+			String valueStr = "";
+			for (int i = 0; i < values.length; i++) {
+				valueStr = (i == values.length - 1) ? valueStr + values[i]
+						: valueStr + values[i] + ",";
+			}
+			params.put(name, valueStr);
+		}
+		try {
+			boolean flag = AlipaySignature.rsaCheckV1(params, aliProperties.getAlipayPublicKey(), "UTF-8","RSA2");
+			if(flag){
+				Map<String, String> map = new HashMap<>();
+				String out_trade_no = params.get("out_trade_no");
+				String subject = params.get("subject");
+				String total_amount = params.get("total_amount");
+				String trade_no = params.get("trade_no");
+				map.put("out_trade_no", out_trade_no);//商家订单号
+				map.put("subject", subject);
+				map.put("total_amount", total_amount);
+				map.put("trade_no", trade_no);//支付宝交易号
+				return map;
+			}
+			
+		} catch (AlipayApiException e) {
+			e.printStackTrace();
+		}
+		return null;
+	}
 	
 }

--
Gitblit v1.7.1