diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPayIntegration.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPayIntegration.java index 3215220..92c8820 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPayIntegration.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPayIntegration.java @@ -27,11 +27,11 @@ public class AliPayIntegration { public String pay(OrderTrade tradeEntity) throws Exception { Factory.setOptions(config); //调用支付宝的接口 -// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace() -// .preCreate(tradeEntity.getUserName(), -// tradeEntity.getCode(), -// tradeEntity.getPaymentAmount().toString()); - AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999"); + AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace() + .preCreate(tradeEntity.getUserName(), + tradeEntity.getCode(), + tradeEntity.getPaymentAmount().toString()); +// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999"); //参照官方文档响应示例,解析返回结果 String httpBodyStr = payResponse.getHttpBody(); JSONObject jsonObject = JSONObject.parseObject(httpBodyStr); diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/OrderTradeController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/OrderTradeController.java index 00cfb8d..e32bab8 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/OrderTradeController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/OrderTradeController.java @@ -1,6 +1,7 @@ package com.mcwl.web.controller.pay; import cn.hutool.extra.qrcode.QrCodeUtil; +import com.alipay.easysdk.factory.Factory; import com.mcwl.common.core.controller.BaseController; import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.common.core.page.TableDataInfo; @@ -15,8 +16,11 @@ import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Objects; import static com.mcwl.common.utils.PageUtils.startPage; @@ -110,4 +114,36 @@ public class OrderTradeController extends BaseController { } + @PostMapping("/notify") // 注意这里必须是POST接口 + public String payNotify(HttpServletRequest request) throws Exception { + System.out.println("aaaaa"); + 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"; + } + + } diff --git a/mcwl-admin/src/main/resources/application.yml b/mcwl-admin/src/main/resources/application.yml index 9ee7657..f36a688 100644 --- a/mcwl-admin/src/main/resources/application.yml +++ b/mcwl-admin/src/main/resources/application.yml @@ -95,7 +95,7 @@ token: # 令牌密钥 secret: abcdefghijklmnopqrstuvwxyz # 令牌有效期(默认30分钟) - expireTime: 30 + expireTime: 1440 # MyBatis Plus配置 mybatis-plus: @@ -180,8 +180,8 @@ mall: protocol: https gatewayHost: openapi-sandbox.dl.alipaydev.com signType: RSA2 - appId: 9021000140696171 - privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCIw8lnyhxyCK/2NLXeJcZUwOoU9hA6Opg5dxJqOrLB0yZpxSrqgv+PooMBzFV5Wwf0s388sC9cdTEUm8NevIAwlioCc2JLfNwgVtfOHVQr4A4bwrzg9zpDJWw5fHmxfGodPCQCF2ZfdY48n/W8eI+6WdInIg7yXUT3/xN3nMepA2J96TYBrqwURoFMzzw0Z3fV+z82QOQrIAJQeMVsTkBZOeZriykNs7sVT+DtLuGDsznEDTj04xu1Miymd81sxeGxmR8j53/nlN4UCnKn+BjwmPGn9/PolSknAzjkgnFaeOX7gG+wSYus+R6UcVEvql3uYEHp4iBi/dukV/vXw9xzAgMBAAECggEABrHOwg3apppWQq8B2AXxV2S6EJya3r7PhMCXXivRZDt5veOw3hnbeKRz1TqzVGVoVkoTCF13dAcoh+G4BoMjoz02gTg0r41FGTAnECfPXvZwulsl870mVPMYARhevJlieFvhR1jt4e5XMBCEbt1X679J0jCQmryGC72orko2W8eD2NAoEVOZy7ZGhNAsNSAisHDGy0XlDTcU1h9MlEb7qeg1N48L+GrYZB27FHxWR8DwXhK+nlznJrNOPcDhvFds+LM1YH2wV2sKWMPmjW5gZv+kLdHK7tY6oHEmdG8Co4ULSCwQl9/ZCbQJC5n1K80Cxs6GbO02pl2+J/1psNebwQKBgQDqk+O1HuasPGWbbvOZz3RBtaGqnarZWXWPa0K7xtTjyVyNtvdzaU9lY/jHvyCsq/4djmIE9QL4v2HZm6L8X1rPP0mZLGygZuoYhf2G8OaKA1XLFvplYMVNmxa5FHOlW0udxzbIjrNQY5TnMZLsmeI18+1W8n7zMBBrmwJhayioZwKBgQCVQSnSe7SZHXV30I5OVzJtnx2hrerskNtxNAsMjZGgKWk6FKK/5j33SrUCBT6BH+jPrhQqVcdv62c7Vjuj8oM6BH2kUJykXKWGDJgltB8jPvl7Cc+IGKMNcrmD1gF24xzHeAK6m3yfZHAgbsI90kGRAqTvKOR8troBIpXyqcoUFQKBgQCj/louEHlhpiO+w5WITVFQcuOf/PQpWXJnnqwbzMieqvKKnIRoahI4puiQ9JyqOt+/1//MyWGXd2y4Diem2h8JToxsinMyvGAiXuI8iYQSrnw3LExHvZySQb9kCtlCnA3EMzaohaL0q3m5G55EzNwpreuaYpO//jUslUTXyGu3NwKBgAsFN7hR6ADSOwUwwgEo0RFlCUQR2mHDRGC0bghsP49q31kpgubWckbbHkha6MWR/JexC84gbUxnPkUUVe0CEAxtnnVOenJsYNBoB6fpB8+La9JY5BjxcMCicu44E/2aQVq9Er6Cko4WVW0foHn+F1dEsbby9wP6XfuNeTLktIYNAoGAUS2pUS30KMeeVyHj0uFey+tbsDA0MHZal0ZRsNwWCIwlBaouTIVmzKlz5t2Eg4JtoZov1n9T3BU6pnfNqJxOUEirRYz+WJxH9usIy8F3RAICjLqBbIYGdgtF+YSLKPWx9RrB5JRjgOYXByhPyGqQSARI+L4wVQxeENxypfqgLbo= - publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqKWaJol63OuxavPwcqLNahXzxrDDqlqrsFDkeG3j5F+15qUJvBxmKiirAVWXeBkDFf/6cdBlI4gvkfNCE4TUq59nGfpRGEx0Gv5WhPfD1RJMPmjOhbCtuBkQDGPOSKF42zxL+B0o9lmV/z02hPrE5a8D8rarZkmEGFu96o10oMcg6o75u0JSDH+hBgA+B42zDghpLrEyMoljJDt5cQwnatStmKpHlhSZoKnzTwWN4q8YAMy/8J8yvy/RMz6jwntacbN8Rm9d1bM7BDCAU62CjhGZKLu14HrFRX/bDSlnL6Ud+J9Hhnr6sYSCG+Oqu3hu2zpeqRFVj/vKPqOsIZ8fUwIDAQAB - notifyUrl: http://susan.net.cn/notify + appId: 9021000135682614 + privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0= + publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB + notifyUrl: https://702bc39c.r27.cpolar.top/web/pay/notify gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do diff --git a/mcwl-framework/src/main/java/com/mcwl/framework/config/SecurityConfig.java b/mcwl-framework/src/main/java/com/mcwl/framework/config/SecurityConfig.java index e8b8e25..82499cf 100644 --- a/mcwl-framework/src/main/java/com/mcwl/framework/config/SecurityConfig.java +++ b/mcwl-framework/src/main/java/com/mcwl/framework/config/SecurityConfig.java @@ -133,6 +133,7 @@ public class SecurityConfig // 静态资源,可匿名访问 .antMatchers(HttpMethod.GET, "/", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/profile/**").permitAll() .antMatchers("/swagger-ui.html", "/swagger-resources/**", "/webjars/**", "/*/api-docs", "/druid/**").permitAll() + .antMatchers("/web/pay/notify").permitAll() // 除上面外的所有请求全部需要鉴权认证 .anyRequest().authenticated(); }) diff --git a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java index a617d5b..02a0085 100644 --- a/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java +++ b/mcwl-memberCenter/src/main/java/com/mcwl/memberCenter/consumer/MemberBillingConsumer.java @@ -28,6 +28,7 @@ public class MemberBillingConsumer { try { // TODO 发送短信提醒用户会员账单,如果支付成功,更新last_payment_date,并重新计算end_date(start_date + 1个月) log.info("获取到会员账单的数据:{}", member); + channel.basicAck(message.getMessageProperties().getDeliveryTag(), false); } catch (Exception e) { log.error("处理会员账单消息时出错: {}", e.getMessage(), e); try {