mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 11:05:18 +08:00
支付宝登录
This commit is contained in:
@@ -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;
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -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 支付订单
|
||||
|
||||
@@ -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);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 处理用户信息
|
||||
|
||||
@@ -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==
|
||||
|
||||
@@ -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==
|
||||
@@ -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==
|
||||
@@ -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==
|
||||
Reference in New Issue
Block a user