From 40eb64b043fea6c3d654a33074ea1e1e1867ada6 Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Fri, 7 Mar 2025 18:32:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(payment):=20=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E5=AE=9D=E7=BB=91=E5=AE=9A=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/AliPay/AliPayController.java | 11 +++++++++-- .../mcwl/framework/config/SecurityConfig.java | 1 - .../pay/service/impl/AliPayServiceImpl.java | 19 ++++++++++--------- .../service/impl/OrderTradeServiceImpl.java | 2 +- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java index 96d85b6..29b0211 100644 --- a/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java +++ b/mcwl-admin/src/main/java/com/mcwl/web/controller/pay/AliPay/AliPayController.java @@ -92,13 +92,19 @@ public class AliPayController extends BaseController { String state = ShareCodeUtils.idToCode(SecurityUtils.getUserId()); // 防止CSRF攻击 String encodedRedirectUri = URLEncoder.encode(bindUrl, "UTF-8"); + // 线上 +// String authUrl = String.format( +// "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s", +// appId, scope, encodedRedirectUri, state +// ); + // 沙箱 String authUrl = String.format( - "https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s", + "https://openauth-sandbox.dl.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s", appId, scope, encodedRedirectUri, state ); // QrCodeUtil.generate(authUrl, 300, 300, "png", response.getOutputStream()); - return R.ok("成功", authUrl); + return R.ok(authUrl, "成功"); } /** @@ -106,6 +112,7 @@ public class AliPayController extends BaseController { */ @GetMapping("/queryBindStatus") @ApiOperation(value = "支付宝绑定状态查询") + @ResponseBody public R queryTradeStatus() throws Exception { return aliPayService.queryBindStatus(); 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 1dacc75..3df23b8 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 @@ -129,7 +129,6 @@ public class SecurityConfig { requests.antMatchers("/login", "/register", "/captchaImage", - "/ali/pay/doPay", "/ali/pay/notify", "/ali/pay/callback", "/file/**", diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java index bb15516..63b27f7 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/AliPayServiceImpl.java @@ -20,6 +20,7 @@ import com.alipay.api.request.AlipayFundTransUniTransferRequest; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.response.AlipayFundAccountQueryResponse; import com.alipay.api.response.AlipayFundTransUniTransferResponse; +import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.alipay.easysdk.factory.Factory; import com.alipay.easysdk.kernel.Config; import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse; @@ -200,7 +201,8 @@ public class AliPayServiceImpl implements AliPayService { tradeEntity.getCode(), orderTradeDto.getAmount().toString()); // 缓存到redis - redisCache.setCacheObject(tradeEntity.getCode() + "_promotionId", orderTradeDto.getPromotionId()); + if (Objects.nonNull(orderTradeDto.getPromotionId())) + redisCache.setCacheObject(tradeEntity.getCode() + "_promotionId", orderTradeDto.getPromotionId(), 15, TimeUnit.MINUTES); // AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999"); //参照官方文档响应示例,解析返回结果 String httpBodyStr = payResponse.getHttpBody(); @@ -308,11 +310,11 @@ public class AliPayServiceImpl implements AliPayService { .one(); if (Objects.isNull(sysUserPayAccount)) { - redisCache.setCacheObject("alipay:bind:user:status:", 0, 4, TimeUnit.SECONDS); - return R.ok(0); + redisCache.setCacheObject("alipay:bind:user:status:" + SecurityUtils.getUserId(), "0", 4, TimeUnit.SECONDS); + return R.ok("0"); } - redisCache.setCacheObject("alipay:bind:user:status:", 1, 4, TimeUnit.SECONDS); - return R.ok(1); + redisCache.setCacheObject("alipay:bind:user:status:" + SecurityUtils.getUserId(), "1", 4, TimeUnit.SECONDS); + return R.ok("1"); } /** @@ -467,7 +469,7 @@ public class AliPayServiceImpl implements AliPayService { AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); request.setCode(authCode); request.setGrantType("authorization_code"); - com.alipay.api.response.AlipaySystemOauthTokenResponse response = alipayClient.execute(request); + AlipaySystemOauthTokenResponse response = alipayClient.certificateExecute(request); if (response.isSuccess()) { // 支付宝用户唯一ID String openId = response.getOpenId(); @@ -487,15 +489,14 @@ public class AliPayServiceImpl implements AliPayService { userPayAccount.setOpenId(openId); userPayAccount.setType(0); sysUserPayAccountService.save(userPayAccount); - redisCache.setCacheObject("alipay:bind:user:status:", 1, 4, TimeUnit.SECONDS); + redisCache.setCacheObject("alipay:bind:user:status:" + userId, "1", 4, TimeUnit.SECONDS); return "success"; } else { System.out.println("绑定失败:" + response.getSubMsg()); - redisCache.setCacheObject("alipay:bind:user:status:", 0, 4, TimeUnit.SECONDS); + redisCache.setCacheObject("alipay:bind:user:status:" + userId, "0", 4, TimeUnit.SECONDS); return "fail"; } } catch (AlipayApiException e) { - redisCache.setCacheObject("alipay:bind:user:status:", 0, 4, TimeUnit.SECONDS); return "fail"; } diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java index 3835bd3..8c77347 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/impl/OrderTradeServiceImpl.java @@ -237,7 +237,7 @@ public class OrderTradeServiceImpl extends ServiceImpl