refactor: 直连表名统一 alipay_mch_* → alipay_direct_*, ISV 密钥表补 _key

This commit is contained in:
DaxPay Dev
2026-06-14 15:00:38 +08:00
parent 78cfc9f024
commit cdcc1bdf0b
74 changed files with 604 additions and 484 deletions

View File

@@ -30,8 +30,8 @@ ALTER TABLE alipay_isv_app ADD CONSTRAINT pk_alipay_isv_app PRIMARY KEY (id);
-- ----------------------------
-- 支付宝服务商应用密钥配置表
-- ----------------------------
DROP TABLE IF EXISTS alipay_isv_app_config;
CREATE TABLE alipay_isv_app_config (
DROP TABLE IF EXISTS alipay_isv_app_key_config;
CREATE TABLE alipay_isv_app_key_config (
id int8 NOT NULL,
app_id int8,
auth_type varchar(32) COLLATE pg_catalog.default,
@@ -49,24 +49,24 @@ CREATE TABLE alipay_isv_app_config (
deleted bool NOT NULL DEFAULT false
);
COMMENT ON TABLE alipay_isv_app_config IS '支付宝服务商应用密钥配置表';
COMMENT ON COLUMN alipay_isv_app_config.id IS '主键';
COMMENT ON COLUMN alipay_isv_app_config.app_id IS '关联应用ID';
COMMENT ON COLUMN alipay_isv_app_config.auth_type IS '认证类型';
COMMENT ON COLUMN alipay_isv_app_config.alipay_public_key IS '支付宝公钥';
COMMENT ON COLUMN alipay_isv_app_config.private_key IS '商户私钥';
COMMENT ON COLUMN alipay_isv_app_config.app_cert IS '应用公钥证书';
COMMENT ON COLUMN alipay_isv_app_config.alipay_cert IS '支付宝公钥证书';
COMMENT ON COLUMN alipay_isv_app_config.alipay_root_cert IS '支付宝根证书';
COMMENT ON COLUMN alipay_isv_app_config.secret_key IS '密钥';
COMMENT ON COLUMN alipay_isv_app_config.creator IS '创建者ID';
COMMENT ON COLUMN alipay_isv_app_config.create_time IS '创建时间';
COMMENT ON COLUMN alipay_isv_app_config.last_modifier IS '最后修改ID';
COMMENT ON COLUMN alipay_isv_app_config.last_modified_time IS '最后修改时间';
COMMENT ON COLUMN alipay_isv_app_config.version IS '版本号';
COMMENT ON COLUMN alipay_isv_app_config.deleted IS '删除标志';
COMMENT ON TABLE alipay_isv_app_key_config IS '支付宝服务商应用密钥配置表';
COMMENT ON COLUMN alipay_isv_app_key_config.id IS '主键';
COMMENT ON COLUMN alipay_isv_app_key_config.app_id IS '关联应用ID';
COMMENT ON COLUMN alipay_isv_app_key_config.auth_type IS '认证类型';
COMMENT ON COLUMN alipay_isv_app_key_config.alipay_public_key IS '支付宝公钥';
COMMENT ON COLUMN alipay_isv_app_key_config.private_key IS '商户私钥';
COMMENT ON COLUMN alipay_isv_app_key_config.app_cert IS '应用公钥证书';
COMMENT ON COLUMN alipay_isv_app_key_config.alipay_cert IS '支付宝公钥证书';
COMMENT ON COLUMN alipay_isv_app_key_config.alipay_root_cert IS '支付宝根证书';
COMMENT ON COLUMN alipay_isv_app_key_config.secret_key IS '密钥';
COMMENT ON COLUMN alipay_isv_app_key_config.creator IS '创建者ID';
COMMENT ON COLUMN alipay_isv_app_key_config.create_time IS '创建时间';
COMMENT ON COLUMN alipay_isv_app_key_config.last_modifier IS '最后修改ID';
COMMENT ON COLUMN alipay_isv_app_key_config.last_modified_time IS '最后修改时间';
COMMENT ON COLUMN alipay_isv_app_key_config.version IS '版本号';
COMMENT ON COLUMN alipay_isv_app_key_config.deleted IS '删除标志';
ALTER TABLE alipay_isv_app_config ADD CONSTRAINT pk_alipay_isv_app_config PRIMARY KEY (id);
ALTER TABLE alipay_isv_app_key_config ADD CONSTRAINT pk_alipay_isv_app_key_config PRIMARY KEY (id);
-- ----------------------------
-- 支付宝服务商应用授权认证配置表

View File

@@ -8,6 +8,8 @@ import org.springframework.context.annotation.ComponentScan;
/// # 支付宝支付实现
///
/// 支付宝通道的自动配置入口,扫描当前模块下的所有组件(Controller/Service/Manager/Mapper等)自动注册到Spring容器。
///
@AutoConfiguration
@ConfigurationPropertiesScan
@MapperScan(annotationClass = Mapper.class)

View File

@@ -2,6 +2,8 @@ package org.dromara.daxpay.channel.alipay.code;
/// # 支付宝支付参数常量
///
/// 定义支付宝支付相关的常量,包括认证类型(公钥/证书)和用户标识类型(openid/userid)等枚举值。
///
public interface AlipayCode {
/// # 认证类型
@@ -11,7 +13,7 @@ public interface AlipayCode {
String AUTH_TYPE_KEY = "public_key";
/// 证书模式
String AUTH_TYPE_CART = "cert";
String AUTH_TYPE_CERT = "cert";
}
/// # 用户标识类型

View File

@@ -1,19 +1,19 @@
package org.dromara.daxpay.channel.alipay.controller.app;
package org.dromara.daxpay.channel.alipay.controller.direct;
import org.dromara.daxpay.platform.core.annotation.PermCode;
import org.dromara.daxpay.platform.core.rest.Res;
import org.dromara.daxpay.platform.core.rest.result.Result;
import org.dromara.daxpay.platform.core.util.ValidationUtil;
import org.dromara.daxpay.platform.core.validation.ValidationGroup;
import org.dromara.daxpay.channel.alipay.param.app.AlipayMchAppParam;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayMchAppResult;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.service.app.AlipayMchAppService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayMchAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayMchAppKeyConfigService;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppParam;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppResult;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectAppService;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectAppKeyConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotBlank;
@@ -26,33 +26,35 @@ import java.util.List;
/// # 支付宝直连商户应用管理
///
/// 提供直连商户应用及其密钥配置授权认证配置的 REST API支持按商户号和通道商户号查询列表
///
@PermCode(menuCode = "payment:alipay:mch-app")
@Validated
@Tag(name = "支付宝直连商户应用管理")
@RestController
@RequestMapping("/admin/alipay/mch-app")
@RequiredArgsConstructor
public class AlipayMchAppController {
public class AlipayDirectAppController {
private final AlipayMchAppService alipayMchAppService;
private final AlipayMchAppKeyConfigService alipayMchAppKeyConfigService;
private final AlipayMchAppAuthConfigService alipayMchAppAuthConfigService;
private final AlipayDirectAppService alipayDirectAppService;
private final AlipayDirectAppKeyConfigService alipayDirectAppKeyConfigService;
private final AlipayDirectAppAuthConfigService alipayDirectAppAuthConfigService;
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@Operation(summary = "根据商户号和通道商户号查询应用列表")
@GetMapping("/list-by-channel-mch-no")
public Result<List<AlipayMchAppResult>> listByChannelMchNo(
public Result<List<AlipayDirectAppResult>> listByChannelMchNo(
@NotBlank(message = "{validation.field.mchNo.notBlank}") String mchNo,
@NotBlank(message = "{validation.field.channelMerchantNo.notBlank}") String channelMchNo) {
return Res.ok(alipayMchAppService.listByMchNoAndChannelMchNo(mchNo, channelMchNo));
return Res.ok(alipayDirectAppService.listByMchNoAndChannelMchNo(mchNo, channelMchNo));
}
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@Operation(summary = "查询应用详情")
@GetMapping("/find-by-id")
public Result<AlipayMchAppResult> findById(
public Result<AlipayDirectAppResult> findById(
@NotNull(message = "{validation.field.id.notNull}") Long id) {
return Res.ok(alipayMchAppService.findById(id));
return Res.ok(alipayDirectAppService.findById(id));
}
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@@ -62,7 +64,7 @@ public class AlipayMchAppController {
@NotBlank(message = "{validation.field.mchNo.notBlank}") String mchNo,
@NotBlank(message = "{validation.field.channelMerchantNo.notBlank}") String channelMchNo,
@NotBlank(message = "{validation.field.aliAppId.notBlank}") String aliAppId) {
return Res.ok(alipayMchAppService.existsAliAppIdByChannel(mchNo, channelMchNo, aliAppId, null));
return Res.ok(alipayDirectAppService.existsAliAppIdByChannel(mchNo, channelMchNo, aliAppId, null));
}
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@@ -73,24 +75,24 @@ public class AlipayMchAppController {
@NotBlank(message = "{validation.field.channelMerchantNo.notBlank}") String channelMchNo,
@NotBlank(message = "{validation.field.aliAppId.notBlank}") String aliAppId,
@NotNull(message = "{validation.field.id.notNull}") Long id) {
return Res.ok(alipayMchAppService.existsAliAppIdByChannel(mchNo, channelMchNo, aliAppId, id));
return Res.ok(alipayDirectAppService.existsAliAppIdByChannel(mchNo, channelMchNo, aliAppId, id));
}
@PermCode(code = "add", nameCn = "通道商户新增", nameEn = "Channel Merchant Add")
@Operation(summary = "新增直连商户应用")
@PostMapping("/add")
public Result<Void> add(@RequestBody @Validated(ValidationGroup.add.class) AlipayMchAppParam param) {
public Result<Void> add(@RequestBody @Validated(ValidationGroup.add.class) AlipayDirectAppParam param) {
ValidationUtil.validateParam(param, ValidationGroup.add.class);
alipayMchAppService.add(param);
alipayDirectAppService.add(param);
return Res.ok();
}
@PermCode(code = "edit", nameCn = "通道商户编辑", nameEn = "Channel Merchant Edit")
@Operation(summary = "修改直连商户应用")
@PostMapping("/update")
public Result<Void> update(@RequestBody @Validated(ValidationGroup.edit.class) AlipayMchAppParam param) {
public Result<Void> update(@RequestBody @Validated(ValidationGroup.edit.class) AlipayDirectAppParam param) {
ValidationUtil.validateParam(param, ValidationGroup.edit.class);
alipayMchAppService.update(param);
alipayDirectAppService.update(param);
return Res.ok();
}
@@ -98,39 +100,39 @@ public class AlipayMchAppController {
@Operation(summary = "删除直连商户应用")
@PostMapping("/delete")
public Result<Void> delete(@NotNull(message = "{validation.field.id.notNull}") Long id) {
alipayMchAppService.delete(id);
alipayDirectAppService.delete(id);
return Res.ok();
}
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@Operation(summary = "查询应用密钥配置")
@GetMapping("/find-key-config-by-app-id")
public Result<AlipayMchAppKeyConfigResult> findKeyConfigByAppId(
public Result<AlipayDirectAppKeyConfigResult> findKeyConfigByAppId(
@NotNull(message = "{validation.field.id.notNull}") Long appId) {
return Res.ok(alipayMchAppKeyConfigService.findByAppId(appId));
return Res.ok(alipayDirectAppKeyConfigService.findByAppId(appId));
}
@PermCode(code = "edit", nameCn = "通道商户编辑", nameEn = "Channel Merchant Edit")
@Operation(summary = "保存应用密钥配置")
@PostMapping("/save-key-config")
public Result<Void> saveKeyConfig(@RequestBody @Validated AlipayMchAppKeyConfigParam param) {
alipayMchAppKeyConfigService.save(param);
public Result<Void> saveKeyConfig(@RequestBody @Validated AlipayDirectAppKeyConfigParam param) {
alipayDirectAppKeyConfigService.save(param);
return Res.ok();
}
@PermCode(code = "view", nameCn = "通道商户查看", nameEn = "Channel Merchant View")
@Operation(summary = "查询应用授权认证配置")
@GetMapping("/find-auth-config-by-app-id")
public Result<AlipayMchAppAuthConfigResult> findAuthConfigByAppId(
public Result<AlipayDirectAppAuthConfigResult> findAuthConfigByAppId(
@NotNull(message = "{validation.field.id.notNull}") Long appId) {
return Res.ok(alipayMchAppAuthConfigService.findByAppId(appId));
return Res.ok(alipayDirectAppAuthConfigService.findByAppId(appId));
}
@PermCode(code = "edit", nameCn = "通道商户编辑", nameEn = "Channel Merchant Edit")
@Operation(summary = "保存应用授权认证配置")
@PostMapping("/save-auth-config")
public Result<Void> saveAuthConfig(@RequestBody @Validated AlipayMchAppAuthConfigParam param) {
alipayMchAppAuthConfigService.save(param);
public Result<Void> saveAuthConfig(@RequestBody @Validated AlipayDirectAppAuthConfigParam param) {
alipayDirectAppAuthConfigService.save(param);
return Res.ok();
}
}

View File

@@ -1,11 +1,11 @@
package org.dromara.daxpay.channel.alipay.controller.mch;
package org.dromara.daxpay.channel.alipay.controller.direct;
import org.dromara.daxpay.platform.core.annotation.PermCode;
import org.dromara.daxpay.platform.core.rest.Res;
import org.dromara.daxpay.platform.core.rest.result.Result;
import org.dromara.daxpay.channel.alipay.param.mch.AlipayDirectChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.service.mch.AlipayDirectChannelMerchantService;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectChannelMerchantService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotBlank;
@@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/// # 支付宝直连通道商户管理
///
@PermCode(menuCode = "payment:merchant:channelMerchant")
@Validated
@Tag(name = "支付宝直连通道商户管理")

View File

@@ -1,19 +1,19 @@
package org.dromara.daxpay.channel.alipay.controller.app;
package org.dromara.daxpay.channel.alipay.controller.isv;
import org.dromara.daxpay.platform.core.annotation.PermCode;
import org.dromara.daxpay.platform.core.rest.Res;
import org.dromara.daxpay.platform.core.rest.result.Result;
import org.dromara.daxpay.platform.core.util.ValidationUtil;
import org.dromara.daxpay.platform.core.validation.ValidationGroup;
import org.dromara.daxpay.channel.alipay.param.app.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.service.app.AlipayIsvAppService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayIsvAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayIsvAppKeyConfigService;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvAppService;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvAppKeyConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotBlank;
@@ -26,6 +26,8 @@ import java.util.List;
/// # 支付宝服务商应用管理
///
/// 提供服务商应用及其密钥配置授权认证配置的 REST API包含查询列表详情唯一性校验和增删改操作
///
@PermCode(menuCode = "payment:alipay:isv")
@Validated
@Tag(name = "支付宝服务商应用管理")

View File

@@ -1,11 +1,11 @@
package org.dromara.daxpay.channel.alipay.controller.mch;
package org.dromara.daxpay.channel.alipay.controller.isv;
import org.dromara.daxpay.platform.core.annotation.PermCode;
import org.dromara.daxpay.platform.core.rest.Res;
import org.dromara.daxpay.platform.core.rest.result.Result;
import org.dromara.daxpay.channel.alipay.param.mch.AlipayIsvChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.service.mch.AlipayIsvChannelMerchantService;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvChannelMerchantService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.constraints.NotBlank;
@@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/// # 支付宝服务商通道商户管理
///
@PermCode(menuCode = "payment:merchant:channelMerchant")
@Validated
@Tag(name = "支付宝服务商通道商户管理")

View File

@@ -0,0 +1,30 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppAuthConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用授权认证配置转换
///
/// MapStruct转换器负责支付宝直连商户应用授权认证配置在实体、参数和返回结果之间的转换更新时空值不覆盖。
///
@Mapper
public interface AlipayDirectAppAuthConfigConvert {
AlipayDirectAppAuthConfigConvert CONVERT = Mappers.getMapper(AlipayDirectAppAuthConfigConvert.class);
/// 转换为返回对象
AlipayDirectAppAuthConfigResult toResult(AlipayDirectAppAuthConfig entity);
/// 转换为实体
AlipayDirectAppAuthConfig toEntity(AlipayDirectAppAuthConfigParam param);
/// 更新源数据到实体(空值不覆盖)
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void copy(AlipayDirectAppAuthConfigParam param, @MappingTarget AlipayDirectAppAuthConfig entity);
}

View File

@@ -0,0 +1,27 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppResult;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用转换
///
/// MapStruct转换器负责支付宝直连商户应用在实体、参数和返回结果之间的相互转换。
///
@Mapper
public interface AlipayDirectAppConvert {
AlipayDirectAppConvert CONVERT = Mappers.getMapper(AlipayDirectAppConvert.class);
/// 转换为返回对象
AlipayDirectAppResult toResult(AlipayDirectApp entity);
/// 转换为实体
AlipayDirectApp toEntity(AlipayDirectAppParam param);
/// 更新源数据到实体(忽略空值)
void copy(AlipayDirectAppParam param, @MappingTarget AlipayDirectApp entity);
}

View File

@@ -0,0 +1,30 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppKeyConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用密钥配置转换
///
/// MapStruct转换器负责支付宝直连商户应用密钥配置在实体、参数和返回结果之间的转换更新时空值不覆盖。
///
@Mapper
public interface AlipayDirectAppKeyConfigConvert {
AlipayDirectAppKeyConfigConvert CONVERT = Mappers.getMapper(AlipayDirectAppKeyConfigConvert.class);
/// 转换为返回对象
AlipayDirectAppKeyConfigResult toResult(AlipayDirectAppKeyConfig entity);
/// 转换为实体
AlipayDirectAppKeyConfig toEntity(AlipayDirectAppKeyConfigParam param);
/// 更新源数据到实体(空值不覆盖,密钥/证书为空时保留原值)
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void copy(AlipayDirectAppKeyConfigParam param, @MappingTarget AlipayDirectAppKeyConfig entity);
}

View File

@@ -1,10 +1,12 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.result.config.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectChannelMerchantResult;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连通道商户绑定转换
///
@Mapper
public interface AlipayDirectChannelMerchantConvert {

View File

@@ -1,8 +1,8 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppAuthConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
@@ -11,6 +11,8 @@ import org.mapstruct.factory.Mappers;
/// # 支付宝服务商应用授权认证配置转换
///
/// MapStruct转换器负责支付宝服务商应用授权认证配置在实体、参数和返回结果之间的转换更新时空值不覆盖。
///
@Mapper
public interface AlipayIsvAppAuthConfigConvert {

View File

@@ -1,14 +1,16 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.param.app.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppResult;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
/// # 支付宝服务商应用转换
///
/// MapStruct转换器负责支付宝服务商应用在实体、参数和返回结果之间的相互转换。
///
@Mapper
public interface AlipayIsvAppConvert {

View File

@@ -1,8 +1,8 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppKeyConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
@@ -11,6 +11,8 @@ import org.mapstruct.factory.Mappers;
/// # 支付宝服务商应用密钥配置转换
///
/// MapStruct转换器负责支付宝服务商应用密钥配置在实体、参数和返回结果之间的转换更新时空值不覆盖。
///
@Mapper
public interface AlipayIsvAppKeyConfigConvert {

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvChannelMerchantResult;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
/// # 支付宝服务商通道商户绑定转换
///
@Mapper
public interface AlipayIsvChannelMerchantConvert {

View File

@@ -1,28 +0,0 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppAuthConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用授权认证配置转换
///
@Mapper
public interface AlipayMchAppAuthConfigConvert {
AlipayMchAppAuthConfigConvert CONVERT = Mappers.getMapper(AlipayMchAppAuthConfigConvert.class);
/// 转换为返回对象
AlipayMchAppAuthConfigResult toResult(AlipayMchAppAuthConfig entity);
/// 转换为实体
AlipayMchAppAuthConfig toEntity(AlipayMchAppAuthConfigParam param);
/// 更新源数据到实体(空值不覆盖)
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void copy(AlipayMchAppAuthConfigParam param, @MappingTarget AlipayMchAppAuthConfig entity);
}

View File

@@ -1,25 +0,0 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import org.dromara.daxpay.channel.alipay.param.app.AlipayMchAppParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayMchAppResult;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用转换
///
@Mapper
public interface AlipayMchAppConvert {
AlipayMchAppConvert CONVERT = Mappers.getMapper(AlipayMchAppConvert.class);
/// 转换为返回对象
AlipayMchAppResult toResult(AlipayMchApp entity);
/// 转换为实体
AlipayMchApp toEntity(AlipayMchAppParam param);
/// 更新源数据到实体(忽略空值)
void copy(AlipayMchAppParam param, @MappingTarget AlipayMchApp entity);
}

View File

@@ -1,28 +0,0 @@
package org.dromara.daxpay.channel.alipay.convert;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppKeyConfigResult;
import org.mapstruct.BeanMapping;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;
import org.mapstruct.NullValuePropertyMappingStrategy;
import org.mapstruct.factory.Mappers;
/// # 支付宝直连商户应用密钥配置转换
///
@Mapper
public interface AlipayMchAppKeyConfigConvert {
AlipayMchAppKeyConfigConvert CONVERT = Mappers.getMapper(AlipayMchAppKeyConfigConvert.class);
/// 转换为返回对象
AlipayMchAppKeyConfigResult toResult(AlipayMchAppKeyConfig entity);
/// 转换为实体
AlipayMchAppKeyConfig toEntity(AlipayMchAppKeyConfigParam param);
/// 更新源数据到实体(空值不覆盖,密钥/证书为空时保留原值)
@BeanMapping(nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE)
void copy(AlipayMchAppKeyConfigParam param, @MappingTarget AlipayMchAppKeyConfig entity);
}

View File

@@ -1,37 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.app;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/// # 支付宝直连商户应用
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppManager extends BaseManager<AlipayMchAppMapper, AlipayMchApp> {
/// 根据商户号和通道商户号查询应用列表(按创建时间升序)
public List<AlipayMchApp> listByMchNoAndChannelMchNo(String mchNo, String channelMchNo) {
return lambdaQuery()
.eq(AlipayMchApp::getMchNo, mchNo)
.eq(AlipayMchApp::getChannelMchNo, channelMchNo)
.orderByAsc(AlipayMchApp::getCreateTime)
.orderByAsc(AlipayMchApp::getId)
.list();
}
/// 校验同一通道商户下aliAppId是否已存在(排除自身)
public boolean existsByChannelMchNoAndAliAppId(String mchNo, String channelMchNo, String aliAppId, Long excludeId) {
return lambdaQuery()
.eq(AlipayMchApp::getMchNo, mchNo)
.eq(AlipayMchApp::getChannelMchNo, channelMchNo)
.eq(AlipayMchApp::getAliAppId, aliAppId)
.ne(excludeId != null, AlipayMchApp::getId, excludeId)
.exists();
}
}

View File

@@ -1,11 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.app;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用
///
@Mapper
public interface AlipayMchAppMapper extends MPJBaseMapper<AlipayMchApp> {
}

View File

@@ -1,31 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.config;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppAuthConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Optional;
/// # 支付宝直连商户应用授权认证配置
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppAuthConfigManager extends BaseManager<AlipayMchAppAuthConfigMapper, AlipayMchAppAuthConfig> {
/// 根据应用ID查询授权认证配置
public Optional<AlipayMchAppAuthConfig> findByAppId(Long appId) {
return lambdaQuery()
.eq(AlipayMchAppAuthConfig::getAppId, appId)
.oneOpt();
}
/// 根据应用ID删除授权认证配置
public void deleteByAppId(Long appId) {
lambdaUpdate()
.eq(AlipayMchAppAuthConfig::getAppId, appId)
.remove();
}
}

View File

@@ -1,11 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.config;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppAuthConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用授权认证配置
///
@Mapper
public interface AlipayMchAppAuthConfigMapper extends MPJBaseMapper<AlipayMchAppAuthConfig> {
}

View File

@@ -1,31 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.config;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppKeyConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Optional;
/// # 支付宝直连商户应用密钥配置
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppKeyConfigManager extends BaseManager<AlipayMchAppKeyConfigMapper, AlipayMchAppKeyConfig> {
/// 根据应用ID查询密钥配置
public Optional<AlipayMchAppKeyConfig> findByAppId(Long appId) {
return lambdaQuery()
.eq(AlipayMchAppKeyConfig::getAppId, appId)
.oneOpt();
}
/// 根据应用ID删除密钥配置
public void deleteByAppId(Long appId) {
lambdaUpdate()
.eq(AlipayMchAppKeyConfig::getAppId, appId)
.remove();
}
}

View File

@@ -1,11 +0,0 @@
package org.dromara.daxpay.channel.alipay.dao.config;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppKeyConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用密钥配置
///
@Mapper
public interface AlipayMchAppKeyConfigMapper extends MPJBaseMapper<AlipayMchAppKeyConfig> {
}

View File

@@ -0,0 +1,33 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppAuthConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Optional;
/// # 支付宝直连商户应用授权认证配置
///
/// 直连商户应用授权认证配置数据访问管理器提供按应用ID查询和删除授权认证配置的方法。
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayDirectAppAuthConfigManager extends BaseManager<AlipayDirectAppAuthConfigMapper, AlipayDirectAppAuthConfig> {
/// 根据应用ID查询授权认证配置
public Optional<AlipayDirectAppAuthConfig> findByAppId(Long appId) {
return lambdaQuery()
.eq(AlipayDirectAppAuthConfig::getAppId, appId)
.oneOpt();
}
/// 根据应用ID删除授权认证配置
public void deleteByAppId(Long appId) {
lambdaUpdate()
.eq(AlipayDirectAppAuthConfig::getAppId, appId)
.remove();
}
}

View File

@@ -0,0 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppAuthConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用授权认证配置
///
/// 支付宝直连商户应用授权认证配置 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查。
///
@Mapper
public interface AlipayDirectAppAuthConfigMapper extends MPJBaseMapper<AlipayDirectAppAuthConfig> {
}

View File

@@ -0,0 +1,33 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppKeyConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Optional;
/// # 支付宝直连商户应用密钥配置
///
/// 直连商户应用密钥配置数据访问管理器提供按应用ID查询和删除密钥配置的方法。
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayDirectAppKeyConfigManager extends BaseManager<AlipayDirectAppKeyConfigMapper, AlipayDirectAppKeyConfig> {
/// 根据应用ID查询密钥配置
public Optional<AlipayDirectAppKeyConfig> findByAppId(Long appId) {
return lambdaQuery()
.eq(AlipayDirectAppKeyConfig::getAppId, appId)
.oneOpt();
}
/// 根据应用ID删除密钥配置
public void deleteByAppId(Long appId) {
lambdaUpdate()
.eq(AlipayDirectAppKeyConfig::getAppId, appId)
.remove();
}
}

View File

@@ -0,0 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppKeyConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用密钥配置
///
/// 支付宝直连商户应用密钥配置 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查。
///
@Mapper
public interface AlipayDirectAppKeyConfigMapper extends MPJBaseMapper<AlipayDirectAppKeyConfig> {
}

View File

@@ -0,0 +1,39 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/// # 支付宝直连商户应用
///
/// 直连商户应用数据访问管理器提供按商户号和通道商户号查询列表、同一通道下应用ID唯一性校验等方法。
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayDirectAppManager extends BaseManager<AlipayDirectAppMapper, AlipayDirectApp> {
/// 根据商户号和通道商户号查询应用列表(按创建时间升序)
public List<AlipayDirectApp> listByMchNoAndChannelMchNo(String mchNo, String channelMchNo) {
return lambdaQuery()
.eq(AlipayDirectApp::getMchNo, mchNo)
.eq(AlipayDirectApp::getChannelMchNo, channelMchNo)
.orderByAsc(AlipayDirectApp::getCreateTime)
.orderByAsc(AlipayDirectApp::getId)
.list();
}
/// 校验同一通道商户下aliAppId是否已存在(排除自身)
public boolean existsByChannelMchNoAndAliAppId(String mchNo, String channelMchNo, String aliAppId, Long excludeId) {
return lambdaQuery()
.eq(AlipayDirectApp::getMchNo, mchNo)
.eq(AlipayDirectApp::getChannelMchNo, channelMchNo)
.eq(AlipayDirectApp::getAliAppId, aliAppId)
.ne(excludeId != null, AlipayDirectApp::getId, excludeId)
.exists();
}
}

View File

@@ -0,0 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连商户应用
///
/// 支付宝直连商户应用 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查。
///
@Mapper
public interface AlipayDirectAppMapper extends MPJBaseMapper<AlipayDirectApp> {
}

View File

@@ -1,9 +1,11 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectChannelMerchant;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.springframework.stereotype.Repository;
/// # 支付宝直连通道商户绑定
///
@Repository
public class AlipayDirectChannelMerchantManager extends BaseManager<AlipayDirectChannelMerchantMapper, AlipayDirectChannelMerchant> {

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.direct;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectChannelMerchant;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝直连通道商户绑定
///
/// 支付宝直连通道商户 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查
///
@Mapper
public interface AlipayDirectChannelMerchantMapper extends MPJBaseMapper<AlipayDirectChannelMerchant> {
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppAuthConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -10,6 +10,8 @@ import java.util.Optional;
/// # 支付宝服务商应用授权认证配置
///
/// 服务商应用授权认证配置数据访问管理器提供按应用ID查询和删除授权认证配置的方法
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppAuthConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝服务商应用授权认证配置
///
/// 支付宝服务商应用授权认证配置 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查
///
@Mapper
public interface AlipayIsvAppAuthConfigMapper extends MPJBaseMapper<AlipayIsvAppAuthConfig> {
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppKeyConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -10,6 +10,8 @@ import java.util.Optional;
/// # 支付宝服务商应用密钥配置
///
/// 服务商应用密钥配置数据访问管理器提供按应用ID查询和删除密钥配置的方法
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppKeyConfig;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝服务商应用密钥配置
///
/// 支付宝服务商应用密钥配置 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查
///
@Mapper
public interface AlipayIsvAppKeyConfigMapper extends MPJBaseMapper<AlipayIsvAppKeyConfig> {
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.dao.app;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvApp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -11,6 +11,8 @@ import java.util.Optional;
/// # 支付宝服务商应用
///
/// 服务商应用数据访问管理器提供列表查询按支付宝应用ID查找和唯一性校验等方法
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.app;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvApp;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝服务商应用
///
/// 支付宝服务商应用 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查
///
@Mapper
public interface AlipayIsvAppMapper extends MPJBaseMapper<AlipayIsvApp> {
}

View File

@@ -1,9 +1,11 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvChannelMerchant;
import org.dromara.daxpay.platform.common.mybatisplus.impl.BaseManager;
import org.springframework.stereotype.Repository;
/// # 支付宝服务商通道商户绑定
///
@Repository
public class AlipayIsvChannelMerchantManager extends BaseManager<AlipayIsvChannelMerchantMapper, AlipayIsvChannelMerchant> {

View File

@@ -1,11 +1,13 @@
package org.dromara.daxpay.channel.alipay.dao.config;
package org.dromara.daxpay.channel.alipay.dao.isv;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvChannelMerchant;
import com.github.yulichang.base.MPJBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/// # 支付宝服务商通道商户绑定
///
/// 支付宝服务商通道商户 MyBatis-Plus Mapper继承 MPJBaseMapper 支持多表联查
///
@Mapper
public interface AlipayIsvChannelMerchantMapper extends MPJBaseMapper<AlipayIsvChannelMerchant> {
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.app;
package org.dromara.daxpay.channel.alipay.entity.direct;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppConvert;
import org.dromara.daxpay.channel.alipay.result.app.AlipayMchAppResult;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppConvert;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppResult;
import org.dromara.daxpay.payment.common.entity.merchant.MchBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
@@ -13,11 +13,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用
///
/// 表示支付宝直连模式下商户注册的应用实体每个应用关联一个通道商户号拥有独立的支付宝应用ID
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "alipay_mch_app", autoResultMap = true)
public class AlipayMchApp extends MchBaseEntity implements ToResult<AlipayMchAppResult> {
@TableName(value = "alipay_direct_app", autoResultMap = true)
public class AlipayDirectApp extends MchBaseEntity implements ToResult<AlipayDirectAppResult> {
/// 通道商户号
@TableField(updateStrategy = FieldStrategy.NEVER)
@@ -31,7 +33,7 @@ public class AlipayMchApp extends MchBaseEntity implements ToResult<AlipayMchApp
/// 转换
@Override
public AlipayMchAppResult toResult() {
return AlipayMchAppConvert.CONVERT.toResult(this);
public AlipayDirectAppResult toResult() {
return AlipayDirectAppConvert.CONVERT.toResult(this);
}
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.direct;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppAuthConfigResult;
import org.dromara.daxpay.payment.common.entity.merchant.MchBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
@@ -13,11 +13,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用授权认证配置
///
/// 配置直连商户应用的用户标识类型和授权回调地址用于支付宝用户授权流程中的身份识别与回调跳转
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "alipay_mch_app_auth_config", autoResultMap = true)
public class AlipayMchAppAuthConfig extends MchBaseEntity implements ToResult<AlipayMchAppAuthConfigResult> {
@TableName(value = "alipay_direct_app_auth_config", autoResultMap = true)
public class AlipayDirectAppAuthConfig extends MchBaseEntity implements ToResult<AlipayDirectAppAuthConfigResult> {
/// 通道商户号
@TableField(updateStrategy = FieldStrategy.NEVER)
@@ -35,7 +37,7 @@ public class AlipayMchAppAuthConfig extends MchBaseEntity implements ToResult<Al
/// 转换
@Override
public AlipayMchAppAuthConfigResult toResult() {
return AlipayMchAppAuthConfigConvert.CONVERT.toResult(this);
public AlipayDirectAppAuthConfigResult toResult() {
return AlipayDirectAppAuthConfigConvert.CONVERT.toResult(this);
}
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.direct;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppKeyConfigResult;
import org.dromara.daxpay.payment.common.entity.merchant.MchBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import org.dromara.daxpay.platform.common.mybatisplus.handler.encrypt.DataEncryptTypeHandler;
@@ -14,11 +14,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用密钥配置
///
/// 存储直连商户应用的密钥和证书信息支持公钥模式和证书模式两种认证方式敏感字段加密存储
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "alipay_mch_app_config", autoResultMap = true)
public class AlipayMchAppKeyConfig extends MchBaseEntity implements ToResult<AlipayMchAppKeyConfigResult> {
@TableName(value = "alipay_direct_app_key_config", autoResultMap = true)
public class AlipayDirectAppKeyConfig extends MchBaseEntity implements ToResult<AlipayDirectAppKeyConfigResult> {
/// 通道商户号
@TableField(updateStrategy = FieldStrategy.NEVER)
@@ -56,7 +58,7 @@ public class AlipayMchAppKeyConfig extends MchBaseEntity implements ToResult<Ali
/// 转换
@Override
public AlipayMchAppKeyConfigResult toResult() {
return AlipayMchAppKeyConfigConvert.CONVERT.toResult(this);
public AlipayDirectAppKeyConfigResult toResult() {
return AlipayDirectAppKeyConfigConvert.CONVERT.toResult(this);
}
}

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.direct;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectChannelMerchantConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.payment.common.entity.merchant.MchBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.TableName;

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.app;
package org.dromara.daxpay.channel.alipay.entity.isv;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppConvert;
import org.dromara.daxpay.channel.alipay.result.app.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppResult;
import org.dromara.daxpay.platform.common.mybatisplus.base.MpBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.TableName;
@@ -11,6 +11,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用
///
/// 表示支付宝开放平台上注册的服务商(ISV)应用实体服务商通过此应用代为商户发起支付请求
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.isv;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.platform.common.mybatisplus.base.MpBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
@@ -13,6 +13,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用授权认证配置
///
/// 配置服务商应用的用户标识类型和授权回调地址用于支付宝用户授权流程中的身份识别与回调跳转
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.isv;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.platform.common.mybatisplus.base.MpBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import org.dromara.daxpay.platform.common.mybatisplus.handler.encrypt.DataEncryptTypeHandler;
@@ -14,10 +14,12 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用密钥配置
///
/// 存储服务商应用的密钥和证书信息支持公钥模式和证书模式两种认证方式敏感字段加密存储
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@TableName(value = "alipay_isv_app_config", autoResultMap = true)
@TableName(value = "alipay_isv_app_key_config", autoResultMap = true)
public class AlipayIsvAppKeyConfig extends MpBaseEntity implements ToResult<AlipayIsvAppKeyConfigResult> {
/// 支付宝服务商应用ID

View File

@@ -1,7 +1,7 @@
package org.dromara.daxpay.channel.alipay.entity.config;
package org.dromara.daxpay.channel.alipay.entity.isv;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvChannelMerchantConvert;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.payment.common.entity.merchant.MchBaseEntity;
import org.dromara.daxpay.platform.common.mybatisplus.function.ToResult;
import com.baomidou.mybatisplus.annotation.TableName;

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.config;
package org.dromara.daxpay.channel.alipay.param.direct;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -9,10 +9,12 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用授权认证配置保存参数
///
/// 保存/更新支付宝直连商户应用授权认证配置时接收的请求参数含商户号通道商户号用户标识类型和授权回调地址
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用授权认证配置保存参数")
public class AlipayMchAppAuthConfigParam {
public class AlipayDirectAppAuthConfigParam {
@NotNull(message = "{validation.field.id.notNull}")
@Schema(description = "关联应用ID")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.config;
package org.dromara.daxpay.channel.alipay.param.direct;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -8,10 +8,12 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用密钥配置保存参数
///
/// 保存/更新支付宝直连商户应用密钥和证书时接收的请求参数含商户号通道商户号和认证类型等信息
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用密钥配置保存参数")
public class AlipayMchAppKeyConfigParam {
public class AlipayDirectAppKeyConfigParam {
@NotNull(message = "{validation.field.id.notNull}")
@Schema(description = "关联应用ID")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.app;
package org.dromara.daxpay.channel.alipay.param.direct;
import org.dromara.daxpay.platform.core.validation.ValidationGroup;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -9,10 +9,12 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用保存参数
///
/// 保存/更新支付宝直连商户应用时接收的请求参数含商户号通道商户号应用名称和支付宝应用ID
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用保存参数")
public class AlipayMchAppParam {
public class AlipayDirectAppParam {
@NotNull(message = "{validation.field.id.notNull}", groups = ValidationGroup.edit.class)
@Schema(description = "主键,新增时不传")

View File

@@ -1,10 +1,12 @@
package org.dromara.daxpay.channel.alipay.param.mch;
package org.dromara.daxpay.channel.alipay.param.direct;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import lombok.experimental.Accessors;
/// # 支付宝直连通道商户创建参数
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连通道商户创建参数")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.config;
package org.dromara.daxpay.channel.alipay.param.isv;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -9,6 +9,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用授权认证配置保存参数
///
/// 保存/更新支付宝服务商应用授权认证配置时接收的请求参数含应用ID用户标识类型和授权回调地址
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝服务商应用授权认证配置保存参数")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.config;
package org.dromara.daxpay.channel.alipay.param.isv;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用密钥配置保存参数
///
/// 保存/更新支付宝服务商应用密钥和证书时接收的请求参数认证类型决定必填字段公钥模式需传支付宝公钥证书模式需传三个证书
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝服务商应用密钥配置保存参数")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.app;
package org.dromara.daxpay.channel.alipay.param.isv;
import org.dromara.daxpay.platform.core.validation.ValidationGroup;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -9,6 +9,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用保存参数
///
/// 保存/更新支付宝服务商应用时接收的请求参数含应用名称和支付宝应用ID新增时不传主键
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝服务商应用保存参数")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.param.mch;
package org.dromara.daxpay.channel.alipay.param.isv;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
@@ -6,6 +6,8 @@ import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.experimental.Accessors;
/// # 支付宝服务商通道商户创建参数
///
@Data
@Accessors(chain = true)
@Schema(title = "支付宝服务商通道商户创建参数")

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.direct;
import org.dromara.daxpay.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,11 +8,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用授权认证配置
///
/// 支付宝直连商户应用授权认证配置的返回结果对象含商户号通道商户号以及用户标识类型和授权回调地址
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用授权认证配置")
public class AlipayMchAppAuthConfigResult extends BaseResult {
public class AlipayDirectAppAuthConfigResult extends BaseResult {
@Schema(description = "商户号")
private String mchNo;

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.direct;
import org.dromara.daxpay.platform.common.json.sensitive.SensitiveInfo;
import org.dromara.daxpay.platform.core.result.BaseResult;
@@ -9,11 +9,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用密钥配置
///
/// 支付宝直连商户应用密钥和证书的返回结果对象含商户号通道商户号信息敏感字段脱敏展示
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用密钥配置")
public class AlipayMchAppKeyConfigResult extends BaseResult {
public class AlipayDirectAppKeyConfigResult extends BaseResult {
@Schema(description = "商户号")
private String mchNo;

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.app;
package org.dromara.daxpay.channel.alipay.result.direct;
import org.dromara.daxpay.payment.common.result.MchBaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,11 +8,13 @@ import lombok.experimental.Accessors;
/// # 支付宝直连商户应用
///
/// 支付宝直连商户应用的返回结果对象包含通道商户号应用名称和支付宝应用ID等信息
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)
@Schema(title = "支付宝直连商户应用")
public class AlipayMchAppResult extends MchBaseResult {
public class AlipayDirectAppResult extends MchBaseResult {
@Schema(description = "通道商户号")
private String channelMchNo;

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.direct;
import org.dromara.daxpay.payment.common.result.MchTradeBaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝直连通道商户绑定结果
///
/// 支付宝直连通道商户绑定关系的返回结果对象包含通道商户号所属产品和支付宝商家识别码等信息
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.isv;
import org.dromara.daxpay.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用授权认证配置
///
/// 支付宝服务商应用授权认证配置的返回结果对象包含用户标识类型和授权回调地址
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.isv;
import org.dromara.daxpay.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用密钥配置
///
/// 支付宝服务商应用密钥和证书的返回结果对象脱敏展示敏感字段
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.app;
package org.dromara.daxpay.channel.alipay.result.isv;
import org.dromara.daxpay.platform.core.result.BaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商应用
///
/// 支付宝服务商应用的返回结果对象包含应用名称和支付宝应用ID等信息
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,4 +1,4 @@
package org.dromara.daxpay.channel.alipay.result.config;
package org.dromara.daxpay.channel.alipay.result.isv;
import org.dromara.daxpay.payment.common.result.MchTradeBaseResult;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -8,6 +8,8 @@ import lombok.experimental.Accessors;
/// # 支付宝服务商通道商户绑定结果
///
/// 支付宝服务商通道商户绑定关系的返回结果对象包含通道商户号所属产品关联服务商应用ID等信息
///
@EqualsAndHashCode(callSuper = true)
@Data
@Accessors(chain = true)

View File

@@ -1,13 +1,13 @@
package org.dromara.daxpay.channel.alipay.service.config;
package org.dromara.daxpay.channel.alipay.service.direct;
import org.dromara.daxpay.channel.alipay.code.AlipayCode;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayMchAppManager;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayMchAppAuthConfigManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectAppManager;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectAppAuthConfigManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppAuthConfigResult;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
import org.dromara.daxpay.platform.core.exception.DataNotExistException;
@@ -20,10 +20,12 @@ import java.util.Set;
/// # 支付宝直连商户应用授权认证配置
///
/// 管理直连商户应用的用户授权认证配置校验应用归属关系后执行新增或更新校验用户标识类型的合法性
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppAuthConfigService {
public class AlipayDirectAppAuthConfigService {
private static final Set<String> USER_ID_TYPES = Set.of(
AlipayCode.UserIdType.OPENID,
@@ -31,16 +33,16 @@ public class AlipayMchAppAuthConfigService {
AlipayCode.UserIdType.OPENID_USERID
);
private final AlipayMchAppAuthConfigManager alipayMchAppAuthConfigManager;
private final AlipayMchAppManager alipayMchAppManager;
private final AlipayDirectAppAuthConfigManager alipayDirectAppAuthConfigManager;
private final AlipayDirectAppManager alipayDirectAppManager;
/// 根据应用ID查询授权认证配置
public AlipayMchAppAuthConfigResult findByAppId(Long appId) {
AlipayMchApp app = alipayMchAppManager.findById(appId)
public AlipayDirectAppAuthConfigResult findByAppId(Long appId) {
AlipayDirectApp app = alipayDirectAppManager.findById(appId)
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
return alipayMchAppAuthConfigManager.findByAppId(appId)
.map(AlipayMchAppAuthConfigConvert.CONVERT::toResult)
.orElseGet(() -> new AlipayMchAppAuthConfigResult()
return alipayDirectAppAuthConfigManager.findByAppId(appId)
.map(AlipayDirectAppAuthConfigConvert.CONVERT::toResult)
.orElseGet(() -> new AlipayDirectAppAuthConfigResult()
.setAppId(appId)
.setMchNo(app.getMchNo())
.setChannelMchNo(app.getChannelMchNo())
@@ -48,31 +50,31 @@ public class AlipayMchAppAuthConfigService {
}
/// 保存应用授权认证配置
public void save(AlipayMchAppAuthConfigParam param) {
AlipayMchApp app = alipayMchAppManager.findById(param.getAppId())
public void save(AlipayDirectAppAuthConfigParam param) {
AlipayDirectApp app = alipayDirectAppManager.findById(param.getAppId())
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
if (!app.getMchNo().equals(param.getMchNo()) || !app.getChannelMchNo().equals(param.getChannelMchNo())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.appNotFound");
}
this.validateUserIdType(param.getUserIdType());
Optional<AlipayMchAppAuthConfig> existing = alipayMchAppAuthConfigManager.findByAppId(param.getAppId());
Optional<AlipayDirectAppAuthConfig> existing = alipayDirectAppAuthConfigManager.findByAppId(param.getAppId());
if (existing.isPresent()) {
AlipayMchAppAuthConfig config = existing.get();
AlipayDirectAppAuthConfig config = existing.get();
config.setUserIdType(param.getUserIdType());
config.setAuthCallbackUrl(param.getAuthCallbackUrl());
alipayMchAppAuthConfigManager.updateById(config);
alipayDirectAppAuthConfigManager.updateById(config);
return;
}
AlipayMchAppAuthConfig config = AlipayMchAppAuthConfigConvert.CONVERT.toEntity(param);
AlipayDirectAppAuthConfig config = AlipayDirectAppAuthConfigConvert.CONVERT.toEntity(param);
config.setMchNo(app.getMchNo());
config.setChannelMchNo(app.getChannelMchNo());
config.setAppId(param.getAppId());
alipayMchAppAuthConfigManager.save(config);
alipayDirectAppAuthConfigManager.save(config);
}
/// 删除应用授权认证配置
public void deleteByAppId(Long appId) {
alipayMchAppAuthConfigManager.deleteByAppId(appId);
alipayDirectAppAuthConfigManager.deleteByAppId(appId);
}
/// 校验用户标识类型

View File

@@ -1,13 +1,13 @@
package org.dromara.daxpay.channel.alipay.service.config;
package org.dromara.daxpay.channel.alipay.service.direct;
import org.dromara.daxpay.channel.alipay.code.AlipayCode;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayMchAppManager;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayMchAppKeyConfigManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayMchAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayMchAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayMchAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectAppManager;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectAppKeyConfigManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppKeyConfigResult;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
import org.dromara.daxpay.platform.core.exception.DataNotExistException;
@@ -20,21 +20,23 @@ import java.util.Optional;
/// # 支付宝直连商户应用密钥配置
///
/// 管理直连商户应用的密钥和证书配置校验应用归属关系后执行新增或更新更新时合并敏感字段
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppKeyConfigService {
public class AlipayDirectAppKeyConfigService {
private final AlipayMchAppKeyConfigManager alipayMchAppKeyConfigManager;
private final AlipayMchAppManager alipayMchAppManager;
private final AlipayDirectAppKeyConfigManager alipayDirectAppKeyConfigManager;
private final AlipayDirectAppManager alipayDirectAppManager;
/// 根据应用ID查询密钥配置
public AlipayMchAppKeyConfigResult findByAppId(Long appId) {
AlipayMchApp app = alipayMchAppManager.findById(appId)
public AlipayDirectAppKeyConfigResult findByAppId(Long appId) {
AlipayDirectApp app = alipayDirectAppManager.findById(appId)
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
return alipayMchAppKeyConfigManager.findByAppId(appId)
.map(AlipayMchAppKeyConfigConvert.CONVERT::toResult)
.orElseGet(() -> new AlipayMchAppKeyConfigResult()
return alipayDirectAppKeyConfigManager.findByAppId(appId)
.map(AlipayDirectAppKeyConfigConvert.CONVERT::toResult)
.orElseGet(() -> new AlipayDirectAppKeyConfigResult()
.setAppId(appId)
.setMchNo(app.getMchNo())
.setChannelMchNo(app.getChannelMchNo())
@@ -42,35 +44,35 @@ public class AlipayMchAppKeyConfigService {
}
/// 保存应用密钥配置
public void save(AlipayMchAppKeyConfigParam param) {
AlipayMchApp app = alipayMchAppManager.findById(param.getAppId())
public void save(AlipayDirectAppKeyConfigParam param) {
AlipayDirectApp app = alipayDirectAppManager.findById(param.getAppId())
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
if (!app.getMchNo().equals(param.getMchNo()) || !app.getChannelMchNo().equals(param.getChannelMchNo())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.appNotFound");
}
Optional<AlipayMchAppKeyConfig> existing = alipayMchAppKeyConfigManager.findByAppId(param.getAppId());
Optional<AlipayDirectAppKeyConfig> existing = alipayDirectAppKeyConfigManager.findByAppId(param.getAppId());
if (existing.isPresent()) {
AlipayMchAppKeyConfig config = existing.get();
AlipayDirectAppKeyConfig config = existing.get();
config.setAuthType(param.getAuthType());
this.mergeSensitiveFields(config, param);
alipayMchAppKeyConfigManager.updateById(config);
alipayDirectAppKeyConfigManager.updateById(config);
return;
}
this.validateForCreate(param);
AlipayMchAppKeyConfig config = AlipayMchAppKeyConfigConvert.CONVERT.toEntity(param);
AlipayDirectAppKeyConfig config = AlipayDirectAppKeyConfigConvert.CONVERT.toEntity(param);
config.setMchNo(app.getMchNo());
config.setChannelMchNo(app.getChannelMchNo());
config.setAppId(param.getAppId());
alipayMchAppKeyConfigManager.save(config);
alipayDirectAppKeyConfigManager.save(config);
}
/// 删除应用密钥配置
public void deleteByAppId(Long appId) {
alipayMchAppKeyConfigManager.deleteByAppId(appId);
alipayDirectAppKeyConfigManager.deleteByAppId(appId);
}
/// 合并敏感字段空值表示不更新
private void mergeSensitiveFields(AlipayMchAppKeyConfig config, AlipayMchAppKeyConfigParam param) {
private void mergeSensitiveFields(AlipayDirectAppKeyConfig config, AlipayDirectAppKeyConfigParam param) {
if (StrUtil.isNotBlank(param.getAlipayPublicKey())) {
config.setAlipayPublicKey(param.getAlipayPublicKey());
}
@@ -92,7 +94,7 @@ public class AlipayMchAppKeyConfigService {
}
/// 新增时的条件校验
private void validateForCreate(AlipayMchAppKeyConfigParam param) {
private void validateForCreate(AlipayDirectAppKeyConfigParam param) {
if (StrUtil.isBlank(param.getPrivateKey())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.privateKeyRequired");
}
@@ -100,7 +102,7 @@ public class AlipayMchAppKeyConfigService {
if (StrUtil.isBlank(param.getAlipayPublicKey())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.alipayPublicKeyRequired");
}
} else if (AlipayCode.AuthType.AUTH_TYPE_CART.equals(param.getAuthType())) {
} else if (AlipayCode.AuthType.AUTH_TYPE_CERT.equals(param.getAuthType())) {
if (StrUtil.isBlank(param.getAppCert())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.appCertRequired");
}

View File

@@ -1,12 +1,12 @@
package org.dromara.daxpay.channel.alipay.service.app;
package org.dromara.daxpay.channel.alipay.service.direct;
import org.dromara.daxpay.channel.alipay.convert.AlipayMchAppConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayMchAppManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayMchApp;
import org.dromara.daxpay.channel.alipay.param.app.AlipayMchAppParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayMchAppResult;
import org.dromara.daxpay.channel.alipay.service.config.AlipayMchAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayMchAppKeyConfigService;
import org.dromara.daxpay.channel.alipay.convert.AlipayDirectAppConvert;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectAppManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectApp;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectAppParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectAppResult;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.direct.AlipayDirectAppKeyConfigService;
import org.dromara.daxpay.platform.common.mybatisplus.util.MpUtil;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
@@ -20,25 +20,27 @@ import java.util.List;
/// # 支付宝直连商户应用管理
///
/// 提供直连商户应用的增删改查功能包含同一通道商户下应用ID的唯一性校验和操作范围校验(防止跨商户操作)
///
@Slf4j
@Service
@RequiredArgsConstructor
public class AlipayMchAppService {
public class AlipayDirectAppService {
private final AlipayMchAppManager alipayMchAppManager;
private final AlipayMchAppKeyConfigService alipayMchAppKeyConfigService;
private final AlipayMchAppAuthConfigService alipayMchAppAuthConfigService;
private final AlipayDirectAppManager alipayDirectAppManager;
private final AlipayDirectAppKeyConfigService alipayDirectAppKeyConfigService;
private final AlipayDirectAppAuthConfigService alipayDirectAppAuthConfigService;
/// 根据商户号和通道商户号查询应用列表
public List<AlipayMchAppResult> listByMchNoAndChannelMchNo(String mchNo, String channelMchNo) {
List<AlipayMchApp> list = alipayMchAppManager.listByMchNoAndChannelMchNo(mchNo, channelMchNo);
public List<AlipayDirectAppResult> listByMchNoAndChannelMchNo(String mchNo, String channelMchNo) {
List<AlipayDirectApp> list = alipayDirectAppManager.listByMchNoAndChannelMchNo(mchNo, channelMchNo);
return MpUtil.toListResult(list);
}
/// 根据ID查询应用详情
public AlipayMchAppResult findById(Long id) {
return alipayMchAppManager.findById(id)
.map(AlipayMchApp::toResult)
public AlipayDirectAppResult findById(Long id) {
return alipayDirectAppManager.findById(id)
.map(AlipayDirectApp::toResult)
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
}
@@ -47,33 +49,33 @@ public class AlipayMchAppService {
if (StrUtil.hasBlank(mchNo, channelMchNo, aliAppId)) {
return false;
}
return alipayMchAppManager.existsByChannelMchNoAndAliAppId(mchNo, channelMchNo, aliAppId, excludeId);
return alipayDirectAppManager.existsByChannelMchNoAndAliAppId(mchNo, channelMchNo, aliAppId, excludeId);
}
/// 新增支付宝直连商户应用
public void add(AlipayMchAppParam param) {
public void add(AlipayDirectAppParam param) {
this.assertAliAppIdUnique(param.getMchNo(), param.getChannelMchNo(), param.getAliAppId(), null);
AlipayMchApp entity = AlipayMchAppConvert.CONVERT.toEntity(param);
alipayMchAppManager.save(entity);
AlipayDirectApp entity = AlipayDirectAppConvert.CONVERT.toEntity(param);
alipayDirectAppManager.save(entity);
}
/// 更新支付宝直连商户应用
public void update(AlipayMchAppParam param) {
AlipayMchApp entity = alipayMchAppManager.findById(param.getId())
public void update(AlipayDirectAppParam param) {
AlipayDirectApp entity = alipayDirectAppManager.findById(param.getId())
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
this.assertScopeMatch(entity, param.getMchNo(), param.getChannelMchNo());
this.assertAliAppIdUnique(entity.getMchNo(), entity.getChannelMchNo(), param.getAliAppId(), param.getId());
AlipayMchAppConvert.CONVERT.copy(param, entity);
alipayMchAppManager.updateById(entity);
AlipayDirectAppConvert.CONVERT.copy(param, entity);
alipayDirectAppManager.updateById(entity);
}
/// 删除应用级联删除密钥配置和授权认证配置
public void delete(Long id) {
alipayMchAppManager.findById(id)
alipayDirectAppManager.findById(id)
.orElseThrow(() -> new DataNotExistException("error.channel.alipay.appNotFound"));
alipayMchAppKeyConfigService.deleteByAppId(id);
alipayMchAppAuthConfigService.deleteByAppId(id);
alipayMchAppManager.deleteById(id);
alipayDirectAppKeyConfigService.deleteByAppId(id);
alipayDirectAppAuthConfigService.deleteByAppId(id);
alipayDirectAppManager.deleteById(id);
}
/// 校验同一通道商户下应用ID唯一
@@ -84,7 +86,7 @@ public class AlipayMchAppService {
}
/// 校验操作范围与记录归属一致
private void assertScopeMatch(AlipayMchApp entity, String mchNo, String channelMchNo) {
private void assertScopeMatch(AlipayDirectApp entity, String mchNo, String channelMchNo) {
if (!entity.getMchNo().equals(mchNo) || !entity.getChannelMchNo().equals(channelMchNo)) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.appNotFound");
}

View File

@@ -1,9 +1,9 @@
package org.dromara.daxpay.channel.alipay.service.mch;
package org.dromara.daxpay.channel.alipay.service.direct;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayDirectChannelMerchantManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.param.mch.AlipayDirectChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.dao.direct.AlipayDirectChannelMerchantManager;
import org.dromara.daxpay.channel.alipay.entity.direct.AlipayDirectChannelMerchant;
import org.dromara.daxpay.channel.alipay.param.direct.AlipayDirectChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.direct.AlipayDirectChannelMerchantResult;
import org.dromara.daxpay.payment.channel.dao.mch.ChannelMerchantManager;
import org.dromara.daxpay.payment.channel.entity.mch.ChannelMerchant;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;

View File

@@ -1,12 +1,12 @@
package org.dromara.daxpay.channel.alipay.service.config;
package org.dromara.daxpay.channel.alipay.service.isv;
import org.dromara.daxpay.channel.alipay.code.AlipayCode;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppAuthConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayIsvAppAuthConfigManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppAuthConfigManager;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppAuthConfig;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppAuthConfigParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppAuthConfigResult;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
import org.dromara.daxpay.platform.core.exception.DataNotExistException;
@@ -19,6 +19,8 @@ import java.util.Set;
/// # 支付宝服务商应用授权认证配置
///
/// 管理服务商应用的用户授权认证配置包括用户标识类型的合法性校验(仅支持openid/userid/openid_userid)
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -1,12 +1,12 @@
package org.dromara.daxpay.channel.alipay.service.config;
package org.dromara.daxpay.channel.alipay.service.isv;
import org.dromara.daxpay.channel.alipay.code.AlipayCode;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppKeyConfigConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayIsvAppKeyConfigManager;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.config.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppKeyConfigManager;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvAppKeyConfig;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppKeyConfigParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppKeyConfigResult;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
import org.dromara.daxpay.platform.core.exception.DataNotExistException;
@@ -19,6 +19,8 @@ import java.util.Optional;
/// # 支付宝服务商应用密钥配置
///
/// 管理服务商应用的密钥和证书配置支持新增和更新操作更新时合并敏感字段(空值表示不修改)
///
@Slf4j
@Service
@RequiredArgsConstructor
@@ -92,7 +94,7 @@ public class AlipayIsvAppKeyConfigService {
if (StrUtil.isBlank(param.getAlipayPublicKey())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.alipayPublicKeyRequired");
}
} else if (AlipayCode.AuthType.AUTH_TYPE_CART.equals(param.getAuthType())) {
} else if (AlipayCode.AuthType.AUTH_TYPE_CERT.equals(param.getAuthType())) {
if (StrUtil.isBlank(param.getAppCert())) {
throw new BizInfoException(CommonErrorCode.VALIDATE_PARAMETERS_ERROR, "error.channel.alipay.appCertRequired");
}

View File

@@ -1,12 +1,12 @@
package org.dromara.daxpay.channel.alipay.service.app;
package org.dromara.daxpay.channel.alipay.service.isv;
import org.dromara.daxpay.channel.alipay.convert.AlipayIsvAppConvert;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.param.app.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.result.app.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.service.config.AlipayIsvAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.config.AlipayIsvAppKeyConfigService;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvAppParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvAppResult;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvAppAuthConfigService;
import org.dromara.daxpay.channel.alipay.service.isv.AlipayIsvAppKeyConfigService;
import org.dromara.daxpay.platform.common.mybatisplus.util.MpUtil;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;
import org.dromara.daxpay.platform.core.exception.BizInfoException;
@@ -20,6 +20,8 @@ import java.util.List;
/// # 支付宝服务商应用管理
///
/// 提供服务商应用的增删改查功能包含支付宝应用ID的唯一性校验和级联删除密钥/授权配置
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -1,11 +1,11 @@
package org.dromara.daxpay.channel.alipay.service.mch;
package org.dromara.daxpay.channel.alipay.service.isv;
import org.dromara.daxpay.channel.alipay.dao.app.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.config.AlipayIsvChannelMerchantManager;
import org.dromara.daxpay.channel.alipay.entity.app.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.entity.config.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.param.mch.AlipayIsvChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.config.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvAppManager;
import org.dromara.daxpay.channel.alipay.dao.isv.AlipayIsvChannelMerchantManager;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvApp;
import org.dromara.daxpay.channel.alipay.entity.isv.AlipayIsvChannelMerchant;
import org.dromara.daxpay.channel.alipay.param.isv.AlipayIsvChannelMerchantCreateParam;
import org.dromara.daxpay.channel.alipay.result.isv.AlipayIsvChannelMerchantResult;
import org.dromara.daxpay.payment.channel.dao.mch.ChannelMerchantManager;
import org.dromara.daxpay.payment.channel.entity.mch.ChannelMerchant;
import org.dromara.daxpay.platform.core.code.CommonErrorCode;

View File

@@ -18,6 +18,8 @@ import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum
/// # 支付宝直连产品策略
///
/// 支付宝直连模式的支付产品策略定义支持条码、扫码、JSAPI、小程序、PC、H5和APP等全部支付方式使用商户API调用模式并支持沙箱环境。
///
@Slf4j
@Service
@RequiredArgsConstructor

View File

@@ -18,6 +18,8 @@ import static org.dromara.daxpay.platform.core.enums.pay.channel.PayProviderEnum
/// # 支付宝服务商产品策略
///
/// 支付宝服务商(ISV)模式的支付产品策略定义支持条码、扫码、JSAPI、小程序、PC、H5和APP等全部支付方式使用服务商API调用模式。
///
@Slf4j
@Service
@RequiredArgsConstructor