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 432ffe4..92dc115 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 @@ -93,16 +93,7 @@ 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-sandbox.dl.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s", - appId, scope, encodedRedirectUri, state - ); + String authUrl = String.format(aliConfig.getOauthUrl(),appId, scope, encodedRedirectUri, state); // QrCodeUtil.generate(authUrl, 300, 300, "png", response.getOutputStream()); return R.ok(authUrl, "成功"); @@ -168,7 +159,7 @@ public class AliPayController extends BaseController { if ("member".equalsIgnoreCase(type)) { if (!Optional.ofNullable(orderTradeDto.getProductId()).isPresent()) { - return R.fail(HttpStatus.SHOW_ERROR_MSG,"商品id不能为空"); + return R.fail(HttpStatus.SHOW_ERROR_MSG, "商品id不能为空"); } payVo = aliPayService.memberPay(orderTradeDto); // QrCodeUtil.generate(payVo.getUrl(), 300, 300, "png", response.getOutputStream()); @@ -178,12 +169,12 @@ public class AliPayController extends BaseController { } else if ("wallet".equalsIgnoreCase(type)) { // 充值金额只能是整数 if (orderTradeDto.getAmount() % 1 != 0) { - return R.fail(HttpStatus.SHOW_ERROR_MSG,"充值金额只能是整数"); + return R.fail(HttpStatus.SHOW_ERROR_MSG, "充值金额只能是整数"); } payVo = aliPayService.walletPay(orderTradeDto.getAmount()); // QrCodeUtil.generate(payVo.getUrl(), 300, 300, "png", response.getOutputStream()); } else { - return R.fail(HttpStatus.SHOW_ERROR_MSG,"订单类型错误"); + return R.fail(HttpStatus.SHOW_ERROR_MSG, "订单类型错误"); } return R.ok(payVo); @@ -207,12 +198,12 @@ public class AliPayController extends BaseController { .one(); if (Objects.isNull(sysUserPayAccount)) { - return R.fail(HttpStatus.SHOW_ERROR_MSG,"请先绑定支付宝"); + return R.fail(HttpStatus.SHOW_ERROR_MSG, "请先绑定支付宝"); } if (Double.parseDouble(amount) < 0.1) { - return R.fail(HttpStatus.SHOW_ERROR_MSG,"提现金额最小为0.1"); + return R.fail(HttpStatus.SHOW_ERROR_MSG, "提现金额最小为0.1"); } return aliPayService.fetch(amount); diff --git a/mcwl-admin/src/main/resources/application-dev.yml b/mcwl-admin/src/main/resources/application-dev.yml index 755fb00..98f9951 100644 --- a/mcwl-admin/src/main/resources/application-dev.yml +++ b/mcwl-admin/src/main/resources/application-dev.yml @@ -156,11 +156,15 @@ mall: # alipayCertPath: D:\workspace\mochuang\mcwl-ai\mcwl-admin\src\main\resources\cert\dev\alipayPublicCert.crt # # 沙箱支付宝根证书路径 # alipayRootCertPath: D:\workspace\mochuang\mcwl-ai\mcwl-admin\src\main\resources\cert\dev\alipayRootCert.crt - notifyUrl: http://113.45.190.154:8080/ali/pay/notify + notifyUrl: https://4e3c963e.r27.cpolar.top/ali/pay/notify # 沙箱支付宝网关 gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do # 绑定回调 - bindUrl: http://113.45.190.154:8080/ali/pay/callback + bindUrl: https://4e3c963e.r27.cpolar.top/ali/pay/callback + # 参与方的标识类型,目前支持如下类型: 1、ALIPAY_USER_ID 支付宝的会员ID 2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式 3、ALIPAY_OPEN_ID:支付宝openid + identityType: ALIPAY_USER_ID + # 授权url + oauthUrl: https://openauth-sandbox.dl.alipaydev.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s huawei: obs: diff --git a/mcwl-admin/src/main/resources/application-druid.yml b/mcwl-admin/src/main/resources/application-druid.yml index e3714bf..0b3eb3f 100644 --- a/mcwl-admin/src/main/resources/application-druid.yml +++ b/mcwl-admin/src/main/resources/application-druid.yml @@ -148,6 +148,10 @@ mall: gatewayUrl: https://openapi.alipay.com/gateway.do # 绑定回调 bindUrl: https://36072a51.r27.cpolar.top/ali/pay/callback + # 参与方的标识类型,目前支持如下类型: 1、ALIPAY_USER_ID 支付宝的会员ID 2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式 3、ALIPAY_OPEN_ID:支付宝openid + identityType: ALIPAY_OPEN_ID + # 授权url + oauthUrl: https://openauth.alipay.com/oauth2/publicAppAuthorize.htm?app_id=%s&scope=%s&redirect_uri=%s&state=%s huawei: obs: diff --git a/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java index 4052da6..a959f2e 100644 --- a/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java +++ b/mcwl-pay/src/main/java/com/mcwl/pay/config/AliConfig.java @@ -30,4 +30,8 @@ public class AliConfig { private String gatewayUrl; @Value("${mall.mgt.aliPayConfig.notifyUrl}") private String notifyUrl; + @Value("${mall.mgt.aliPayConfig.identityType}") + private String identityType; + @Value("${mall.mgt.aliPayConfig.oauthUrl}") + private String oauthUrl; } 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 fd9ca9a..983d2fa 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 @@ -3,6 +3,7 @@ package com.mcwl.pay.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.StrUtil; import cn.hutool.extra.mail.MailUtil; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; @@ -47,6 +48,7 @@ import com.mcwl.system.service.ISysUserPayAccountService; import com.mcwl.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; @@ -324,9 +326,8 @@ public class AliPayServiceImpl implements AliPayService { // 收款方信息 Participant payeeInfo = new Participant(); -// 线上环境 payeeInfo.setIdentity(sysUserPayAccount.getOpenId()); - payeeInfo.setIdentityType("ALIPAY_OPEN_ID"); + payeeInfo.setIdentityType(aliConfig.getIdentityType()); model.setPayeeInfo(payeeInfo); request.setBizModel(model); @@ -440,6 +441,7 @@ public class AliPayServiceImpl implements AliPayService { if (response.isSuccess()) { // 支付宝用户唯一ID String openId = response.getOpenId(); + String uid = response.getUserId(); // 判断是否已经绑定过 SysUserPayAccount sysUserPayAccount = sysUserPayAccountService.lambdaQuery() .eq(SysUserPayAccount::getUserId, userId) @@ -450,12 +452,12 @@ public class AliPayServiceImpl implements AliPayService { // 已经绑定过,直接返回 return "success"; } - System.out.println("绑定成功!openId:" + openId); + System.out.println("绑定成功!openId/uid:" + openId); // 将openId与当前商城用户绑定(保存到数据库) SysUserPayAccount userPayAccount = new SysUserPayAccount(); userPayAccount.setUserId(userId); userPayAccount.setAppId(aliConfig.getAppId()); - userPayAccount.setOpenId(openId); + userPayAccount.setOpenId(StrUtil.isEmpty(openId) ? uid : openId); userPayAccount.setType(0); sysUserPayAccountService.save(userPayAccount); redisCache.setCacheObject("alipay:bind:user:status:" + userId, "1", 4, TimeUnit.SECONDS); diff --git a/mcwl-resource/src/main/resources/mapper/resource/ModelImageMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/ModelImageMapper.xml index 5e49fee..7430480 100644 --- a/mcwl-resource/src/main/resources/mapper/resource/ModelImageMapper.xml +++ b/mcwl-resource/src/main/resources/mapper/resource/ModelImageMapper.xml @@ -61,6 +61,7 @@ sys_user u ON mil.user_id = u.user_id WHERE mil.user_id = #{userId} + and mil.del_flag = '0' and mi.del_flag = '0' and u.del_flag = '0' ORDER BY diff --git a/mcwl-resource/src/main/resources/mapper/resource/ModelMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/ModelMapper.xml index 8beee15..adf3ad4 100644 --- a/mcwl-resource/src/main/resources/mapper/resource/ModelMapper.xml +++ b/mcwl-resource/src/main/resources/mapper/resource/ModelMapper.xml @@ -132,6 +132,7 @@ ON ml.user_id = u.user_id WHERE ml.user_id = #{userId} + and ml.del_flag = '0' and m.del_flag = '0' and u.del_flag = '0' ORDER BY diff --git a/mcwl-resource/src/main/resources/mapper/resource/WorkFlowMapper.xml b/mcwl-resource/src/main/resources/mapper/resource/WorkFlowMapper.xml index 297ffa1..ee72553 100644 --- a/mcwl-resource/src/main/resources/mapper/resource/WorkFlowMapper.xml +++ b/mcwl-resource/src/main/resources/mapper/resource/WorkFlowMapper.xml @@ -88,6 +88,7 @@ ON wfl.user_id = u.user_id WHERE wfl.user_id = #{userId} + and wfl.del_flag = '0' and wf.del_flag = '0' and u.del_flag = '0' ORDER BY