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