From 486cd6ce0541b09a8d88c08ed51c75c844090972 Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期二, 18 二月 2025 17:10:22 +0800
Subject: [PATCH] 对账
---
ruoyi-service/ruoyi-payment/src/main/java/com/ruoyi/payment/controller/AliPayController.java | 90 +++++++++++++++++++++++++++++++++------------
1 files changed, 66 insertions(+), 24 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 886a184..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,39 +101,75 @@
private ChargingOrderClient chargingOrderClient;
@ResponseBody
@PostMapping(value = "/callBack")
- public void chargingOrderALICallback(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.chargingOrderALICallback(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();
}
- 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