mirror of
https://gitee.com/dromara/dax-pay.git
synced 2025-09-07 21:17:42 +00:00
refactor(payment): 重构收银台相关代码
- 修改类名和包名,优化代码结构- 新增 AbsCheckoutStrategy 类,用于收银台支付 - 更新 CashierCodeService 和 CheckoutService,使用新的策略类 -调整 CashierCodeAuthUrlParam 和 CheckoutAggregatePayParam 的命名
This commit is contained in:
@@ -1,20 +1,20 @@
|
||||
package org.dromara.daxpay.channel.alipay.strategy;
|
||||
|
||||
import org.dromara.daxpay.core.enums.ChannelEnum;
|
||||
import org.dromara.daxpay.service.strategy.AbsChannelCashierStrategy;
|
||||
import org.dromara.daxpay.service.strategy.AbsCashierCodeStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 支付宝收银台支付
|
||||
* 支付宝收银码牌支付
|
||||
* @author xxm
|
||||
* @since 2024/9/29
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AliPayCashierStrategy extends AbsChannelCashierStrategy {
|
||||
public class AliPayCashierCodeStrategy extends AbsCashierCodeStrategy {
|
||||
|
||||
/**
|
||||
* 策略标识, 可以自行进行扩展
|
@@ -0,0 +1,27 @@
|
||||
package org.dromara.daxpay.channel.alipay.strategy;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.core.enums.ChannelEnum;
|
||||
import org.dromara.daxpay.service.strategy.AbsCheckoutStrategy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 支付宝
|
||||
* @author xxm
|
||||
* @since 2024/12/2
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class AliPayCheckoutStrategy extends AbsCheckoutStrategy {
|
||||
/**
|
||||
* 策略标识, 可以自行进行扩展
|
||||
*
|
||||
* @see ChannelEnum
|
||||
*/
|
||||
@Override
|
||||
public String getChannel() {
|
||||
return ChannelEnum.ALI.getCode();
|
||||
}
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
package org.dromara.daxpay.channel.wechat.controller;
|
||||
|
||||
import cn.bootx.platform.core.annotation.IgnoreAuth;
|
||||
import org.dromara.daxpay.channel.wechat.service.assist.WechatAuthService;
|
||||
import org.dromara.daxpay.channel.wechat.service.callback.WechatPayCallbackService;
|
||||
import org.dromara.daxpay.channel.wechat.service.callback.WechatRefundCallbackService;
|
||||
import org.dromara.daxpay.channel.wechat.service.callback.WechatTransferCallbackService;
|
||||
|
@@ -35,6 +35,8 @@ public class WechatAuthService {
|
||||
|
||||
/**
|
||||
* 构建微信oauth2授权的url连接
|
||||
* 1. 手段传输回调地址, 直接进行拼接, 后续跳转到传输的回调地址, 而不会经过系统
|
||||
* 2. 不传输回调地址, 则会生成一个h5段的认证路径, 后续通过这个页面和系统配合获取认证信息, 会返回查询码用于查询
|
||||
*/
|
||||
public AuthUrlResult generateAuthUrl(GenerateAuthUrlParam param) {
|
||||
WechatPayConfig config = wechatPayConfigService.getWechatPayConfig();
|
||||
@@ -51,13 +53,32 @@ public class WechatAuthService {
|
||||
PlatformConfig platformConfig = platformConfigService.getConfig();
|
||||
serverUrl = platformConfig.getGatewayMobileUrl();
|
||||
}
|
||||
// 生产链接, 授权成功后重定向h5段用于获取授权码的页面, 获取成功后页面自动关闭
|
||||
String queryCode = RandomUtil.randomString(10);
|
||||
String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(),queryCode);
|
||||
String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(), queryCode);
|
||||
String authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, "");
|
||||
return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成内部使用的授权链接, 返回授权码给调用者, 由调用者自己再去获取授权信息
|
||||
* @param authPath 授权链接, 需要为h5项目中的可访问路由路径
|
||||
*/
|
||||
public String generateInnerAuthUrl(String authPath) {
|
||||
WechatPayConfig config = wechatPayConfigService.getWechatPayConfig();
|
||||
WxMpService wxMpService = this.getWxMpService(config);
|
||||
|
||||
// 如果配置中有地址配置则使用, 没有的话使用平台地址进行拼接
|
||||
String serverUrl = config.getAuthUrl();
|
||||
if (StrUtil.isBlank(serverUrl)){
|
||||
PlatformConfig platformConfig = platformConfigService.getConfig();
|
||||
serverUrl = platformConfig.getGatewayMobileUrl();
|
||||
}
|
||||
String redirectUrl = StrUtil.format("{}/{}", serverUrl, authPath);
|
||||
return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信AccessToken数据
|
||||
*/
|
||||
|
@@ -1,100 +0,0 @@
|
||||
package org.dromara.daxpay.channel.wechat.service.pay;
|
||||
|
||||
import org.dromara.daxpay.channel.wechat.entity.config.WechatPayConfig;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.service.config.WechatPayConfigService;
|
||||
import org.dromara.daxpay.core.exception.PayFailureException;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.service.entity.config.PlatformConfig;
|
||||
import org.dromara.daxpay.service.service.config.PlatformConfigService;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import me.chanjar.weixin.common.api.WxConsts;
|
||||
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
|
||||
import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 微信收银
|
||||
* @author xxm
|
||||
* @since 2024/9/29
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatPayCashierService {
|
||||
|
||||
private final WechatPayConfigService wechatPayConfigService;
|
||||
|
||||
private final PlatformConfigService platformConfigService;
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
public String generateAuthUrl(CashierAuthUrlParam param) {
|
||||
WechatPayConfig config = wechatPayConfigService.getWechatPayConfig();
|
||||
WxMpService wxMpService = this.getWxMpService(config);
|
||||
|
||||
// 如果配置中有地址配置则使用, 没有的话使用平台地址进行拼接
|
||||
String serverUrl = config.getAuthUrl();
|
||||
if (StrUtil.isBlank(serverUrl)){
|
||||
PlatformConfig platformConfig = platformConfigService.getConfig();
|
||||
serverUrl = platformConfig.getGatewayMobileUrl();
|
||||
}
|
||||
String redirectUrl = StrUtil.format("{}/cashier/wechat/{}", serverUrl, param.getCashierCode());
|
||||
return wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数与处理, 获取OpenId
|
||||
* @param cashierPayParam 收银台支付参数
|
||||
* @param payParam 统一支付参数
|
||||
*/
|
||||
public void handlePayParam(CashierPayParam cashierPayParam, PayParam payParam) {
|
||||
WechatPayParam wechatPayParam = new WechatPayParam();
|
||||
wechatPayParam.setOpenId(cashierPayParam.getOpenId());
|
||||
payParam.setExtraParam(JSONUtil.toJsonStr(wechatPayParam));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取OpenId
|
||||
*/
|
||||
public String getOpenId(CashierAuthCodeParam param){
|
||||
// 获取OpenId
|
||||
WxMpService wxMpService = this.getWxMpService();
|
||||
try {
|
||||
WxOAuth2AccessToken accessToken = wxMpService.getOAuth2Service().getAccessToken(param.getAuthCode());
|
||||
return accessToken.getOpenId();
|
||||
} catch (WxErrorException e) {
|
||||
log.error("收银台支付获取OpenId失败, {}", param, e);
|
||||
throw new PayFailureException("收银台支付获取OpenId失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取微信公众号API的Service
|
||||
*/
|
||||
private WxMpService getWxMpService() {
|
||||
WechatPayConfig config = wechatPayConfigService.getAndCheckConfig();
|
||||
return getWxMpService(config);
|
||||
}
|
||||
/**
|
||||
* 获取微信公众号API的Service
|
||||
*/
|
||||
private WxMpService getWxMpService(WechatPayConfig config) {
|
||||
WxMpService wxMpService = new WxMpServiceImpl();
|
||||
WxMpDefaultConfigImpl wxMpConfig = new WxMpDefaultConfigImpl();
|
||||
wxMpConfig.setAppId(config.getWxAppId()); // 设置微信公众号的appid
|
||||
wxMpConfig.setSecret(config.getAppSecret()); // 设置微信公众号的app corpSecret
|
||||
wxMpService.setWxMpConfigStorage(wxMpConfig);
|
||||
return wxMpService;
|
||||
}
|
||||
}
|
@@ -28,7 +28,7 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROT
|
||||
@Service
|
||||
@Scope(SCOPE_PROTOTYPE)
|
||||
@RequiredArgsConstructor
|
||||
public class WechatPayAllocReceiverStrategy extends AbsAllocReceiverStrategy {
|
||||
public class WechatAllocReceiverStrategy extends AbsAllocReceiverStrategy {
|
||||
|
||||
private final WechatPayAllocReceiverV2Service receiverV2Service;
|
||||
|
@@ -0,0 +1,64 @@
|
||||
package org.dromara.daxpay.channel.wechat.strategy;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.service.assist.WechatAuthService;
|
||||
import org.dromara.daxpay.core.enums.ChannelAuthStatusEnum;
|
||||
import org.dromara.daxpay.core.enums.ChannelEnum;
|
||||
import org.dromara.daxpay.core.param.assist.AuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodePayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
import org.dromara.daxpay.service.strategy.AbsCashierCodeStrategy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 微信收银码牌支付
|
||||
* @author xxm
|
||||
* @since 2024/9/29
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class WechatCashierCodeStrategy extends AbsCashierCodeStrategy {
|
||||
private final WechatAuthService wechatAuthService;
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
@Override
|
||||
public String generateAuthUrl(String cashierCode) {
|
||||
String redirectUrl = StrUtil.format("/cashier/wechat/{}", cashierCode);
|
||||
return wechatAuthService.generateInnerAuthUrl(redirectUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取认证结果
|
||||
*/
|
||||
@Override
|
||||
public AuthResult doAuth(AuthCodeParam param) {
|
||||
String openId = wechatAuthService.getTokenAndOpenId(param.getAuthCode()).getOpenId();
|
||||
return new AuthResult().setStatus(ChannelAuthStatusEnum.SUCCESS.getCode()).setOpenId(openId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
@Override
|
||||
public void handlePayParam(CashierCodePayParam cashierPayParam, PayParam payParam) {
|
||||
WechatPayParam wechatPayParam = new WechatPayParam();
|
||||
wechatPayParam.setOpenId(cashierPayParam.getOpenId());
|
||||
payParam.setExtraParam(JSONUtil.toJsonStr(wechatPayParam));
|
||||
}
|
||||
|
||||
/**
|
||||
* 策略标识, 可以自行进行扩展
|
||||
*/
|
||||
@Override
|
||||
public String getChannel() {
|
||||
return ChannelEnum.WECHAT.getCode();
|
||||
}
|
||||
}
|
@@ -0,0 +1,69 @@
|
||||
package org.dromara.daxpay.channel.wechat.strategy;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.channel.wechat.param.pay.WechatPayParam;
|
||||
import org.dromara.daxpay.channel.wechat.service.assist.WechatAuthService;
|
||||
import org.dromara.daxpay.core.enums.ChannelAuthStatusEnum;
|
||||
import org.dromara.daxpay.core.enums.ChannelEnum;
|
||||
import org.dromara.daxpay.core.param.assist.AuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
import org.dromara.daxpay.service.strategy.AbsCheckoutStrategy;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 微信收银台支付策略
|
||||
* @author xxm
|
||||
* @since 2024/12/2
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class WechatCheckoutStrategy extends AbsCheckoutStrategy {
|
||||
private final WechatAuthService wechatAuthService;
|
||||
|
||||
/**
|
||||
* 策略标识, 可以自行进行扩展
|
||||
*
|
||||
* @see ChannelEnum
|
||||
*/
|
||||
@Override
|
||||
public String getChannel() {
|
||||
return ChannelEnum.WECHAT.getCode();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
@Override
|
||||
public String generateAuthUrl(CashierCodeAuthUrlParam param) {
|
||||
String redirectUrl = StrUtil.format("/checkout/wechat/{}", param.getCashierCode());
|
||||
return wechatAuthService.generateInnerAuthUrl(redirectUrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取认证结果
|
||||
*/
|
||||
@Override
|
||||
public AuthResult doAuth(AuthCodeParam param) {
|
||||
String openId = wechatAuthService.getTokenAndOpenId(param.getAuthCode()).getOpenId();
|
||||
return new AuthResult().setStatus(ChannelAuthStatusEnum.SUCCESS.getCode()).setOpenId(openId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
@Override
|
||||
public void handlePayParam(CheckoutPayParam checkoutPayParam, PayParam payParam) {
|
||||
WechatPayParam wechatPayParam = new WechatPayParam();
|
||||
wechatPayParam.setOpenId(checkoutPayParam.getOpenId());
|
||||
wechatPayParam.setAuthCode(checkoutPayParam.getBarCode());
|
||||
payParam.setExtraParam(JSONUtil.toJsonStr(wechatPayParam));
|
||||
}
|
||||
|
||||
}
|
@@ -1,59 +0,0 @@
|
||||
package org.dromara.daxpay.channel.wechat.strategy;
|
||||
|
||||
import org.dromara.daxpay.channel.wechat.service.pay.WechatPayCashierService;
|
||||
import org.dromara.daxpay.core.enums.ChannelAuthStatusEnum;
|
||||
import org.dromara.daxpay.core.enums.ChannelEnum;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
import org.dromara.daxpay.service.strategy.AbsChannelCashierStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* 微信收银支付
|
||||
* @author xxm
|
||||
* @since 2024/9/29
|
||||
*/
|
||||
@Slf4j
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
public class WechatPayCashierStrategy extends AbsChannelCashierStrategy {
|
||||
private final WechatPayCashierService wechatPayCashierService;
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
@Override
|
||||
public String generateAuthUrl(CashierAuthUrlParam param) {
|
||||
return wechatPayCashierService.generateAuthUrl(param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取认证结果
|
||||
*/
|
||||
@Override
|
||||
public AuthResult doAuth(CashierAuthCodeParam param) {
|
||||
String openId = wechatPayCashierService.getOpenId(param);
|
||||
return new AuthResult().setStatus(ChannelAuthStatusEnum.SUCCESS.getCode()).setOpenId(openId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
@Override
|
||||
public void handlePayParam(CashierPayParam cashierPayParam, PayParam payParam) {
|
||||
wechatPayCashierService.handlePayParam(cashierPayParam,payParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 策略标识, 可以自行进行扩展
|
||||
*/
|
||||
@Override
|
||||
public String getChannel() {
|
||||
return ChannelEnum.WECHAT.getCode();
|
||||
}
|
||||
}
|
@@ -25,7 +25,7 @@ import static org.springframework.beans.factory.config.BeanDefinition.SCOPE_PROT
|
||||
@Scope(SCOPE_PROTOTYPE)
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatPayReconcileStrategy extends AbsReconcileStrategy {
|
||||
public class WechatReconcileStrategy extends AbsReconcileStrategy {
|
||||
|
||||
private final WechatPayReconcileService reconcileService;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.daxpay.service.param.cashier;
|
||||
package org.dromara.daxpay.core.param.cashier;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -15,10 +15,10 @@ import lombok.experimental.Accessors;
|
||||
public class CashierCodeAuthCodeParam {
|
||||
|
||||
@Schema(description = "码牌Code")
|
||||
private String code;
|
||||
private String cashierCode;
|
||||
|
||||
@Schema(description = "收银台类型")
|
||||
private String type;
|
||||
private String cashierType;
|
||||
|
||||
@Schema(description = "认证Code")
|
||||
private String authCode;
|
@@ -5,18 +5,18 @@ import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 获取通道收银认证url参数
|
||||
* 获取收银码牌认证url参数
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "通道收银认证参数")
|
||||
public class CashierAuthUrlParam {
|
||||
@Schema(title = "收银码牌认证参数")
|
||||
public class CashierCodeAuthUrlParam {
|
||||
|
||||
@Schema(description = "应用号")
|
||||
@Schema(description = "收银台code")
|
||||
private String cashierCode;
|
||||
|
||||
@Schema(description = "收银台类型")
|
||||
@Schema(description = "收银码牌类型")
|
||||
private String cashierType;
|
||||
}
|
@@ -7,14 +7,14 @@ import lombok.experimental.Accessors;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* 通道收银支付参数
|
||||
* 收银码牌支付参数
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "通道收银支付参数")
|
||||
public class CashierPayParam {
|
||||
@Schema(title = "收银码牌支付参数")
|
||||
public class CashierCodePayParam {
|
||||
|
||||
@Schema(description = "收银码牌Code")
|
||||
private String cashierCode;
|
@@ -3,6 +3,7 @@ package org.dromara.daxpay.core.param.checkout;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.dromara.daxpay.core.enums.CheckoutAggregateEnum;
|
||||
|
||||
/**
|
||||
* 收银台聚合支付参数
|
||||
@@ -11,17 +12,20 @@ import lombok.experimental.Accessors;
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "收银台支付参数")
|
||||
@Schema(title = "收银台聚合支付参数")
|
||||
public class CheckoutAggregatePayParam {
|
||||
|
||||
@Schema(description = "要支付的订单号")
|
||||
private String orderNo;
|
||||
|
||||
/**
|
||||
* 聚合支付类型
|
||||
* @see CheckoutAggregateEnum
|
||||
*/
|
||||
@Schema(description = "聚合支付类型")
|
||||
private String aggregateType;
|
||||
|
||||
@Schema(description = "唯一标识")
|
||||
private String openId;
|
||||
|
||||
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.daxpay.core.param.cashier;
|
||||
package org.dromara.daxpay.core.param.checkout;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@@ -11,8 +11,8 @@ import lombok.experimental.Accessors;
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "通道收银认证参数")
|
||||
public class CashierAuthCodeParam {
|
||||
@Schema(title = "收银台认证参数")
|
||||
public class CheckoutAuthCodeParam {
|
||||
|
||||
@Schema(description = "应用号")
|
||||
private String appId;
|
@@ -0,0 +1,27 @@
|
||||
package org.dromara.daxpay.core.param.checkout;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.dromara.daxpay.core.enums.CheckoutAggregateEnum;
|
||||
|
||||
/**
|
||||
* 获取通道收银认证url参数
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "通道收银认证参数")
|
||||
public class CheckoutAuthUrlParam {
|
||||
|
||||
/**
|
||||
* 聚合支付类型
|
||||
* @see CheckoutAggregateEnum
|
||||
*/
|
||||
@Schema(description = "聚合支付类型")
|
||||
private String aggregateType;
|
||||
|
||||
@Schema(description = "收银台类型")
|
||||
private String cashierType;
|
||||
}
|
@@ -22,7 +22,7 @@ import java.time.LocalDateTime;
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "收银台创建参数")
|
||||
public class CheckoutParam extends PaymentCommonParam {
|
||||
public class CheckoutCreatParam extends PaymentCommonParam {
|
||||
|
||||
/**
|
||||
* 收银台类型
|
@@ -8,12 +8,12 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierPayParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodePayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
import org.dromara.daxpay.core.result.cashier.CashierCodeResult;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PayResult;
|
||||
import org.dromara.daxpay.service.param.cashier.CashierCodeAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthCodeParam;
|
||||
import org.dromara.daxpay.service.service.cashier.CashierCodeService;
|
||||
import org.dromara.daxpay.service.service.config.cashier.CashierCodeConfigService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -43,7 +43,7 @@ public class CashierCodeController {
|
||||
|
||||
@Operation(summary = "获取码牌所需授权链接, 用于获取OpenId一类的信息")
|
||||
@PostMapping("/generateAuthUrl")
|
||||
public Result<String> generateAuthUrl(@RequestBody CashierAuthUrlParam param){
|
||||
public Result<String> generateAuthUrl(@RequestBody CashierCodeAuthUrlParam param){
|
||||
ValidationUtil.validateParam(param);
|
||||
return Res.ok(cashierCodeService.generateAuthUrl(param));
|
||||
}
|
||||
@@ -57,7 +57,7 @@ public class CashierCodeController {
|
||||
|
||||
@Operation(summary = "发起支付")
|
||||
@PostMapping("/pay")
|
||||
public Result<PayResult> cashierPay(@RequestBody CashierPayParam param){
|
||||
public Result<PayResult> cashierPay(@RequestBody CashierCodePayParam param){
|
||||
ValidationUtil.validateParam(param);
|
||||
return Res.ok(cashierCodeService.cashierPay(param));
|
||||
}
|
||||
|
@@ -5,7 +5,7 @@ import cn.bootx.platform.core.rest.result.Result;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutPayParam;
|
||||
import org.dromara.daxpay.core.result.DaxResult;
|
||||
import org.dromara.daxpay.core.result.checkout.CheckoutAggregateOrderAndConfigResult;
|
||||
@@ -13,8 +13,8 @@ import org.dromara.daxpay.core.result.checkout.CheckoutOrderAndConfigResult;
|
||||
import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult;
|
||||
import org.dromara.daxpay.core.util.DaxRes;
|
||||
import org.dromara.daxpay.service.common.anno.PaymentVerify;
|
||||
import org.dromara.daxpay.service.service.cashier.CheckoutQueryService;
|
||||
import org.dromara.daxpay.service.service.cashier.CheckoutService;
|
||||
import org.dromara.daxpay.service.service.checkout.CheckoutQueryService;
|
||||
import org.dromara.daxpay.service.service.checkout.CheckoutService;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
@@ -33,7 +33,7 @@ public class CheckoutController {
|
||||
@PaymentVerify
|
||||
@Operation(summary = "创建一个收银台链接")
|
||||
@PostMapping("/creat")
|
||||
public DaxResult<CheckoutUrlResult> creat(@RequestBody CheckoutParam checkoutParam){
|
||||
public DaxResult<CheckoutUrlResult> creat(@RequestBody CheckoutCreatParam checkoutParam){
|
||||
return DaxRes.ok(checkoutService.creat(checkoutParam));
|
||||
}
|
||||
|
||||
|
@@ -1,22 +0,0 @@
|
||||
package org.dromara.daxpay.service.param.cashier;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
* 获取收银码牌认证url参数
|
||||
* @author xxm
|
||||
* @since 2024/11/25
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@Schema(title = "获取收银码牌认证url参数")
|
||||
public class CashierCodeAuthUrlParam {
|
||||
|
||||
@Schema(description = "码牌Code")
|
||||
private String code;
|
||||
|
||||
@Schema(description = "收银台类型")
|
||||
private String type;
|
||||
}
|
@@ -6,25 +6,25 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.extra.servlet.JakartaServletUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierPayParam;
|
||||
import org.dromara.daxpay.core.param.assist.AuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodePayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PayResult;
|
||||
import org.dromara.daxpay.core.util.TradeNoGenerateUtil;
|
||||
import org.dromara.daxpay.service.param.cashier.CashierCodeAuthCodeParam;
|
||||
import org.dromara.daxpay.service.service.assist.PaymentAssistService;
|
||||
import org.dromara.daxpay.service.service.config.cashier.CashierCodeConfigService;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PayService;
|
||||
import org.dromara.daxpay.service.strategy.AbsChannelCashierStrategy;
|
||||
import org.dromara.daxpay.service.strategy.AbsCashierCodeStrategy;
|
||||
import org.dromara.daxpay.service.util.PaymentStrategyFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 通知支付控制台服务
|
||||
* 收银码牌服务
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
@@ -42,13 +42,13 @@ public class CashierCodeService {
|
||||
/**
|
||||
* 生成授权链接跳转链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
public String generateAuthUrl(CashierAuthUrlParam param){
|
||||
public String generateAuthUrl(CashierCodeAuthUrlParam param){
|
||||
// 查询配置
|
||||
var cashierConfig = codeConfigService.findByCashierType(param.getCashierCode(),param.getCashierType());
|
||||
paymentAssistService.initMchApp(cashierConfig.getAppId());
|
||||
// 获取策略
|
||||
AbsChannelCashierStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsChannelCashierStrategy.class);
|
||||
return cashierStrategy.generateAuthUrl(param);
|
||||
AbsCashierCodeStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsCashierCodeStrategy.class);
|
||||
return cashierStrategy.generateAuthUrl(param.getCashierCode());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -56,21 +56,19 @@ public class CashierCodeService {
|
||||
*/
|
||||
public AuthResult auth(CashierCodeAuthCodeParam param) {
|
||||
// 查询配置
|
||||
var cashierConfig = codeConfigService.findByCashierType(param.getCode(),param.getType());
|
||||
var cashierConfig = codeConfigService.findByCashierType(param.getCashierCode(),param.getCashierType());
|
||||
paymentAssistService.initMchApp(cashierConfig.getAppId());
|
||||
// 获取策略
|
||||
AbsChannelCashierStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsChannelCashierStrategy.class);
|
||||
CashierAuthCodeParam authCodeParam = new CashierAuthCodeParam()
|
||||
.setCashierType(param.getType())
|
||||
.setAuthCode(param.getAuthCode())
|
||||
.setAppId(cashierConfig.getAppId());
|
||||
AbsCashierCodeStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsCashierCodeStrategy.class);
|
||||
AuthCodeParam authCodeParam = new AuthCodeParam()
|
||||
.setAuthCode(param.getAuthCode());
|
||||
return cashierStrategy.doAuth(authCodeParam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付处理
|
||||
*/
|
||||
public PayResult cashierPay(CashierPayParam param){
|
||||
public PayResult cashierPay(CashierCodePayParam param){
|
||||
String clientIP = JakartaServletUtil.getClientIP(WebServletUtil.getRequest());
|
||||
// 查询配置
|
||||
var cashierConfig = codeConfigService.findByCashierType(param.getCashierCode(), param.getCashierType());
|
||||
@@ -90,7 +88,7 @@ public class CashierCodeService {
|
||||
payParam.setSign(sign);
|
||||
|
||||
// 获取策略
|
||||
AbsChannelCashierStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsChannelCashierStrategy.class);
|
||||
AbsCashierCodeStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsCashierCodeStrategy.class);
|
||||
// 进行参数预处理
|
||||
cashierStrategy.handlePayParam(param, payParam);
|
||||
// 参数校验
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.daxpay.service.service.cashier;
|
||||
package org.dromara.daxpay.service.service.checkout;
|
||||
|
||||
import cn.bootx.platform.core.exception.ValidationFailedException;
|
||||
import cn.bootx.platform.core.util.BigDecimalUtil;
|
||||
@@ -12,7 +12,7 @@ import org.dromara.daxpay.core.enums.PayRefundStatusEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.AmountExceedLimitException;
|
||||
import org.dromara.daxpay.core.exception.TradeStatusErrorException;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam;
|
||||
import org.dromara.daxpay.core.util.PayUtil;
|
||||
import org.dromara.daxpay.core.util.TradeNoGenerateUtil;
|
||||
import org.dromara.daxpay.service.code.DaxPayCode;
|
||||
@@ -52,7 +52,7 @@ public class CheckoutAssistService {
|
||||
/**
|
||||
* 校验支付状态,支付成功则返回,支付失败则抛出对应的异常
|
||||
*/
|
||||
public PayOrder getOrderAndCheck(CheckoutParam param) {
|
||||
public PayOrder getOrderAndCheck(CheckoutCreatParam param) {
|
||||
// 根据订单查询支付记录
|
||||
PayOrder payOrder = payOrderQueryService.findByBizOrderNo(param.getBizOrderNo(), param.getAppId()).orElse(null);
|
||||
return getOrderAndCheck(payOrder);
|
||||
@@ -87,7 +87,7 @@ public class CheckoutAssistService {
|
||||
/**
|
||||
* 检验订单是否超过限额
|
||||
*/
|
||||
public void validationLimitAmount(CheckoutParam checkoutParam) {
|
||||
public void validationLimitAmount(CheckoutCreatParam checkoutParam) {
|
||||
MchAppLocal mchAppInfo = PaymentContextLocal.get()
|
||||
.getMchAppInfo();
|
||||
// 总额校验
|
||||
@@ -100,7 +100,7 @@ public class CheckoutAssistService {
|
||||
/**
|
||||
* 校验订单超时时间是否正常
|
||||
*/
|
||||
public void validationExpiredTime(CheckoutParam payParam) {
|
||||
public void validationExpiredTime(CheckoutCreatParam payParam) {
|
||||
LocalDateTime expiredTime = this.getExpiredTime(payParam);
|
||||
if (Objects.nonNull(expiredTime) && DateTimeUtil.lt(expiredTime,LocalDateTime.now())) {
|
||||
throw new ValidationFailedException("支付超时时间设置有误, 请检查!");
|
||||
@@ -113,7 +113,7 @@ public class CheckoutAssistService {
|
||||
* 创建支付订单并保存, 返回支付订单
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public PayOrder createPayOrder(CheckoutParam checkoutParam) {
|
||||
public PayOrder createPayOrder(CheckoutCreatParam checkoutParam) {
|
||||
// 订单超时时间
|
||||
LocalDateTime expiredTime = this.getExpiredTime(checkoutParam);
|
||||
// 构建支付订单对象
|
||||
@@ -138,7 +138,7 @@ public class CheckoutAssistService {
|
||||
/**
|
||||
* 获取支付订单超时时间
|
||||
*/
|
||||
private LocalDateTime getExpiredTime(CheckoutParam payParam) {
|
||||
private LocalDateTime getExpiredTime(CheckoutCreatParam payParam) {
|
||||
MchAppLocal mchAppLocal = PaymentContextLocal.get().getMchAppInfo();
|
||||
// 支付参数传入
|
||||
if (Objects.nonNull(payParam.getExpiredTime())) {
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.daxpay.service.service.cashier;
|
||||
package org.dromara.daxpay.service.service.checkout;
|
||||
|
||||
import cn.bootx.platform.common.mybatisplus.base.MpIdEntity;
|
||||
import cn.bootx.platform.core.exception.DataNotExistException;
|
||||
@@ -24,7 +24,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
*
|
||||
* 收银码牌查询服务
|
||||
* @author xxm
|
||||
* @since 2024/11/27
|
||||
*/
|
@@ -1,4 +1,4 @@
|
||||
package org.dromara.daxpay.service.service.cashier;
|
||||
package org.dromara.daxpay.service.service.checkout;
|
||||
|
||||
import cn.bootx.platform.common.spring.util.WebServletUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
@@ -10,22 +10,27 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.daxpay.core.enums.CheckoutCallTypeEnum;
|
||||
import org.dromara.daxpay.core.enums.CheckoutTypeEnum;
|
||||
import org.dromara.daxpay.core.enums.PayStatusEnum;
|
||||
import org.dromara.daxpay.core.exception.ConfigNotExistException;
|
||||
import org.dromara.daxpay.core.exception.TradeProcessingException;
|
||||
import org.dromara.daxpay.core.exception.UnsupportedAbilityException;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutAggregatePayParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.checkout.CheckoutPayResult;
|
||||
import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult;
|
||||
import org.dromara.daxpay.core.result.trade.pay.PayResult;
|
||||
import org.dromara.daxpay.service.dao.config.checkout.CheckoutAggregateConfigManager;
|
||||
import org.dromara.daxpay.service.dao.config.checkout.CheckoutItemConfigManager;
|
||||
import org.dromara.daxpay.service.entity.config.PlatformConfig;
|
||||
import org.dromara.daxpay.service.entity.config.checkout.CheckoutAggregateConfig;
|
||||
import org.dromara.daxpay.service.entity.config.checkout.CheckoutItemConfig;
|
||||
import org.dromara.daxpay.service.entity.order.pay.PayOrder;
|
||||
import org.dromara.daxpay.service.service.assist.PaymentAssistService;
|
||||
import org.dromara.daxpay.service.service.config.PlatformConfigService;
|
||||
import org.dromara.daxpay.service.service.trade.pay.PayService;
|
||||
import org.dromara.daxpay.service.strategy.AbsCheckoutStrategy;
|
||||
import org.dromara.daxpay.service.util.PaymentStrategyFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
@@ -46,11 +51,12 @@ public class CheckoutService {
|
||||
private final PaymentAssistService paymentAssistService;
|
||||
private final CheckoutItemConfigManager checkoutItemConfigManager;
|
||||
private final PayService payService;
|
||||
private final CheckoutAggregateConfigManager checkoutAggregateConfigManager;
|
||||
|
||||
/**
|
||||
* 生成收银台链接
|
||||
*/
|
||||
public CheckoutUrlResult creat(CheckoutParam checkoutParam){
|
||||
public CheckoutUrlResult creat(CheckoutCreatParam checkoutParam){
|
||||
// 校验支付限额
|
||||
checkoutAssistService.validationLimitAmount(checkoutParam);
|
||||
// 校验超时时间, 不可早于当前
|
||||
@@ -149,15 +155,14 @@ public class CheckoutService {
|
||||
payParam.setReqTime(LocalDateTime.now());
|
||||
|
||||
// 获取策略
|
||||
// AbsChannelCashierStrategy cashierStrategy = PaymentStrategyFactory.create(itemConfig.getChannel(), AbsChannelCashierStrategy.class);
|
||||
var cashierStrategy = PaymentStrategyFactory.create(itemConfig.getChannel(), AbsCheckoutStrategy.class);
|
||||
// 进行参数预处理
|
||||
// cashierStrategy.handlePayParam(param, payParam);
|
||||
cashierStrategy.handlePayParam(param, payParam);
|
||||
// 发起支付
|
||||
PayResult payResult = payService.pay(payParam, payOrder);
|
||||
return new CheckoutPayResult()
|
||||
.setUrl(payResult.getPayBody())
|
||||
.setPayStatus(payResult.getStatus());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,7 +172,57 @@ public class CheckoutService {
|
||||
// 订单信息
|
||||
PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo());
|
||||
|
||||
return new PayResult();
|
||||
// 获取聚合类型
|
||||
CheckoutAggregateConfig aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType())
|
||||
.orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在"));
|
||||
|
||||
// 构建支付参数
|
||||
String clientIP = JakartaServletUtil.getClientIP(WebServletUtil.getRequest());
|
||||
PayParam payParam = new PayParam();
|
||||
payParam.setChannel(aggregateConfig.getChannel());
|
||||
payParam.setMethod(aggregateConfig.getPayMethod());
|
||||
payParam.setAppId(aggregateConfig.getAppId());
|
||||
payParam.setClientIp(clientIP);
|
||||
payParam.setReqTime(LocalDateTime.now());
|
||||
|
||||
// 获取策略
|
||||
var cashierStrategy = PaymentStrategyFactory.create(aggregateConfig.getChannel(), AbsCheckoutStrategy.class);
|
||||
// 进行参数预处理
|
||||
CheckoutPayParam cashierPayParam = new CheckoutPayParam()
|
||||
.setOpenId(param.getOpenId());
|
||||
cashierStrategy.handlePayParam(cashierPayParam, payParam);
|
||||
// 发起支付
|
||||
return payService.pay(payParam, payOrder);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 生成授权链接跳转链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
// */
|
||||
// public String generateAuthUrl(CheckoutAggregatePayParam param){
|
||||
// // 订单信息
|
||||
// PayOrder payOrder = checkoutAssistService.getOrderAndCheck(param.getOrderNo());
|
||||
// // 获取聚合类型
|
||||
// CheckoutAggregateConfig aggregateConfig = checkoutAggregateConfigManager.findByAppIdAndType(payOrder.getAppId(), param.getAggregateType())
|
||||
// .orElseThrow(() -> new ConfigNotExistException("聚合支付配置项不存在"));
|
||||
// paymentAssistService.initMchApp(aggregateConfig.getAppId());
|
||||
// // 获取策略
|
||||
// var cashierStrategy = PaymentStrategyFactory.create(aggregateConfig.getChannel(), AbsCheckoutStrategy.class);
|
||||
// return cashierStrategy.generateAuthUrl(param);
|
||||
// }
|
||||
//
|
||||
// /**
|
||||
// * 授权结果
|
||||
// */
|
||||
// public AuthResult auth(org.dromara.daxpay.service.param.cashier.AuthCodeParam param) {
|
||||
// // 查询配置
|
||||
// var cashierConfig = codeConfigService.findByCashierType(param.getCode(),param.getType());
|
||||
// paymentAssistService.initMchApp(cashierConfig.getAppId());
|
||||
// // 获取策略
|
||||
// AbsCashierCodeStrategy cashierStrategy = PaymentStrategyFactory.create(cashierConfig.getChannel(), AbsCashierCodeStrategy.class);
|
||||
// AuthCodeParam authCodeParam = new AuthCodeParam()
|
||||
// .setCashierType(param.getType())
|
||||
// .setAuthCode(param.getAuthCode())
|
||||
// .setAppId(cashierConfig.getAppId());
|
||||
// return cashierStrategy.doAuth(authCodeParam);
|
||||
// }
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package org.dromara.daxpay.service.strategy;
|
||||
|
||||
import org.dromara.daxpay.core.param.assist.AuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodePayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
|
||||
/**
|
||||
* 抽象收银码牌策略
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
public abstract class AbsCashierCodeStrategy implements PaymentStrategy{
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
public String generateAuthUrl(String cashierCode) {
|
||||
return "";
|
||||
}
|
||||
|
||||
/**Z
|
||||
* 获取认证结果
|
||||
*/
|
||||
public AuthResult doAuth(AuthCodeParam param) {
|
||||
return new AuthResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
public void handlePayParam(CashierCodePayParam cashierPayParam, PayParam payParam) {
|
||||
}
|
||||
|
||||
}
|
@@ -1,36 +0,0 @@
|
||||
package org.dromara.daxpay.service.strategy;
|
||||
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
|
||||
/**
|
||||
* 抽象通道收银台策略
|
||||
* @author xxm
|
||||
* @since 2024/9/28
|
||||
*/
|
||||
public abstract class AbsChannelCashierStrategy implements PaymentStrategy{
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
public String generateAuthUrl(CashierAuthUrlParam param) {
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取认证结果
|
||||
*/
|
||||
public AuthResult doAuth(CashierAuthCodeParam param) {
|
||||
return new AuthResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
public void handlePayParam(CashierPayParam cashierPayParam, PayParam payParam) {
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,35 @@
|
||||
package org.dromara.daxpay.service.strategy;
|
||||
|
||||
import org.dromara.daxpay.core.param.assist.AuthCodeParam;
|
||||
import org.dromara.daxpay.core.param.cashier.CashierCodeAuthUrlParam;
|
||||
import org.dromara.daxpay.core.param.checkout.CheckoutPayParam;
|
||||
import org.dromara.daxpay.core.param.trade.pay.PayParam;
|
||||
import org.dromara.daxpay.core.result.assist.AuthResult;
|
||||
|
||||
/**
|
||||
* 抽象收银台策略
|
||||
* @author xxm
|
||||
* @since 2024/12/2
|
||||
*/
|
||||
public abstract class AbsCheckoutStrategy implements PaymentStrategy{
|
||||
|
||||
/**
|
||||
* 生成授权链接, 主要是微信类通道使用, 用于获取OpenId
|
||||
*/
|
||||
public String generateAuthUrl(CashierCodeAuthUrlParam param) {
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取认证结果
|
||||
*/
|
||||
public AuthResult doAuth(AuthCodeParam param) {
|
||||
return new AuthResult();
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付参数处理
|
||||
*/
|
||||
public void handlePayParam(CheckoutPayParam cashierPayParam, PayParam payParam) {
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user