支付宝登录

This commit is contained in:
Guoqs
2024-06-11 16:30:42 +08:00
parent 0aef83548c
commit d30be0215e
13 changed files with 202 additions and 127 deletions

View File

@@ -131,10 +131,11 @@ public class MemberController extends BaseController {
/**
* 支付寶一键登录
* http://localhost:8080/uniapp/member/wechatLogin
* http://localhost:8080/uniapp/member/alipayLogin
*/
@PostMapping("/alipayLogin")
public RestApiResponse<?> alipayLogin(HttpServletRequest request, @RequestBody WechatLoginDTO dto) {
public RestApiResponse<?> alipayLogin(HttpServletRequest request, @RequestBody AlipayLoginDTO dto) {
logger.info("支付宝小程序登录param:{}", JSON.toJSONString(dto));
RestApiResponse<?> response = null;
try {
// 获取小程序appid
@@ -144,7 +145,7 @@ public class MemberController extends BaseController {
response = new RestApiResponse<>(ImmutableMap.of("memberToken", memberToken));
} catch (Exception e) {
logger.error("支付宝登录异常 param:{}", JSON.toJSONString(dto), e);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_WECHAT_LOGIN_ERROR);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_ALIPAY_LOGIN_ERROR);
}
return response;
}
@@ -199,21 +200,21 @@ public class MemberController extends BaseController {
* 获取openId
* http://localhost:8080/uniapp/member/getOpenId
*/
@PostMapping("/getOpenId")
public RestApiResponse<?> getOpenId(HttpServletRequest request, @RequestBody WeixinPayDTO dto) {
logger.info("获取openId param:{}", dto.toString());
RestApiResponse<?> response;
try {
getMemberIdByAuthorization(request);
String openId = memberService.getOpenIdByCode(dto.getCode());
response = new RestApiResponse<>(ImmutableMap.of("openId", openId));
} catch (Exception e) {
logger.error("获取openId error", e);
response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
}
logger.info("获取openId result:{}", response);
return response;
}
// @PostMapping("/getOpenId")
// public RestApiResponse<?> getOpenId(HttpServletRequest request, @RequestBody WeixinPayDTO dto) {
// logger.info("获取openId param:{}", dto.toString());
// RestApiResponse<?> response;
// try {
// getMemberIdByAuthorization(request);
// String openId = memberService.getOpenIdByCode(dto.getCode());
// response = new RestApiResponse<>(ImmutableMap.of("openId", openId));
// } catch (Exception e) {
// logger.error("获取openId error", e);
// response = new RestApiResponse<>(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
// }
// logger.info("获取openId result:{}", response);
// return response;
// }
/**

View File

@@ -61,47 +61,47 @@ public class PayController extends BaseController {
* http://localhost:8080/uniapp/pay/weixinPay
* @deprecated 使用汇付支付,充值余额
*/
@PostMapping("/weixinPay")
public RestApiResponse<?> weixinPay(HttpServletRequest request, @RequestBody WeixinPayDTO dto) {
logger.info("微信支付 param:{}", dto.toString());
RestApiResponse<?> response;
try {
if (dto != null) {
throw new BusinessException("00500005", "充值功能维护,已有余额可用,推荐使用在线支付");
}
if (StringUtils.isBlank(dto.getCode()) || StringUtils.isBlank(dto.getAmount())) {
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
}
// 鉴权
String memberId = getMemberIdByAuthorization(request);
if (StringUtils.isBlank(memberId)) {
throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR);
}
dto.setMemberId(memberId);
// String openId = memberService.getOpenIdByCode(dto.getCode());
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(memberId);
if (memberBasicInfo == null) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
}
String openId = memberBasicInfo.getOpenId();
dto.setOpenId(openId);
// 充值余额 附加参数
PaymentScenarioDTO paymentScenarioDTO = new PaymentScenarioDTO();
paymentScenarioDTO.setType(ScenarioEnum.BALANCE.getValue());
paymentScenarioDTO.setMemberId(memberId);
dto.setAttach(JSON.toJSONString(paymentScenarioDTO));
dto.setDescription("会员充值余额");
Map<String, Object> weixinMap = orderService.weixinPayV3(dto);
response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap));
} catch (BusinessException e) {
logger.warn("充值余额支付warn", e);
response = new RestApiResponse<>(e.getCode(), e.getMessage());
} catch (Exception e) {
logger.warn("充值余额支付error", e);
response = new RestApiResponse<>();
}
return response;
}
// @PostMapping("/weixinPay")
// public RestApiResponse<?> weixinPay(HttpServletRequest request, @RequestBody WeixinPayDTO dto) {
// logger.info("微信支付 param:{}", dto.toString());
// RestApiResponse<?> response;
// try {
// if (dto != null) {
// throw new BusinessException("00500005", "充值功能维护,已有余额可用,推荐使用在线支付");
// }
// if (StringUtils.isBlank(dto.getCode()) || StringUtils.isBlank(dto.getAmount())) {
// throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
// }
// // 鉴权
// String memberId = getMemberIdByAuthorization(request);
// if (StringUtils.isBlank(memberId)) {
// throw new BusinessException(ReturnCodeEnum.CODE_TOKEN_ERROR);
// }
// dto.setMemberId(memberId);
// // String openId = memberService.getOpenIdByCode(dto.getCode());
// MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(memberId);
// if (memberBasicInfo == null) {
// throw new BusinessException(ReturnCodeEnum.CODE_GET_OPEN_ID_BY_CODE_ERROR);
// }
// String openId = memberBasicInfo.getOpenId();
// dto.setOpenId(openId);
// // 充值余额 附加参数
// PaymentScenarioDTO paymentScenarioDTO = new PaymentScenarioDTO();
// paymentScenarioDTO.setType(ScenarioEnum.BALANCE.getValue());
// paymentScenarioDTO.setMemberId(memberId);
// dto.setAttach(JSON.toJSONString(paymentScenarioDTO));
// dto.setDescription("会员充值余额");
// Map<String, Object> weixinMap = orderService.weixinPayV3(dto);
// response = new RestApiResponse<>(ImmutableMap.of("weixinMap", weixinMap));
// } catch (BusinessException e) {
// logger.warn("充值余额支付warn", e);
// response = new RestApiResponse<>(e.getCode(), e.getMessage());
// } catch (Exception e) {
// logger.warn("充值余额支付error", e);
// response = new RestApiResponse<>();
// }
// return response;
// }
/**
* 7002 支付订单

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.util.PageUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import com.alipay.easysdk.factory.Factory;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.ImmutableMap;
@@ -13,6 +14,7 @@ import com.huifu.adapay.model.Payment;
import com.jsowell.adapay.common.CreateAdaPaymentParam;
import com.jsowell.adapay.config.AbstractAdapayConfig;
import com.jsowell.adapay.factory.AdapayConfigFactory;
import com.jsowell.alipay.service.AliAppletRemoteService;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants;
import com.jsowell.common.constant.UserConstants;
@@ -76,6 +78,9 @@ public class MemberService {
@Autowired
private WxAppletRemoteService wxAppletRemoteService;
@Autowired
private AliAppletRemoteService aliAppletRemoteService;
@Autowired
private MemberPlateNumberRelationService memberPlateNumberRelationService;
@@ -146,9 +151,12 @@ public class MemberService {
if (StringUtils.isBlank(firstLevelMerchantId)) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_MERCHANT_ID_BY_APP_ID_ERROR);
}
if (StringUtils.isBlank(openId)) {
throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR);
}
// 2024年6月11日15点37分 支付宝没有openid改为不校验openid
// if (StringUtils.isBlank(openId)) {
// throw new BusinessException(ReturnCodeEnum.CODE_OPEN_ID_IS_NULL_ERROR);
// }
// 查询手机号码是否注册过
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMobileNumber(phoneNumber, firstLevelMerchantId);
if (Objects.isNull(memberBasicInfo)) {
@@ -160,7 +168,9 @@ public class MemberService {
memberBasicInfo.setNickName("会员" + memberId);
memberBasicInfo.setMobileNumber(phoneNumber);
memberBasicInfo.setMerchantId(Long.valueOf(firstLevelMerchantId));
memberBasicInfo.setOpenId(openId);
if (StringUtils.isBlank(openId)) {
memberBasicInfo.setOpenId(openId);
}
MemberTransactionDTO memberTransactionDTO = new MemberTransactionDTO();
memberTransactionDTO.setMemberBasicInfo(memberBasicInfo);
@@ -208,26 +218,28 @@ public class MemberService {
if (StringUtils.isBlank(mobileNumber)) {
throw new BusinessException(ReturnCodeEnum.CODE_GET_MOBILE_NUMBER_BY_CODE_ERROR);
}
// 通过appid获取运营商id
// String merchantId = pileMerchantInfoService.getMerchantIdByAppId(dto.getAppId());
// if (Objects.isNull(merchantId)) {
// throw new BusinessException(ReturnCodeEnum.CODE_GET_MERCHANT_ID_BY_APP_ID_ERROR);
// }
// 通过code获取openId
String openId = "";
try {
openId = getOpenIdByCode(dto.getOpenIdCode());
openId = wxAppletRemoteService.getOpenIdByCode(dto.getOpenIdCode());
} catch (Exception e) {
log.error("getOpenIdByCode发生异常", e);
}
// 根据appid查询merchantId
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByAppId(APP_ID);
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByAppId(dto.getAppId());
// 查询手机号码是否注册过
return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, openId);
}
public String alipayLogin(WechatLoginDTO dto) {
return "";
public String alipayLogin(AlipayLoginDTO dto) throws Exception {
// 通过密文解密 获取手机号码
String mobileNumber = Factory.Util.AES().decrypt(dto.getMobileNumberCiphertext());
// 根据appid查询merchantId
String firstLevelMerchantId = pileMerchantInfoService.getFirstLevelMerchantIdByAppId(dto.getAppId());
// 查询手机号码是否注册过
return memberRegisterAndLogin(mobileNumber, firstLevelMerchantId, "");
}
/**
@@ -235,9 +247,9 @@ public class MemberService {
* @param code
* @return
*/
public String getOpenIdByCode(String code) {
return wxAppletRemoteService.getOpenIdByCode(code);
}
// public String getOpenIdByCode(String code) {
// return wxAppletRemoteService.getOpenIdByCode(code);
// }
/**
* 处理用户信息

View File

@@ -208,3 +208,5 @@ alipay:
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt5iUV9VA5EDCMFZlxMlZ2NHvkPdwmRwTzN1rNGlf/VITTBvt1F61nQBjTlUIDVxvd77Zs9bS4bA/k2rpo0luDRQeSSgZ5xHDA6A0E4gcwik54s/Ic6DIWGpod/Ci6sSLpq8Fn9/jnR4k12sr4fzQOANdwwnlEtrynLa7j94IWeXeIqXFenLamswqvvwSuMWsVzxub/gXpjeY5t6pzRKxFoh9Cpf6e2lMP3vP8thr+kSYH/37OWndJZw0I1FW+aZzLmERCA/T4wK7u4tVIeLK9xlKGtV1CHki8PjRAazXWEXmoN7dtFGTi5xBBkHof38CVAe94QOn4XSwyegiyA5A3QIDAQAB
# 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数必须外网可以正常访问
notifyUrl: xxxx
# AES密钥
encryptKey: 0TOgnthQKQtoXJaSn5Bbhg==

View File

@@ -202,4 +202,6 @@ alipay:
# 支付宝公钥
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt5iUV9VA5EDCMFZlxMlZ2NHvkPdwmRwTzN1rNGlf/VITTBvt1F61nQBjTlUIDVxvd77Zs9bS4bA/k2rpo0luDRQeSSgZ5xHDA6A0E4gcwik54s/Ic6DIWGpod/Ci6sSLpq8Fn9/jnR4k12sr4fzQOANdwwnlEtrynLa7j94IWeXeIqXFenLamswqvvwSuMWsVzxub/gXpjeY5t6pzRKxFoh9Cpf6e2lMP3vP8thr+kSYH/37OWndJZw0I1FW+aZzLmERCA/T4wK7u4tVIeLK9xlKGtV1CHki8PjRAazXWEXmoN7dtFGTi5xBBkHof38CVAe94QOn4XSwyegiyA5A3QIDAQAB
# 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数必须外网可以正常访问
notifyUrl: xxxx
notifyUrl: xxxx
# AES密钥
encryptKey: 0TOgnthQKQtoXJaSn5Bbhg==

View File

@@ -202,4 +202,6 @@ alipay:
# 支付宝公钥
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt5iUV9VA5EDCMFZlxMlZ2NHvkPdwmRwTzN1rNGlf/VITTBvt1F61nQBjTlUIDVxvd77Zs9bS4bA/k2rpo0luDRQeSSgZ5xHDA6A0E4gcwik54s/Ic6DIWGpod/Ci6sSLpq8Fn9/jnR4k12sr4fzQOANdwwnlEtrynLa7j94IWeXeIqXFenLamswqvvwSuMWsVzxub/gXpjeY5t6pzRKxFoh9Cpf6e2lMP3vP8thr+kSYH/37OWndJZw0I1FW+aZzLmERCA/T4wK7u4tVIeLK9xlKGtV1CHki8PjRAazXWEXmoN7dtFGTi5xBBkHof38CVAe94QOn4XSwyegiyA5A3QIDAQAB
# 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数必须外网可以正常访问
notifyUrl: xxxx
notifyUrl: xxxx
# AES密钥
encryptKey: 0TOgnthQKQtoXJaSn5Bbhg==

View File

@@ -205,4 +205,6 @@ alipay:
# 支付宝公钥
alipayPublicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt5iUV9VA5EDCMFZlxMlZ2NHvkPdwmRwTzN1rNGlf/VITTBvt1F61nQBjTlUIDVxvd77Zs9bS4bA/k2rpo0luDRQeSSgZ5xHDA6A0E4gcwik54s/Ic6DIWGpod/Ci6sSLpq8Fn9/jnR4k12sr4fzQOANdwwnlEtrynLa7j94IWeXeIqXFenLamswqvvwSuMWsVzxub/gXpjeY5t6pzRKxFoh9Cpf6e2lMP3vP8thr+kSYH/37OWndJZw0I1FW+aZzLmERCA/T4wK7u4tVIeLK9xlKGtV1CHki8PjRAazXWEXmoN7dtFGTi5xBBkHof38CVAe94QOn4XSwyegiyA5A3QIDAQAB
# 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数必须外网可以正常访问
notifyUrl: xxxx
notifyUrl: xxxx
# AES密钥
encryptKey: 0TOgnthQKQtoXJaSn5Bbhg==