feat:支付宝支付

This commit is contained in:
dzc committed 2026-04-22 17:37:30 +08:00
1 parent 13d912f0cb
commit d4f45cf37e
15 files changed
+195 -63

No files matched your search

@@ -11,7 +11,7 @@ import java.util.Arrays;
*/
@AllArgsConstructor
@Getter
public enum MiniPlatformLoginErrorEnum {
public enum AppPlusPlatformLoginErrorEnum {
GET_PHONE_ERROR("10", "获取手机号错误"),
USER_NOT_EXIST("20", "用户不存在"),
@@ -21,7 +21,7 @@ public enum MiniPlatformLoginErrorEnum {
private final String type;
private final String description;
public static MiniPlatformLoginErrorEnum valueOfByType(String type) {
public static AppPlusPlatformLoginErrorEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
@@ -1,7 +1,6 @@
package com.bsd.pjcloud.thirdparty.constant.miniplatform;
import cn.hutool.core.util.ObjectUtil;
import com.bsd.pjcloud.thirdparty.constant.ThirdKeyTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;
@@ -12,7 +11,7 @@ import java.util.Arrays;
*/
@AllArgsConstructor
@Getter
public enum MiniPlatformTypeEnum {
public enum AppPlusPlatformTypeEnum {
WECHAT("10", "微信小程序"),
ALI_PAY("20", "支付宝"),
@@ -21,7 +20,7 @@ public enum MiniPlatformTypeEnum {
private final String type;
private final String description;
public static MiniPlatformTypeEnum valueOfByType(String type) {
public static AppPlusPlatformTypeEnum valueOfByType(String type) {
if (ObjectUtil.isEmpty(type)) return null;
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
}
@@ -1,6 +1,6 @@
package com.bsd.pjcloud.thirdparty.dto.appplus;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -12,7 +12,7 @@ public class ThirdMiniAppGetUniqueDto {
* 小程序平台
*/
@NotNull(message = "小程序平台标识不能为空")
private MiniPlatformTypeEnum miniPlatformType;
private AppPlusPlatformTypeEnum miniPlatformType;
@NotEmpty(message = "code不能为空")
private String code;
@@ -1,6 +1,6 @@
package com.bsd.pjcloud.thirdparty.dto.appplus;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@@ -12,7 +12,7 @@ public class ThirdMiniAppOAth2LoginDto {
* 小程序平台
*/
@NotNull(message = "小程序平台标识不能为空")
private MiniPlatformTypeEnum miniPlatformType;
private AppPlusPlatformTypeEnum miniPlatformType;
@NotEmpty(message = "phoneCode不能为空")
private String phoneCode;
@@ -1,6 +1,6 @@
package com.bsd.pjcloud.thirdparty.dto.appplus;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
@@ -26,7 +26,7 @@ public class ThirdMiniAppPayDto {
* 小程序平台
*/
@NotNull(message = "小程序平台标识不能为空")
private MiniPlatformTypeEnum miniPlatformType;
private AppPlusPlatformTypeEnum miniPlatformType;
/**
* 金额(分)
@@ -36,7 +36,7 @@ public class ThirdMiniAppPayDto {
/**
* 用户标识
*/
@NotEmpty(message = "用户标识不能为空")
// @NotEmpty(message = "用户标识不能为空")
private String openId;
}
@@ -4,10 +4,10 @@ import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
import lombok.Data;
/**
* JSAPI/小程序下单
* app支付参数
*/
@Data
public class ThirdMiniJsapiPayDto {
public class ThirdAppPlusPayDto {
/**
* 充值业务类型
@@ -7,6 +7,6 @@ import java.util.HashMap;
@Data
public class ThirdMiniAppPayVo {
private HashMap<String, Object> miniAppPayParams;
private HashMap<String, Object> appPlusPayParams;
}
+6
View File
@@ -13,6 +13,12 @@
<artifactId>pjcloud-thirdparty-biz</artifactId>
<dependencies>
<!-- 支付宝SDK -->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.40.251.ALL</version>
</dependency>
<!-- 阿里sdk -->
<dependency>
<groupId>com.aliyun</groupId>
@@ -74,6 +74,16 @@ public class AppPlusPayConfig {
private String appId;
/**
* 应用私钥
*/
private String appPrivateKey;
/**
* 支付公钥
*/
private String alipayPublicKey;
}
}
@@ -1,6 +1,13 @@
package com.bsd.pjcloud.thirdparty.service;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdAppPlusPayDto;
public interface ThirdAppPlusAliPayService {
/**
* app支付
*/
String appPay(ThirdAppPlusPayDto dto);
}
@@ -14,7 +14,7 @@ public interface ThirdAppPlusWechatService {
/**
* JSAPI/小程序下单
*/
ThirdMiniJsapiPayVo jsapiPay(ThirdMiniJsapiPayDto dto);
ThirdMiniJsapiPayVo jsapiPay(ThirdAppPlusPayDto dto);
/**
* 获取openId
@@ -1,14 +1,34 @@
package com.bsd.pjcloud.thirdparty.service.impl.appplus;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import com.alipay.api.AlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderStatusEnum;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdAppPlusPayDto;
import com.bsd.pjcloud.thirdparty.entity.pay.ThirdPayOrderEntity;
import com.bsd.pjcloud.thirdparty.service.ThirdAppPlusAliPayService;
import com.bsd.pjcloud.thirdparty.service.ThirdPayOrderService;
import com.bsd.pjcloud.thirdparty.vo.appplus.pay.wechat.ThirdMiniJsapiPayVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
/**
* 支付宝小程序(小程序版本)
* 支付宝小程序(app版本)
*/
@Service
@Validated
@@ -16,6 +36,88 @@ import org.springframework.validation.annotation.Validated;
@RequiredArgsConstructor
public class ThirdAppPlusAliPayServiceImpl implements ThirdAppPlusAliPayService {
private final AppPlusPayConfig miniAppConfig;
private final String TAG = "微信小程序支付(app版本)";
static private AlipayClient alipayClient = null;
private final AppPlusPayConfig appPlusPayConfig;
private final ThirdPayOrderService thirdPayOrderService;
private AlipayConfig getAlipayConfig() {
AppPlusPayConfig.AliPayConfig aliPayConfig = appPlusPayConfig.getAliPayConfig();
AlipayConfig alipayConfig = new AlipayConfig();
alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
alipayConfig.setAppId(aliPayConfig.getAppId());
alipayConfig.setPrivateKey(aliPayConfig.getAppPrivateKey());
alipayConfig.setFormat("json");
alipayConfig.setAlipayPublicKey(aliPayConfig.getAlipayPublicKey());
alipayConfig.setCharset("UTF-8");
alipayConfig.setSignType("RSA2");
return alipayConfig;
}
private synchronized AlipayClient getAlipayClient() {
if (alipayClient == null) {
try {
alipayClient = new DefaultAlipayClient(getAlipayConfig());
} catch (Exception e) {
e.printStackTrace();
log.error("初始化支付宝客户端失败error:{}", e.getMessage());
}
}
return alipayClient;
}
private String fenToYuan(BigDecimal fen) {
if (ObjectUtil.isEmpty(fen)) {
return "0";
}
return fen.divide(new BigDecimal(100), 2, RoundingMode.HALF_UP).toString();
}
/**
* app支付
*/
public String appPay(ThirdAppPlusPayDto dto) {
LocalDateTime now = LocalDateTime.now();
ThirdPayOrderEntity payOrder = new ThirdPayOrderEntity();
payOrder.setPayPlatformType(AppPlusPlatformTypeEnum.ALI_PAY.getType());
payOrder.setBizId(dto.getBizId());
payOrder.setBizType(dto.getBizType().getType());
payOrder.setUserId(dto.getUserId());
payOrder.setUserCode(dto.getOpenid());
payOrder.setPrice(dto.getAmount());
payOrder.setStatus(ThirdPayOrderStatusEnum.PAY_UNPAID.getType());
payOrder.setPayNo(dto.getOutTradeNo());
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setOutTradeNo(dto.getOutTradeNo());
model.setTotalAmount(fenToYuan(BigDecimal.valueOf(dto.getAmount())));
model.setSubject("资安信");
// 超时时间15分钟
model.setTimeExpire(LocalDateTimeUtil.format(now.plusMinutes(15), DatePattern.NORM_DATETIME_PATTERN));
payOrder.setPayRep(JSONUtil.toJsonStr(model));
request.setBizModel(model);
try {
AlipayTradeAppPayResponse response = getAlipayClient().sdkExecute(request);
String orderStr = response.getBody();
payOrder.setPayTime(LocalDateTime.now());
payOrder.setPayRes(orderStr);
return orderStr;
} catch (Exception e) {
e.printStackTrace();
log.error("|{}|app支付异常,error:|{}|", TAG, e.getMessage());
return null;
} finally {
thirdPayOrderService.save(payOrder);
}
}
}
@@ -13,14 +13,14 @@ import com.bsd.pjcloud.app.api.constant.AppUserTypeEnum;
import com.bsd.pjcloud.app.api.dto.AppAdminSyncDto;
import com.bsd.pjcloud.app.api.dto.AppUserInfo;
import com.bsd.pjcloud.app.api.feign.RemoteAppUserService;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformLoginErrorEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformLoginErrorEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderStatusEnum;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppGetUniqueDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppOAth2LoginDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.ThirdMiniAppPayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdMiniJsapiPayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdAppPlusPayDto;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.ThirdMiniWechatRefundDto;
import com.bsd.pjcloud.thirdparty.entity.pay.ThirdPayOrderEntity;
import com.bsd.pjcloud.thirdparty.service.*;
@@ -38,6 +38,7 @@ import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.HashMap;
import java.util.Map;
/**
@@ -68,22 +69,22 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
public ThirdMinAppOAth2LoginVo adminLogin(ThirdMiniAppOAth2LoginDto dto) {
ThirdMinAppOAth2LoginVo vo = new ThirdMinAppOAth2LoginVo();
// 微信小程序
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.WECHAT.getType())) {
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.WECHAT.getType())) {
// 获取手机号
WxMaPhoneNumberInfo phoneInfo = thirdMiniAppWechatService.getPhone(dto.getPhoneCode());
if (ObjectUtil.isEmpty(phoneInfo)) {
vo.setErrorCode(MiniPlatformLoginErrorEnum.GET_PHONE_ERROR.getType());
vo.setErrorCode(AppPlusPlatformLoginErrorEnum.GET_PHONE_ERROR.getType());
return vo;
}
// 根据手机号查询用户
UserInfo userInfo = remoteUserService.getInnerByPhone(phoneInfo.getPurePhoneNumber()).getData();
if (ObjectUtil.isEmpty(userInfo)) {
vo.setErrorCode(MiniPlatformLoginErrorEnum.USER_NOT_EXIST.getType());
vo.setErrorCode(AppPlusPlatformLoginErrorEnum.USER_NOT_EXIST.getType());
return vo;
}
// 获取用户唯一编号
ThirdMiniAppGetUniqueDto getUniqueDto = new ThirdMiniAppGetUniqueDto();
getUniqueDto.setMiniPlatformType(MiniPlatformTypeEnum.WECHAT);
getUniqueDto.setMiniPlatformType(AppPlusPlatformTypeEnum.WECHAT);
getUniqueDto.setCode(dto.getPhoneCode());
getUniqueDto.setUserId(userInfo.getSysUser().getUserId());
String uniqueCode = getUniqueCode(getUniqueDto);
@@ -96,7 +97,7 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
appAdminSyncDto.setAvatarImage(userInfo.getSysUser().getAvatar());
AppUserInfo appUserInfo = remoteAppUserService.syncAdminAccountInfo(appAdminSyncDto).getData();
if (ObjectUtil.isEmpty(appUserInfo)) {
vo.setErrorCode(MiniPlatformLoginErrorEnum.LOGIN_ERROR.getType());
vo.setErrorCode(AppPlusPlatformLoginErrorEnum.LOGIN_ERROR.getType());
return vo;
}
// 执行登录
@@ -104,14 +105,14 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
userTokenDTO.setSysUser(userInfo.getSysUser());
Map<String, Object> dataMap = (Map<String, Object>) remoteTokenService.generateToken(userTokenDTO).getData();
if (ObjectUtil.isEmpty(dataMap)) {
vo.setErrorCode(MiniPlatformLoginErrorEnum.LOGIN_ERROR.getType());
vo.setErrorCode(AppPlusPlatformLoginErrorEnum.LOGIN_ERROR.getType());
return vo;
}
vo.setAccessToken(dataMap.getOrDefault("accessToken", ""));
vo.setRefreshToken(dataMap.getOrDefault("refreshToken", ""));
}
// 支付宝
else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.ALI_PAY.getType())) {
else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.ALI_PAY.getType())) {
}
return vo;
@@ -123,9 +124,9 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
@Override
public String getUniqueCode(ThirdMiniAppGetUniqueDto dto) {
String uniqueCode = null;
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.WECHAT.getType())) {
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.WECHAT.getType())) {
uniqueCode = thirdMiniAppWechatService.getOpenId(dto.getCode());
} else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.ALI_PAY.getType())) {
} else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.ALI_PAY.getType())) {
}
return uniqueCode;
@@ -161,26 +162,32 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
throw new RuntimeException("不支持的支付类型");
}
try {
ThirdAppPlusPayDto appPlusPayDto = new ThirdAppPlusPayDto();
// 当前时间戳+10位随机字符串
String outTradeNo = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + RandomUtil.randomString(10);
appPlusPayDto.setOutTradeNo(outTradeNo);
appPlusPayDto.setBizId(dto.getBizId());
appPlusPayDto.setBizType(dto.getBizType());
appPlusPayDto.setUserId(userId);
appPlusPayDto.setOpenid(dto.getOpenId());
appPlusPayDto.setAmount(dto.getAmount());
// 微信小程序
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.WECHAT.getType())) {
ThirdMiniJsapiPayDto wechatPayDto = new ThirdMiniJsapiPayDto();
// 当前时间戳+10位随机字符串
String outTradeNo = LocalDateTime.now().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + RandomUtil.randomString(10);
wechatPayDto.setOutTradeNo(outTradeNo);
wechatPayDto.setBizId(dto.getBizId());
wechatPayDto.setBizType(dto.getBizType());
wechatPayDto.setUserId(userId);
wechatPayDto.setOpenid(dto.getOpenId());
wechatPayDto.setAmount(dto.getAmount());
ThirdMiniJsapiPayVo thirdMiniJsapiPayVo = thirdMiniAppWechatService.jsapiPay(wechatPayDto);
if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.WECHAT.getType())) {
ThirdMiniJsapiPayVo thirdMiniJsapiPayVo = thirdMiniAppWechatService.jsapiPay(appPlusPayDto);
if (ObjectUtil.isEmpty(thirdMiniJsapiPayVo)) {
throw new RuntimeException("创建微信支付错误");
}
result.setMiniAppPayParams(thirdMiniJsapiPayVo.getMiniAppPayParams());
result.setAppPlusPayParams(thirdMiniJsapiPayVo.getMiniAppPayParams());
}
// 支付宝
else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), MiniPlatformTypeEnum.ALI_PAY.getType())) {
else if (ObjectUtil.equals(dto.getMiniPlatformType().getType(), AppPlusPlatformTypeEnum.ALI_PAY.getType())) {
String orderStr = thirdMiniAppAliPayService.appPay(appPlusPayDto);
if (ObjectUtil.isEmpty(orderStr)) {
throw new RuntimeException("创建支付宝支付错误");
}
HashMap<String, Object> aliPayParams = new HashMap<String, Object>();
aliPayParams.put("orderInfo", orderStr);
result.setAppPlusPayParams(aliPayParams);
}
// 不支持的支付类型
else {
@@ -204,11 +211,11 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
throw new RuntimeException("订单不存在");
}
// 微信小程序
if (ObjectUtil.equals(thirdPayOrder.getPayPlatformType(), MiniPlatformTypeEnum.WECHAT.getType())) {
if (ObjectUtil.equals(thirdPayOrder.getPayPlatformType(), AppPlusPlatformTypeEnum.WECHAT.getType())) {
thirdMiniAppWechatService.refund(thirdPayOrder, dto);
}
// 支付宝
else if (ObjectUtil.equals(thirdPayOrder.getPayPlatformType(), MiniPlatformTypeEnum.ALI_PAY.getType())) {
else if (ObjectUtil.equals(thirdPayOrder.getPayPlatformType(), AppPlusPlatformTypeEnum.ALI_PAY.getType())) {
}
// 不支持的支付类型
@@ -223,9 +230,9 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
*/
@Override
public String miniPayCallback(String body, Map<String, String> headers) {
MiniPlatformTypeEnum platformType = checkMiniPlatformType(body);
AppPlusPlatformTypeEnum platformType = checkMiniPlatformType(body);
// 微信小程序
if (ObjectUtil.equals(platformType, MiniPlatformTypeEnum.WECHAT)) {
if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.WECHAT)) {
ThirdPayOrderEntity thirdPayOrder = thirdMiniAppWechatService.payCallback(body, headers);
if (ObjectUtil.isEmpty(thirdPayOrder)) {
return ThirdMiniWechatQueryVo.wechantError();
@@ -235,7 +242,7 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
return isSuccess ? ThirdMiniWechatQueryVo.wechantSuccess() : ThirdMiniWechatQueryVo.wechantError();
}
// 支付宝
else if (ObjectUtil.equals(platformType, MiniPlatformTypeEnum.ALI_PAY)) {
else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ALI_PAY)) {
return null;
}
// 不支持的支付类型
@@ -249,9 +256,9 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
*/
@Override
public String miniRefundCallback(String body, Map<String, String> headers) {
MiniPlatformTypeEnum platformType = checkRefundMiniPlatformType(body);
AppPlusPlatformTypeEnum platformType = checkRefundMiniPlatformType(body);
// 微信小程序
if (ObjectUtil.equals(platformType, MiniPlatformTypeEnum.WECHAT)) {
if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.WECHAT)) {
ThirdPayOrderEntity thirdPayOrder = thirdMiniAppWechatService.refundCallback(body, headers);
if (ObjectUtil.isEmpty(thirdPayOrder)) {
return ThirdMiniWechantRefunCallbackVo.wechantError();
@@ -261,7 +268,7 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
return isSuccess ? ThirdMiniWechatQueryVo.wechantSuccess() : ThirdMiniWechatQueryVo.wechantError();
}
// 支付宝
else if (ObjectUtil.equals(platformType, MiniPlatformTypeEnum.ALI_PAY)) {
else if (ObjectUtil.equals(platformType, AppPlusPlatformTypeEnum.ALI_PAY)) {
return null;
}
// 不支持的支付类型
@@ -270,20 +277,20 @@ public class ThirdAppPlusServiceImpl implements ThirdAppPlusService {
}
}
private MiniPlatformTypeEnum checkMiniPlatformType(String body) {
private AppPlusPlatformTypeEnum checkMiniPlatformType(String body) {
ThirdMiniWechatRefundQueryVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(body)), ThirdMiniWechatRefundQueryVo.class);
// 查询订单
if (ObjectUtil.isNotEmpty(vo) && ObjectUtil.isNotEmpty(vo.getTransaction_id())) {
return MiniPlatformTypeEnum.WECHAT;
return AppPlusPlatformTypeEnum.WECHAT;
}
return null;
}
private MiniPlatformTypeEnum checkRefundMiniPlatformType(String body) {
private AppPlusPlatformTypeEnum checkRefundMiniPlatformType(String body) {
ThirdMiniWechantRefunCallbackSoureVo vo = JSONUtil.toBean(JSONUtil.toJsonStr(XmlUtil.xmlToMap(body)), ThirdMiniWechantRefunCallbackSoureVo.class);
// 查询订单
if (ObjectUtil.isNotEmpty(vo) && ObjectUtil.isNotEmpty(vo.getAppid()) && ObjectUtil.isNotEmpty(vo.getMch_id()) && ObjectUtil.isNotEmpty(vo.getNonce_str()) && ObjectUtil.isNotEmpty(vo.getReq_info())) {
return MiniPlatformTypeEnum.WECHAT;
return AppPlusPlatformTypeEnum.WECHAT;
}
return null;
}
@@ -9,7 +9,7 @@ import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.XmlUtil;
import cn.hutool.json.JSONUtil;
import com.bsd.pjcloud.thirdparty.config.AppPlusPayConfig;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.MiniPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.miniplatform.AppPlusPlatformTypeEnum;
import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderStatusEnum;
import com.bsd.pjcloud.thirdparty.dto.appplus.pay.wechat.*;
import com.bsd.pjcloud.thirdparty.entity.pay.ThirdPayOrderEntity;
@@ -36,7 +36,7 @@ import java.util.Map;
import java.util.TreeMap;
/**
* 微信小程序(小程序版本)
* 微信小程序(app版本)
*/
@Service
@Validated
@@ -44,7 +44,7 @@ import java.util.TreeMap;
@RequiredArgsConstructor
public class ThirdAppPlusWechatServiceImpl implements ThirdAppPlusWechatService {
private final String TAG = "微信小程序支付(小程序版本)";
private final String TAG = "微信小程序支付(app版本)";
private final AppPlusPayConfig appPlusPayConfig;
@@ -56,11 +56,11 @@ public class ThirdAppPlusWechatServiceImpl implements ThirdAppPlusWechatService
* JSAPI/小程序下单
*/
@Override
public ThirdMiniJsapiPayVo jsapiPay(ThirdMiniJsapiPayDto dto) {
public ThirdMiniJsapiPayVo jsapiPay(ThirdAppPlusPayDto dto) {
AppPlusPayConfig.WechatConfig wechatConfig = appPlusPayConfig.getWechatConfig();
ThirdPayOrderEntity payOrder = new ThirdPayOrderEntity();
payOrder.setPayPlatformType(MiniPlatformTypeEnum.WECHAT.getType());
payOrder.setPayPlatformType(AppPlusPlatformTypeEnum.WECHAT.getType());
payOrder.setBizId(dto.getBizId());
payOrder.setBizType(dto.getBizType().getType());
payOrder.setUserId(dto.getUserId());
@@ -119,8 +119,9 @@ app-plus:
spbill-create-ip: 59.202.170.152
base-url: https://api.mch.weixin.qq.com
ali-pay-config:
app-id:
app-id: 2021006147685828
app-private-key: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC9OwO+0R0y3wxniFEzoDcVHuSB+5D49WYLi/Bgvqz04Y7dnbphih4ShKNByRxw046c+gG406EZ5KTbfB/AwUflYl0gANTwhuLjK2O+/MaKpfsE2m4vT8MuDsUW4Y00RO0DkLN/Kf9aLrQd62/GtLipVIejHCi9KevclKstO7NomCkJC3ucZ1FIqeeJEhM8aNq0Q7VAfJ0IFiY+yJuqz7Yxpy39tAW5TxFXCzkwQUjRoz4xOD8+N2Qo9OVn6rE1Z65LIa3c6uxTmg8/8s7thwralx57Rr6VDdFSMbnPKplNDFWKlZL8YAmk9PI/3Jg03HH+r3GxBNvTAp5Uk/CqPAAJAgMBAAECggEBAIQqDLKggSE/sf05s2U4WGBzBCxY1OddFhmocopPgqNCSrM0b7GicuCCLThMS4Xt7KRs5Pj/LnzUOeRmLBNHq3xlmB87FX6s5xi8/FyvVcgOp2S7XsvCjNLFVBhoDmRcY6Hi1ctSPNvy1LA0+Quyu2rg9B8TEs0T031rhKcCFItOzvamdTWPZ17AQBykSn+8F4Uhp6EiR17HWyS4TkmLfeS+Q6LgP6VLIhqPgBvC48hMc8pLDv97b26kTe8QcdOFdplqzdYAFCOlaXAS2OHXRieILAjaSVtdPfjqy6wu66PyUuMGnAA4HhvNeTbJIuXv0Y+PsGHXHmGL3YCsVdsVTzUCgYEA6vlP0yQ6+6IFwfMba+8BYEKpEaHT+BsqMuO+jDKINo2HwMA8WBQjkAfsDkgzQrFiicq4ENdSqihEtqbZrgb3lqOajzXU3BUtj49TjIbOmNgofy+du8KnpIGKIXe59T75E9jv8SByBBulGn3Sjwcby1jBEGeVXJ325sjRXFcCvyMCgYEAzinVFXTgJk0hWp4Tj9+4XaO299T85x27Uk3wO5Y5drmPJB/aqxHInzRSvDeyTeXF3++xf0EW1UXYSRazmKIBlr8JqnUZGuwMu4ZWvNGNuMsUA/R19tail6XtRc740kILO1r2DouWmqQtMIrgEyDANkIl+RKsaDNCofAYmuqrrOMCgYBJofDS0IKvQfmd6onIS/BZcuo6PUUIdbLGmbmng1pOBhHpZBRE4aK3StQ9MYDmwGGJnn4JwQAFlHLb7fM+5q4FhaU0hYD7qqNJXnenDMOHAA3ItWovYXNZSMK5dCRQ5vf0sUGXhTxVbzhQ0eb+rRKXqWtusZcLm/C4J2v8DMQukwKBgEZsjch1kzgiMtmUlBQalQ0PpqnEDNwaEOoNi5mfOGPxAQ+S/gxf18tigTygPf1UFyLm6xgQMO+Lm1VkNtdVx/spqPCcbYX/yl2ohyqa3rGYVW8Aa+d07DenS4UELYUNYG7XJKRVVI3gtTsWxXJjRqWCNRx/H3u8vu84Z/9LWHeHAoGADJmbuMUctjMfNVuh5B65VhLXYiOdta9smuAeAhoUiP9tlZuBvjEDVXHfu+NnRXL1yn0OhIK9N4Q3rS+2z/G5W1GvDxiSmk4fRQBwakybn4DqKorCxxwK5nGciZ+2Bde0IAcDe1no/YuxY5uC12LyQi7PINO18NBgBgXFWBYlYvM=
alipay-public-key: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhoU7Iun0y/g/4UefwCc/TWudwRfgn302yQjI50u9gFek9YS5RxlIj4T+WfNv7a8rDKvTGjxeMG638rXuLHEuUMJCZadvjNYdVwvGo9mtmtwa+BK7q2ovpc5iTU9OYPTM0eOPX5FO8qkd15U1pvfBO1BFCDwpelGW+AZwObL/dFhU43j0EcVqLM3VrnLuynURPt2pX9oQ1Je65W0Q1IyVMw5FWm2+aayr/jlhJqtwdsWPuzGegBW7Pc2h/rugTeE+1Rx4+bvlNVaihCewyu+tzvUJzT0xekhQM1kH9um/ZyyivJOziuwGwFoqAdFB7FYM5yMUo1AKaZGjL3to9eWIGQIDAQAB
sms:
api:
base-url: "https://api.028lk.com/Sms/Api/"