mirror of
https://gitee.com/dromara/dax-pay
synced 2026-08-10 06:46:04 +08:00
feat: 通道产品策略实现 (alipay/wechat/douyin/lakala/ums 共12个)
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package org.dromara.daxpay.channel.alipay.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
|
||||
/// # 支付宝直连产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AlipayDirectProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.ofEntries(
|
||||
Map.entry(PayMethodEnum.ALIPAY_BARCODE, List.of(PayCapabilityEnum.ALIPAY_BARCODE)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_ORDER_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_JSAPI, List.of(PayCapabilityEnum.ALIPAY_JSAPI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_MINI, List.of(PayCapabilityEnum.ALIPAY_MINI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_PC, List.of(PayCapabilityEnum.ALIPAY_PC)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_H5, List.of(PayCapabilityEnum.ALIPAY_H5)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_APP, List.of(PayCapabilityEnum.ALIPAY_APP)));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.ALIPAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApply() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() {
|
||||
return ChannelApiCallMode.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() {
|
||||
return ChannelPayIdType.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(ALIPAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package org.dromara.daxpay.channel.alipay.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
|
||||
/// # 支付宝服务商产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class AlipayIsvProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.ofEntries(
|
||||
Map.entry(PayMethodEnum.ALIPAY_BARCODE, List.of(PayCapabilityEnum.ALIPAY_BARCODE)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_ORDER_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_JSAPI, List.of(PayCapabilityEnum.ALIPAY_JSAPI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_MINI, List.of(PayCapabilityEnum.ALIPAY_MINI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_PC, List.of(PayCapabilityEnum.ALIPAY_PC)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_H5, List.of(PayCapabilityEnum.ALIPAY_H5)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_APP, List.of(PayCapabilityEnum.ALIPAY_APP)));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.ALIPAY_ISV;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIsv() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return false; }
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() { return ChannelApiCallMode.ISV; }
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() { return ChannelPayIdType.IDENTITY; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(ALIPAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package org.dromara.daxpay.channel.douyin.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/// # 抖音支付直连产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DouyinPayProductStrategy extends AbsProductStrategy {
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.DOUYIN_PAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApply() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() {
|
||||
return ChannelApiCallMode.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() {
|
||||
return ChannelPayIdType.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package org.dromara.daxpay.channel.lakala.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.UNION_PAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 拉卡拉支付产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class LakalaProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.ofEntries(
|
||||
Map.entry(PayMethodEnum.WECHAT_BARCODE, List.of(PayCapabilityEnum.WECHAT_BARCODE)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_BARCODE, List.of(PayCapabilityEnum.ALIPAY_BARCODE)),
|
||||
Map.entry(PayMethodEnum.UNION_PAY_BARCODE, List.of(PayCapabilityEnum.UNION_PAY_BARCODE)),
|
||||
Map.entry(PayMethodEnum.WECHAT_JSAPI, List.of(PayCapabilityEnum.WECHAT_JSAPI)),
|
||||
Map.entry(PayMethodEnum.WECHAT_APP, List.of(PayCapabilityEnum.WECHAT_APP)),
|
||||
Map.entry(PayMethodEnum.WECHAT_MINI, List.of(PayCapabilityEnum.WECHAT_MINI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_JSAPI, List.of(PayCapabilityEnum.ALIPAY_JSAPI)),
|
||||
Map.entry(PayMethodEnum.ALIPAY_MINI, List.of(PayCapabilityEnum.ALIPAY_MINI)),
|
||||
Map.entry(PayMethodEnum.UNION_QR, List.of(PayCapabilityEnum.UNION_PAY_QR)),
|
||||
Map.entry(PayMethodEnum.UNION_JSAPI, List.of(PayCapabilityEnum.UNION_PAY_JSAPI)));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.LAKALA_PAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIsv() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() { return ChannelApiCallMode.ISV; }
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() { return ChannelPayIdType.MCH; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY, UNION_PAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 银联商务APP支付产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsAppProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_APP, List.of(PayCapabilityEnum.WECHAT_APP),
|
||||
PayMethodEnum.ALIPAY_APP, List.of(PayCapabilityEnum.ALIPAY_APP));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_APP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.UNION_PAY;
|
||||
|
||||
/// # 银联商务B扫C支付(被扫)产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsBarcodeProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.UNION_PAY_BARCODE, List.of(PayCapabilityEnum.UNION_PAY_BARCODE));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_BARCODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(UNION_PAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.UNION_PAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 银联商务H5支付产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsH5ProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_H5, List.of(PayCapabilityEnum.WECHAT_H5),
|
||||
PayMethodEnum.ALIPAY_H5, List.of(PayCapabilityEnum.ALIPAY_H5),
|
||||
PayMethodEnum.UNION_H5, List.of(PayCapabilityEnum.UNION_PAY_H5));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_H5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY, UNION_PAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 银联商务公众号支付产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsJsapiProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_JSAPI, List.of(PayCapabilityEnum.WECHAT_JSAPI),
|
||||
PayMethodEnum.ALIPAY_JSAPI, List.of(PayCapabilityEnum.ALIPAY_JSAPI));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_JSAPI;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 银联商务小程序支付产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsMiniProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_MINI, List.of(PayCapabilityEnum.WECHAT_MINI),
|
||||
PayMethodEnum.ALIPAY_MINI, List.of(PayCapabilityEnum.ALIPAY_MINI));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_MINI;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.dromara.daxpay.channel.ums.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.ALIPAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.UNION_PAY;
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 银联商务C扫B支付(主扫)产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class UmsQrcodeProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_QR, List.of(PayCapabilityEnum.WECHAT_QR),
|
||||
PayMethodEnum.ALIPAY_QR, List.of(PayCapabilityEnum.ALIPAY_ORDER_QR),
|
||||
PayMethodEnum.UNION_QR, List.of(PayCapabilityEnum.UNION_PAY_QR));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.UMS_QRCODE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isTerminal() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return true; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT, ALIPAY, UNION_PAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
package org.dromara.daxpay.channel.wechat.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 微信支付直连产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatDirectProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_QR, List.of(PayCapabilityEnum.WECHAT_QR),
|
||||
PayMethodEnum.WECHAT_APP, List.of(PayCapabilityEnum.WECHAT_APP),
|
||||
PayMethodEnum.WECHAT_H5, List.of(PayCapabilityEnum.WECHAT_H5),
|
||||
PayMethodEnum.WECHAT_BARCODE, List.of(PayCapabilityEnum.WECHAT_BARCODE),
|
||||
PayMethodEnum.WECHAT_JSAPI, List.of(PayCapabilityEnum.WECHAT_JSAPI),
|
||||
PayMethodEnum.WECHAT_MINI, List.of(PayCapabilityEnum.WECHAT_MINI));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.WECHAT_PAY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isApply() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() {
|
||||
return ChannelApiCallMode.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() {
|
||||
return ChannelPayIdType.MCH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package org.dromara.daxpay.channel.wechat.strategy;
|
||||
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelApiCallMode;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ChannelPayIdType;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayCapabilityEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayMethodEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum;
|
||||
import org.dromara.daxpay.platform.core.enums.pay.channel.ProductEnum;
|
||||
import org.dromara.daxpay.payment.pay.strategy.AbsProductStrategy;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum.WECHAT;
|
||||
|
||||
/// # 微信服务商产品策略
|
||||
///
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class WechatIsvProductStrategy extends AbsProductStrategy {
|
||||
|
||||
private static final Map<PayMethodEnum, List<PayCapabilityEnum>> METHOD_CAP_MAP = Map.of(
|
||||
PayMethodEnum.WECHAT_QR, List.of(PayCapabilityEnum.WECHAT_QR),
|
||||
PayMethodEnum.WECHAT_APP, List.of(PayCapabilityEnum.WECHAT_APP),
|
||||
PayMethodEnum.WECHAT_H5, List.of(PayCapabilityEnum.WECHAT_H5),
|
||||
PayMethodEnum.WECHAT_BARCODE, List.of(PayCapabilityEnum.WECHAT_BARCODE),
|
||||
PayMethodEnum.WECHAT_JSAPI, List.of(PayCapabilityEnum.WECHAT_JSAPI),
|
||||
PayMethodEnum.WECHAT_MINI, List.of(PayCapabilityEnum.WECHAT_MINI));
|
||||
|
||||
@Override
|
||||
public ProductEnum getProduct() {
|
||||
return ProductEnum.WECHAT_ISV;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isIsv() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isAllocatable() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isApply() { return true; }
|
||||
|
||||
@Override
|
||||
public boolean isSandbox() { return false; }
|
||||
|
||||
@Override
|
||||
public ChannelApiCallMode getApiCallMode() { return ChannelApiCallMode.MIX; }
|
||||
|
||||
@Override
|
||||
public ChannelPayIdType getPayIdType() { return ChannelPayIdType.MCH; }
|
||||
|
||||
@Override
|
||||
public List<PayProviderEnum> supportedPayProviders() {
|
||||
return List.of(WECHAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<PayMethodEnum, List<PayCapabilityEnum>> methodCapabilityMapping() {
|
||||
return METHOD_CAP_MAP;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user