mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-04-20 02:55:04 +08:00
update 支付宝小程序
This commit is contained in:
@@ -131,7 +131,6 @@ public class JumpController extends BaseController {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
// 进入充电桩详情做一下鉴权
|
// 进入充电桩详情做一下鉴权
|
||||||
// String memberId = getMemberIdByAuthorization(request);
|
|
||||||
PileConnectorVO vo = pileService.getConnectorDetail(pileConnectorCode);
|
PileConnectorVO vo = pileService.getConnectorDetail(pileConnectorCode);
|
||||||
if (StringUtils.isNotBlank(memberId)) {
|
if (StringUtils.isNotBlank(memberId)) {
|
||||||
addMember2MemberGroup(memberId, vo);
|
addMember2MemberGroup(memberId, vo);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.jsowell.api.uniapp;
|
|||||||
|
|
||||||
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.jsowell.common.UserAgentUtils;
|
||||||
import com.jsowell.common.annotation.Anonymous;
|
import com.jsowell.common.annotation.Anonymous;
|
||||||
import com.jsowell.common.core.controller.BaseController;
|
import com.jsowell.common.core.controller.BaseController;
|
||||||
import com.jsowell.common.core.redis.RedisCache;
|
import com.jsowell.common.core.redis.RedisCache;
|
||||||
@@ -135,6 +136,10 @@ public class PayController extends BaseController {
|
|||||||
if (isLock) {
|
if (isLock) {
|
||||||
String appId = request.getHeader("appId");
|
String appId = request.getHeader("appId");
|
||||||
dto.setWechatAppId(appId);
|
dto.setWechatAppId(appId);
|
||||||
|
|
||||||
|
// 设置请求来源
|
||||||
|
dto.setRequestSource(UserAgentUtils.determineRequestSource(request));
|
||||||
|
|
||||||
map = orderService.payOrderV2(dto);
|
map = orderService.payOrderV2(dto);
|
||||||
}
|
}
|
||||||
response = new RestApiResponse<>(map);
|
response = new RestApiResponse<>(map);
|
||||||
@@ -378,6 +383,10 @@ public class PayController extends BaseController {
|
|||||||
if (isLock) {
|
if (isLock) {
|
||||||
String appId = request.getHeader("appId");
|
String appId = request.getHeader("appId");
|
||||||
dto.setWechatAppId(appId);
|
dto.setWechatAppId(appId);
|
||||||
|
|
||||||
|
//设置请求来源
|
||||||
|
dto.setRequestSource(UserAgentUtils.determineRequestSource(request));
|
||||||
|
|
||||||
map = orderService.payOccupyPileOrder(dto);
|
map = orderService.payOccupyPileOrder(dto);
|
||||||
}
|
}
|
||||||
response = new RestApiResponse<>(map);
|
response = new RestApiResponse<>(map);
|
||||||
|
|||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.jsowell.common;
|
||||||
|
|
||||||
|
import com.jsowell.common.enums.adapay.AdapayPayChannelEnum;
|
||||||
|
import com.jsowell.common.util.StringUtils;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
public class UserAgentUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断请求来自哪里
|
||||||
|
*/
|
||||||
|
public static String determineRequestSource(HttpServletRequest request) {
|
||||||
|
String userAgent = request.getHeader("user-agent");
|
||||||
|
if (StringUtils.isBlank(userAgent)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (userAgent.contains("AlipayClient")) {
|
||||||
|
return AdapayPayChannelEnum.ALIPAY_LITE.getValue();
|
||||||
|
}else if (userAgent.contains("MicroMessenger")) {
|
||||||
|
return AdapayPayChannelEnum.WX_LITE.getValue();
|
||||||
|
}else{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,6 +23,7 @@ import com.jsowell.common.constant.CacheConstants;
|
|||||||
import com.jsowell.common.constant.Constants;
|
import com.jsowell.common.constant.Constants;
|
||||||
import com.jsowell.common.core.redis.RedisCache;
|
import com.jsowell.common.core.redis.RedisCache;
|
||||||
import com.jsowell.common.enums.DelFlagEnum;
|
import com.jsowell.common.enums.DelFlagEnum;
|
||||||
|
import com.jsowell.common.enums.adapay.AdapayPayChannelEnum;
|
||||||
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
|
||||||
import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
|
import com.jsowell.common.enums.adapay.MerchantDelayModeEnum;
|
||||||
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
import com.jsowell.common.enums.ykc.ReturnCodeEnum;
|
||||||
@@ -121,7 +122,13 @@ public class AdapayService {
|
|||||||
createAdaPaymentParam.setOrder_no(orderNo);
|
createAdaPaymentParam.setOrder_no(orderNo);
|
||||||
createAdaPaymentParam.setPay_amt(amount);
|
createAdaPaymentParam.setPay_amt(amount);
|
||||||
createAdaPaymentParam.setApp_id(config.getAdapayAppId());
|
createAdaPaymentParam.setApp_id(config.getAdapayAppId());
|
||||||
createAdaPaymentParam.setPay_channel("wx_lite"); // todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求
|
|
||||||
|
// todo 如果以后有支付宝等别的渠道,这里需要做修改,判断是什么渠道的请求
|
||||||
|
// 2024年6月13日11点55分,需要兼容支付宝小程序,首先判断请求来源,如为空默认微信小程序
|
||||||
|
String payChannel = StringUtils.isNotBlank(dto.getRequestSource())
|
||||||
|
? dto.getRequestSource()
|
||||||
|
: AdapayPayChannelEnum.WX_LITE.getValue();
|
||||||
|
createAdaPaymentParam.setPay_channel(payChannel);
|
||||||
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
createAdaPaymentParam.setGoods_title(dto.getGoodsTitle());
|
||||||
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
createAdaPaymentParam.setGoods_desc(dto.getGoodsDesc()); // 这个字段是微信支付凭证的商品名
|
||||||
Map<String, String> map = Maps.newHashMap();
|
Map<String, String> map = Maps.newHashMap();
|
||||||
|
|||||||
@@ -75,4 +75,9 @@ public class PayOrderDTO {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private String delayMode;
|
private String delayMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 请求来源, 参见{@link com.jsowell.common.enums.adapay.AdapayPayChannelEnum}
|
||||||
|
*/
|
||||||
|
private String requestSource;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2480,7 +2480,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
|
|||||||
String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
||||||
// 获取处理逻辑
|
// 获取处理逻辑
|
||||||
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
||||||
orderLogic.payOrder(payOrderDTO);
|
orderLogic.payOrder(payOrderDTO); // 充电桩主动申请启动充电生成订单 使用支付
|
||||||
|
|
||||||
// 推送小程序启动充电消息
|
// 推送小程序启动充电消息
|
||||||
// 通过memberId查询openId
|
// 通过memberId查询openId
|
||||||
|
|||||||
@@ -177,109 +177,109 @@ public abstract class AbstractProgramLogic implements InitializingBean {
|
|||||||
* @param dto
|
* @param dto
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected Map<String, Object> generateOrderByCard(GenerateOrderDTO dto) throws Exception {
|
// protected Map<String, Object> generateOrderByCard(GenerateOrderDTO dto) throws Exception {
|
||||||
logger.info("充电桩主动申请启动充电生成订单 param:{}", JSON.toJSONString(dto));
|
// logger.info("充电桩主动申请启动充电生成订单 param:{}", JSON.toJSONString(dto));
|
||||||
BigDecimal accountBalance;
|
// BigDecimal accountBalance;
|
||||||
String payMode;
|
// String payMode;
|
||||||
// 判断当前用户是否为平台测试员
|
// // 判断当前用户是否为平台测试员
|
||||||
PlatformTesterVO platformTesterVO = memberBasicInfoService.selectPlatformTesterStatus(dto.getMemberId());
|
// PlatformTesterVO platformTesterVO = memberBasicInfoService.selectPlatformTesterStatus(dto.getMemberId());
|
||||||
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
|
// PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(dto.getPileSn());
|
||||||
PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId());
|
// PileStationWhitelist pileStationWhitelist = pileStationWhitelistService.queryWhitelistByMemberId(String.valueOf(pileBasicInfo.getStationId()), dto.getMemberId());
|
||||||
|
//
|
||||||
// 运营商id
|
// // 运营商id
|
||||||
String merchantId = pileBasicInfo.getMerchantId() + "";
|
// String merchantId = pileBasicInfo.getMerchantId() + "";
|
||||||
|
//
|
||||||
if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
|
// if (platformTesterVO != null && StringUtils.equals(Constants.ONE, platformTesterVO.getStatus())) {
|
||||||
// 是平台测试员
|
// // 是平台测试员
|
||||||
accountBalance = Constants.WHITELIST_DEFAULT_AMOUNT;
|
// accountBalance = Constants.WHITELIST_DEFAULT_AMOUNT;
|
||||||
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
// payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
||||||
} else if (pileStationWhitelist != null) {
|
// } else if (pileStationWhitelist != null) {
|
||||||
// 站点白名单
|
// // 站点白名单
|
||||||
accountBalance = Constants.WHITELIST_DEFAULT_AMOUNT;
|
// accountBalance = Constants.WHITELIST_DEFAULT_AMOUNT;
|
||||||
payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
// payMode = OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue();
|
||||||
} else {
|
// } else {
|
||||||
// 通过memberId获取账户余额
|
// // 通过memberId获取账户余额
|
||||||
MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
// MemberVO memberVO = memberBasicInfoService.queryMemberInfoByMemberId(dto.getMemberId(), merchantId);
|
||||||
if (memberVO == null) {
|
// if (memberVO == null) {
|
||||||
throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR);
|
// throw new BusinessException(ReturnCodeEnum.CODE_GET_MEMBER_ACCOUNT_AMOUNT_ERROR);
|
||||||
}
|
// }
|
||||||
accountBalance = memberVO.getTotalAccountAmount();
|
// accountBalance = memberVO.getTotalAccountAmount();
|
||||||
if (accountBalance.compareTo(BigDecimal.ZERO) <= 0) {
|
// if (accountBalance.compareTo(BigDecimal.ZERO) <= 0) {
|
||||||
logger.info("充电桩主动申请启动充电生成订单 余额不足, memberId:{}, MemberVO:{}", dto.getMemberId(), JSON.toJSONString(memberVO));
|
// logger.info("充电桩主动申请启动充电生成订单 余额不足, memberId:{}, MemberVO:{}", dto.getMemberId(), JSON.toJSONString(memberVO));
|
||||||
throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
// throw new BusinessException(ReturnCodeEnum.CODE_BALANCE_IS_INSUFFICIENT);
|
||||||
}
|
// }
|
||||||
BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT;
|
// BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT;
|
||||||
if (accountBalance.compareTo(defaultAmount) > 0) {
|
// if (accountBalance.compareTo(defaultAmount) > 0) {
|
||||||
accountBalance = defaultAmount;
|
// accountBalance = defaultAmount;
|
||||||
}
|
// }
|
||||||
payMode = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue();
|
// payMode = OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue();
|
||||||
// accountBalance = memberVO.getTotalAccountAmount();
|
// // accountBalance = memberVO.getTotalAccountAmount();
|
||||||
// dto.setChargeAmount(totalAccountAmount); // 充电金额
|
// // dto.setChargeAmount(totalAccountAmount); // 充电金额
|
||||||
// dto.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); // 1-余额支付
|
// // dto.setPayMode(OrderPayModeEnum.PAYMENT_OF_BALANCE.getValue()); // 1-余额支付
|
||||||
}
|
// }
|
||||||
dto.setChargeAmount(accountBalance);
|
// dto.setChargeAmount(accountBalance);
|
||||||
dto.setPayMode(payMode);
|
// dto.setPayMode(payMode);
|
||||||
/*
|
// /*
|
||||||
生成订单
|
// 生成订单
|
||||||
*/
|
// */
|
||||||
OrderBasicInfo basicInfo = generateOrder(dto);
|
// OrderBasicInfo basicInfo = generateOrder(dto);
|
||||||
if (basicInfo == null) {
|
// if (basicInfo == null) {
|
||||||
return null;
|
// return null;
|
||||||
}
|
// }
|
||||||
if (StringUtils.equals(StartModeEnum.AUTH_CARD.getValue(), dto.getStartMode())) {
|
// if (StringUtils.equals(StartModeEnum.AUTH_CARD.getValue(), dto.getStartMode())) {
|
||||||
// 将卡状态改为启动锁定
|
// // 将卡状态改为启动锁定
|
||||||
PileAuthCard pileAuthCard = PileAuthCard.builder()
|
// PileAuthCard pileAuthCard = PileAuthCard.builder()
|
||||||
.id(dto.getPileAuthCardInfo().getId())
|
// .id(dto.getPileAuthCardInfo().getId())
|
||||||
.logicCard(dto.getPileAuthCardInfo().getLogicCard())
|
// .logicCard(dto.getPileAuthCardInfo().getLogicCard())
|
||||||
.status("2")
|
// .status("2")
|
||||||
.build();
|
// .build();
|
||||||
pileAuthCardService.updatePileAuthCard(pileAuthCard);
|
// pileAuthCardService.updatePileAuthCard(pileAuthCard);
|
||||||
} else if (StringUtils.equals(StartModeEnum.VIN_CODE.getValue(), dto.getStartMode())) {
|
// } else if (StringUtils.equals(StartModeEnum.VIN_CODE.getValue(), dto.getStartMode())) {
|
||||||
// 将vin码改成启动锁定 2023.11.4 站点白名单和测试员不需要锁定
|
// // 将vin码改成启动锁定 2023.11.4 站点白名单和测试员不需要锁定
|
||||||
if (!StringUtils.equals(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue(), dto.getPayMode())) {
|
// if (!StringUtils.equals(OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue(), dto.getPayMode())) {
|
||||||
dto.getMemberPlateNumberRelation().setVinStatus("2");
|
// dto.getMemberPlateNumberRelation().setVinStatus("2");
|
||||||
}
|
// }
|
||||||
// 2024.02.06 不再判断锁定状态
|
// // 2024.02.06 不再判断锁定状态
|
||||||
// memberPlateNumberRelationService.updateMemberPlateNumberRelation(dto.getMemberPlateNumberRelation());
|
// // memberPlateNumberRelationService.updateMemberPlateNumberRelation(dto.getMemberPlateNumberRelation());
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
// 组装结果集
|
// // 组装结果集
|
||||||
Map<String, Object> map = Maps.newHashMap();
|
// Map<String, Object> map = Maps.newHashMap();
|
||||||
map.put("orderCode", basicInfo.getOrderCode());
|
// map.put("orderCode", basicInfo.getOrderCode());
|
||||||
map.put("transactionCode", basicInfo.getTransactionCode());
|
// map.put("transactionCode", basicInfo.getTransactionCode());
|
||||||
map.put("accountBalance", accountBalance);
|
// map.put("accountBalance", accountBalance);
|
||||||
|
//
|
||||||
logger.info("生成订单 result:{}", JSON.toJSONString(map));
|
// logger.info("生成订单 result:{}", JSON.toJSONString(map));
|
||||||
|
//
|
||||||
// 支付订单
|
// // 支付订单
|
||||||
PayOrderDTO payOrderDTO = new PayOrderDTO();
|
// PayOrderDTO payOrderDTO = new PayOrderDTO();
|
||||||
payOrderDTO.setOrderCode(basicInfo.getOrderCode());
|
// payOrderDTO.setOrderCode(basicInfo.getOrderCode());
|
||||||
payOrderDTO.setPayAmount(accountBalance);
|
// payOrderDTO.setPayAmount(accountBalance);
|
||||||
payOrderDTO.setPayMode(dto.getPayMode());
|
// payOrderDTO.setPayMode(dto.getPayMode());
|
||||||
payOrderDTO.setMemberId(dto.getMemberId());
|
// payOrderDTO.setMemberId(dto.getMemberId());
|
||||||
payOrderDTO.setStartMode(dto.getStartMode());
|
// payOrderDTO.setStartMode(dto.getStartMode());
|
||||||
// payOrderDTO.setCode();
|
// // payOrderDTO.setCode();
|
||||||
// payOrderDTO.setLockValue();
|
// // payOrderDTO.setLockValue();
|
||||||
// payOrderDTO.setOrderBasicInfo(basicInfo);
|
// // payOrderDTO.setOrderBasicInfo(basicInfo);
|
||||||
|
//
|
||||||
// payOrder(payOrderDTO);
|
// // payOrder(payOrderDTO);
|
||||||
|
//
|
||||||
String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
// String mode = pileMerchantInfoService.getDelayModeByMerchantId(merchantId);
|
||||||
// 获取处理逻辑
|
// // 获取处理逻辑
|
||||||
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
// AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
|
||||||
orderLogic.payOrder(payOrderDTO);
|
// orderLogic.payOrder(payOrderDTO);
|
||||||
|
//
|
||||||
// 推送小程序启动充电消息
|
// // 推送小程序启动充电消息
|
||||||
// 通过memberId查询openId
|
// // 通过memberId查询openId
|
||||||
MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(dto.getMemberId());
|
// MemberBasicInfo memberBasicInfo = memberBasicInfoService.selectInfoByMemberId(dto.getMemberId());
|
||||||
WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO();
|
// WechatSendMsgDTO sendMsgDTO = new WechatSendMsgDTO();
|
||||||
sendMsgDTO.setOpenId(memberBasicInfo.getOpenId());
|
// sendMsgDTO.setOpenId(memberBasicInfo.getOpenId());
|
||||||
sendMsgDTO.setOrderCode(basicInfo.getOrderCode());
|
// sendMsgDTO.setOrderCode(basicInfo.getOrderCode());
|
||||||
|
//
|
||||||
wxAppletRemoteService.startChargingSendMsg(sendMsgDTO);
|
// wxAppletRemoteService.startChargingSendMsg(sendMsgDTO);
|
||||||
|
//
|
||||||
return map;
|
// return map;
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单支付成功 支付回调
|
* 订单支付成功 支付回调
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class ThirdPartySecretInfoVO {
|
|||||||
private String platformName;
|
private String platformName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对接平台类型 {@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
|
* 对接平台类型, 参见{@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
|
||||||
*/
|
*/
|
||||||
private String platformType;
|
private String platformType;
|
||||||
|
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ public interface ThirdpartySecretInfoService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过第三方平台类型,查询平台密钥配置信息
|
* 通过第三方平台类型,查询平台密钥配置信息
|
||||||
* @param thirdPlatformType 第三方平台类型 {@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
|
* @param thirdPlatformType 第三方平台类型, 参见{@link com.jsowell.common.enums.thirdparty.ThirdPlatformTypeEnum}
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType);
|
ThirdPartySecretInfoVO queryByThirdPlatformType(String thirdPlatformType);
|
||||||
|
|||||||
Reference in New Issue
Block a user