From 32a50b8394151dd907ee05d889364fae337005ce Mon Sep 17 00:00:00 2001 From: yang <2119157836@qq.com> Date: Fri, 7 Mar 2025 16:15:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(pay):=20=E6=B7=BB=E5=8A=A0=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E5=AE=9D=E7=BB=91=E5=AE=9A=E7=8A=B6=E6=80=81=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pay/AliPay/AliPayController.java | 12 ++++++ .../src/main/resources/application-dev.yml | 4 +- .../com/mcwl/pay/service/AliPayService.java | 2 + .../pay/service/impl/AliPayServiceImpl.java | 37 +++++++++++++++++-- 4 files changed, 50 insertions(+), 5 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 ad4a147..96d85b6 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 @@ -32,6 +32,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; import java.io.FileNotFoundException; @@ -84,6 +85,7 @@ public class AliPayController extends BaseController { */ @ApiOperation(value = "支付宝绑定") @GetMapping("/generateQrCode") + @ResponseBody public R generateQrCode(HttpServletResponse response) throws Exception { String scope = "auth_user"; // 需要获取用户信息 String appId = aliConfig.getAppId(); @@ -99,6 +101,16 @@ public class AliPayController extends BaseController { return R.ok("成功", authUrl); } + /** + * 支付宝绑定状态查询 + */ + @GetMapping("/queryBindStatus") + @ApiOperation(value = "支付宝绑定状态查询") + public R queryTradeStatus() throws Exception { + + return aliPayService.queryBindStatus(); + } + /** * 授权回调 * diff --git a/mcwl-admin/src/main/resources/application-dev.yml b/mcwl-admin/src/main/resources/application-dev.yml index beea40a..2f6c1a6 100644 --- a/mcwl-admin/src/main/resources/application-dev.yml +++ b/mcwl-admin/src/main/resources/application-dev.yml @@ -143,11 +143,11 @@ mall: alipayCertPath: cert/dev/alipayPublicCert.crt # 沙箱支付宝根证书路径 alipayRootCertPath: cert/dev/alipayRootCert.crt - notifyUrl: https://53a65908.r27.cpolar.top/ali/pay/notify + notifyUrl: https://1e312ae8.r27.cpolar.top/ali/pay/notify # 沙箱支付宝网关 gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do # 绑定回调 - bindUrl: https://4b0ca615.r27.cpolar.top/ali/pay/callback + bindUrl: https://1e312ae8.r27.cpolar.top/ali/pay/callback huawei: obs: diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/service/AliPayService.java b/mcwl-pay/src/main/java/com/mcwl/pay/service/AliPayService.java index 4c07bf5..778647b 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/service/AliPayService.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/service/AliPayService.java @@ -22,4 +22,6 @@ public interface AliPayService { R queryTradeStatus(String outTradeNo) throws Exception; PayVo walletPay(Double amount) throws Exception; + + R queryBindStatus(); } 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 699f7a9..bb15516 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 @@ -25,6 +25,7 @@ import com.alipay.easysdk.kernel.Config; import com.alipay.easysdk.payment.common.models.AlipayTradeCancelResponse; import com.alipay.easysdk.payment.common.models.AlipayTradeQueryResponse; import com.alipay.easysdk.payment.facetoface.models.AlipayTradePrecreateResponse; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.mcwl.common.JSONUtils; import com.mcwl.common.core.domain.AjaxResult; import com.mcwl.common.core.domain.R; @@ -287,6 +288,33 @@ public class AliPayServiceImpl implements AliPayService { return payVo; } + /** + * 查询支付宝账户绑定状态 + * + * @return 0:未绑定,1:已绑定 + */ + @Override + public R queryBindStatus() { + + // 查询redis中支付宝绑定状态 + String bindStatus = redisCache.getCacheObject("alipay:bind:user:status:" + SecurityUtils.getUserId()); + + if (Objects.nonNull(bindStatus)) { + return R.ok(bindStatus); + } + + SysUserPayAccount sysUserPayAccount = sysUserPayAccountService.lambdaQuery() + .eq(SysUserPayAccount::getUserId, SecurityUtils.getUserId()) + .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:", 1, 4, TimeUnit.SECONDS); + return R.ok(1); + } + /** * 支付宝转账方法 * @@ -459,12 +487,15 @@ public class AliPayServiceImpl implements AliPayService { userPayAccount.setOpenId(openId); userPayAccount.setType(0); sysUserPayAccountService.save(userPayAccount); + redisCache.setCacheObject("alipay:bind:user:status:", 1, 4, TimeUnit.SECONDS); return "success"; } else { System.out.println("绑定失败:" + response.getSubMsg()); + redisCache.setCacheObject("alipay:bind:user:status:", 0, 4, TimeUnit.SECONDS); return "fail"; } } catch (AlipayApiException e) { + redisCache.setCacheObject("alipay:bind:user:status:", 0, 4, TimeUnit.SECONDS); return "fail"; } @@ -545,13 +576,13 @@ public class AliPayServiceImpl implements AliPayService { // 设置应用公钥证书路径(线上) // config.setAppCertPath(getClass().getResource("/cert/appCertPublicKey.crt").getPath()); // 设置应用公钥证书路径(沙箱) - config.setAppCertPath(ResourceUtils.getFile("classpath:"+aliConfig.getAppCertPath()).getAbsolutePath()); + config.setAppCertPath(ResourceUtils.getFile("classpath:" + aliConfig.getAppCertPath()).getAbsolutePath()); // 设置支付宝公钥证书路径 - config.setAlipayPublicCertPath(ResourceUtils.getFile("classpath:"+aliConfig.getAlipayCertPath()).getAbsolutePath()); + config.setAlipayPublicCertPath(ResourceUtils.getFile("classpath:" + aliConfig.getAlipayCertPath()).getAbsolutePath()); // 设置支付宝根证书路径 - config.setRootCertPath(ResourceUtils.getFile("classpath:"+aliConfig.getAlipayRootCertPath()).getAbsolutePath()); + config.setRootCertPath(ResourceUtils.getFile("classpath:" + aliConfig.getAlipayRootCertPath()).getAbsolutePath()); // 设置字符编码格式 config.setCharset("UTF-8");