diff --git a/pom.xml b/pom.xml index eee20eb..75a4873 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,16 @@ + + + + + com.alipay.sdk + alipay-easysdk + 2.2.1 + + + com.alipay.sdk alipay-sdk-java diff --git a/src/main/java/com/muyu/system/controller/PaymentController.java b/src/main/java/com/muyu/system/controller/PaymentController.java index 29e7dc6..9b12685 100644 --- a/src/main/java/com/muyu/system/controller/PaymentController.java +++ b/src/main/java/com/muyu/system/controller/PaymentController.java @@ -6,16 +6,21 @@ import com.alipay.api.AlipayClient; import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.response.AlipayTradePagePayResponse; +import com.alipay.easysdk.factory.Factory; import com.muyu.common.core.domain.Result; import com.muyu.common.system.domain.PaymentParam; import com.muyu.config.util.SfUtil; import com.muyu.config.util.StandingRes; import com.muyu.system.service.SysUserService; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import java.util.HashMap; +import java.util.Map; + /** * @Author: wangxinyuan * @Date: 2024/8/25 下午3:21 @@ -77,6 +82,38 @@ public class PaymentController { return Result.success(response.getBody()); } + + @PostMapping("/notify") // 注意这里必须是POST接口 + public String payNotify(HttpServletRequest request) throws Exception { + if (request.getParameter("trade_status").equals("TRADE_SUCCESS")) { + System.out.println("=========支付宝异步回调========"); + + Map params = new HashMap<>(); + Map requestParams = request.getParameterMap(); + for (String name : requestParams.keySet()) { + params.put(name, request.getParameter(name)); + // System.out.println(name + " = " + request.getParameter(name)); + } + + String tradeNo = params.get("out_trade_no"); + String gmtPayment = params.get("gmt_payment"); + String alipayTradeNo = params.get("trade_no"); + // 支付宝验签 + if (Factory.Payment.Common().verifyNotify(params)) { + // 验签通过 + System.out.println("交易名称: " + params.get("subject")); + System.out.println("交易状态: " + params.get("trade_status")); + System.out.println("支付宝交易凭证号: " + params.get("trade_no")); + System.out.println("商户订单号: " + params.get("out_trade_no")); + System.out.println("交易金额: " + params.get("total_amount")); + System.out.println("买家在支付宝唯一id: " + params.get("buyer_id")); + System.out.println("买家付款时间: " + params.get("gmt_payment")); + System.out.println("买家付款金额: " + params.get("buyer_pay_amount")); + } + } + return "success"; + } + @Autowired private SysUserService userService; //TODO 充值记录添加