From ae84ae528290f44c66ef14c92f4a68bd3c1ce617 Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期一, 11 十一月 2024 08:50:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java | 88 +++++++++++++++++++++++++++++++++++++------- 1 files changed, 74 insertions(+), 14 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 171369c..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,7 +1,11 @@ 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; +import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.payment.ali.config.AliProperties; import com.ruoyi.payment.ali.v2.AppletPayUtil; import com.ruoyi.payment.api.model.*; @@ -12,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 @@ -44,7 +52,6 @@ if(null != payment){ AliPaymentResp aliPaymentResp = new AliPaymentResp(); aliPaymentResp.setTradeNo(payment.getTradeNo()); - aliPaymentResp.setNotifyUrl(aliProperties.getNotifyUrl()); return R.ok(aliPaymentResp); } return R.ok(); @@ -88,28 +95,81 @@ } + @Resource + private OrderClient orderClient; + @Resource + private ChargingOrderClient chargingOrderClient; @ResponseBody - @PostMapping(value = "/allCallBack") - public void chargingOrderALICallback(@RequestBody AliQueryOrder aliQueryOrder, HttpServletResponse response) { + @PostMapping(value = "/callBack") + public void chargingOrderALICallback(HttpServletRequest request, HttpServletResponse response) { try { - String out_trade_no = aliQueryOrder.getOutTradeNo(); - String transaction_id = aliQueryOrder.getTradeNo(); - String attach = aliQueryOrder.getPassbackParams(); -// AjaxResult ajaxResult = chargingOrderService.chargingOrderCallback(2, out_trade_no, transaction_id, attach); -// if (ajaxResult.isSuccess()) { -// PrintWriter writer = response.getWriter(); -// writer.println("success"); -// writer.flush(); -// writer.close(); -// } + 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