feat:支付宝支付
This commit is contained in:
1 parent
13d912f0cb
commit
d4f45cf37e
15 files changed
+195
-63
No files matched your search
+2
-2
@@ -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();
|
||||
}
|
||||
+2
-3
@@ -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();
|
||||
}
|
||||
+2
-2
@@ -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;
|
||||
|
||||
+2
-2
@@ -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;
|
||||
|
||||
+3
-3
@@ -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;
|
||||
|
||||
}
|
||||
+2
-2
@@ -4,10 +4,10 @@ import com.bsd.pjcloud.thirdparty.constant.pay.ThirdPayOrderBizTypeEnum;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* JSAPI/小程序下单
|
||||
* app支付参数
|
||||
*/
|
||||
@Data
|
||||
public class ThirdMiniJsapiPayDto {
|
||||
public class ThirdAppPlusPayDto {
|
||||
|
||||
/**
|
||||
* 充值业务类型
|
||||
+1
-1
@@ -7,6 +7,6 @@ import java.util.HashMap;
|
||||
@Data
|
||||
public class ThirdMiniAppPayVo {
|
||||
|
||||
private HashMap<String, Object> miniAppPayParams;
|
||||
private HashMap<String, Object> appPlusPayParams;
|
||||
|
||||
}
|
||||
@@ -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>
|
||||
|
||||
+10
@@ -74,6 +74,16 @@ public class AppPlusPayConfig {
|
||||
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 应用私钥
|
||||
*/
|
||||
private String appPrivateKey;
|
||||
|
||||
/**
|
||||
* 支付公钥
|
||||
*/
|
||||
private String alipayPublicKey;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+7
@@ -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);
|
||||
|
||||
}
|
||||
+1
-1
@@ -14,7 +14,7 @@ public interface ThirdAppPlusWechatService {
|
||||
/**
|
||||
* JSAPI/小程序下单
|
||||
*/
|
||||
ThirdMiniJsapiPayVo jsapiPay(ThirdMiniJsapiPayDto dto);
|
||||
ThirdMiniJsapiPayVo jsapiPay(ThirdAppPlusPayDto dto);
|
||||
|
||||
/**
|
||||
* 获取openId
|
||||
|
||||
+104
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+45
-38
@@ -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;
|
||||
}
|
||||
|
||||
+5
-5
@@ -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());
|
||||
|
||||
+3
-2
@@ -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/"
|
||||
|
||||
Reference in new issue
Block a user