github地址

alipay-easy-sdk-java
alipay-API

目录结构

目录结构

	<dependency>
         <groupId>com.alipay.sdk</groupId>
         <artifactId>alipay-easysdk</artifactId>
         <version>2.1.2</version>
    </dependency>
基础参数配置类,使用yml进行配置
设置参数(全局只需设置一次)
AliProperties.class
package com.xxxxxx.framework.ali.config.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;

/**
 * @Author: Stephen
 * @Date: 2021/4/2 10:32
 */
@Data
@ConfigurationProperties(prefix = "fast-code.ali")
public class AliProperties {

    /**
     * 协议:https
     */
    private String protocol = "https";
    /**
     * 网关主机:openapi.alipay.com
     */
    private String gatewayHost = "openapi.alipay.com";

    /**
     * 签名类型:RSA2
     */
    private String signType = "RSA2";

    /**
     * 支付宝小程序id
     */
    private String appId;

    /**
     * 私钥
     */
    private String merchantPrivateKey;

    /**
     * 应用公钥证书文件路径
     */
    private String merchantCertPath;

    /**
     * 支付宝公钥证书文件路径
     */
    private String alipayCertPath;

    /**
     * 支付宝根证书文件路径
     */
    private String alipayRootCertPath;

    /**
     * 可设置异步通知接收服务地址(可选)
     */
    private String notifyUrl;

    /**
     * 接口内容加密方式,例如:aa4BtZ4tspm2wnXLb1ThQA== (可选)
     */
    private String encryptKey;


}

@Data注解 需要lombok插件
yml配置
fast-code:
  ali:
    app-id: appId
    merchant-private-key: 私钥
    merchant-cert-path: 应用公钥证书文件路径
    alipay-cert-path: 应用公钥证书文件路径
    alipayRoot-cert-path: 支付宝根证书文件路径
    encrypt-key: 接口内容加密方式
配置类
AliConfig.class
package com.xxxxxx.framework.ali.config;

import com.alipay.easysdk.factory.Factory;
import com.alipay.easysdk.kernel.Config;
import com.dandandog.framework.ali.config.properties.AliProperties;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Configuration;

/**
 * @Author: Stephen
 * @Date: 2021/4/2 10:25
 */
@Slf4j
@Configuration
@AllArgsConstructor
@EnableConfigurationProperties(AliProperties.class)
@ConditionalOnProperty(prefix = "fast-code.ali", value = {"enabled"}, matchIfMissing = true)
public class AliConfig implements InitializingBean {
    private final AliProperties properties;

    private Config getOptions() {
        Config config = new Config();
        config.protocol = properties.getProtocol();
        config.gatewayHost = properties.getGatewayHost();
        config.signType = properties.getSignType();
        config.appId = properties.getAppId();
        config.merchantPrivateKey = properties.getMerchantPrivateKey();
        config.merchantCertPath = properties.getMerchantCertPath();
        config.alipayCertPath = properties.getAlipayCertPath();
        config.alipayRootCertPath = properties.getAlipayRootCertPath();
        config.encryptKey = properties.getEncryptKey();
        log.info(config.toString());
        return config;
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        Factory.setOptions(getOptions());
    }
}

实现InitializingBean初始化基本参数

spring模块扫描,此项目是子模块需要告诉spring扫描配置类

package com.xxxxxx.framework.ali.config;

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.ComponentScan;

/**
 * @Author: Stephen
 * @Date: 2021/4/2 10:27
 */
@Slf4j
@ComponentScan("com.xxxxxx.framework.ali")
public class SpringAutoScanConfig {
    public SpringAutoScanConfig() {
        log.debug("Ali config initialization");
    }
}

资源文件

在这里插入图片描述

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.xxxxxx.framework.ali.config.SpringAutoScanConfig

@EnableAutoConfiguration作用:
帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot,并创建对应配置类的Bean,并把该Bean实体交给IoC容器进行管理。

启动不报错即可
使用直接Factory.即可

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐