使用weixin-java-miniapp配置进行单个小程序的配置详解

使用weixin-java-miniapp配置进行单个小程序的配置,需要遵循下面的步骤:

1. 引入依赖

在pom.xml文件中引入以下依赖:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-miniapp</artifactId>
    <version>3.9.0</version>
</dependency>

如果需要使用CDN(Content Delivery Network,内容分发网络)服务,可以引入以下依赖:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-miniapp-cdn</artifactId>
    <version>3.9.0</version>
</dependency>

2. 配置属性

在application.properties文件中添加以下属性:

# 小程序AppID
wx.miniapp.appid=your-appid
# 小程序AppSecret
wx.miniapp.secret=your-secret
# 小程序token
wx.miniapp.token=your-token
# 小程序EncodingAESKey
wx.miniapp.aesKey=your-aesKey

需要将上述属性替换成自己小程序的AppID、AppSecret、token及EncodingAESKey。

3. 创建配置类

创建以下配置类:

@Configuration
public class WxMpConfiguration {

  private static final Logger log = LoggerFactory.getLogger(WxMpConfiguration.class);

  @Autowired
  private WxMpProperties wxMpProperties;

  private static Map<String, WxMpService> mpServices = new HashMap<>();

  /**
   * 初始化微信公众号服务
   *
   * @return {@link WxMpService}
   */
  public WxMpService initMpService() {
    WxMpService mpService = new WxMpServiceImpl();
    WxMpConfigStorage configStorage = new WxMpInMemoryConfigStorage();
    configStorage.setAppId(wxMpProperties.getAppid());
    configStorage.setSecret(wxMpProperties.getSecret());
    configStorage.setToken(wxMpProperties.getToken());
    configStorage.setAesKey(wxMpProperties.getAesKey());

    mpService.setWxMpConfigStorage(configStorage);
    mpService.setKefuService(wxMpKefuService());
    mpServices.put(configStorage.getAppId(), mpService);

    log.info("Init WxMpService for appid: {}", configStorage.getAppId());

    return mpService;
  }

  /**
   * 获取微信公众号服务
   *
   * @return {@link WxMpService}
   */
  public WxMpService getMpService() {
    String appId = wxMpProperties.getAppid();
    WxMpService mpService = mpServices.get(appId);
    if (mpService == null) {
      mpService = initMpService();
    }
    return mpService;
  }

  /**
   * 获取微信公众号客服服务
   *
   * @return {@link WxMpKefuService}
   */
  @Bean
  public WxMpKefuService wxMpKefuService() {
    return new WxMpKefuServiceImpl(getMpService());
  }
}

其中,WxMpServiceImpl、WxMpInMemoryConfigStorage和WxMpKefuServiceImpl分别为weixin-java-tools中提供的微信公众号服务的实现类和配置存储类。

4. 使用配置类

在需要使用微信公众号服务的类中,可以直接注入WxMpService类实例或使用WxMpConfiguration.getMpService()方法获取实例。示例代码如下:

@Service
public class WxServiceImpl implements WxService {

  @Autowired
  private WxMpKefuService wxMpKefuService;

  @Override
  public void sendTextMessage(String openid, String content) {
    WxMpKefuMessage message = WxMpKefuMessage
        .TEXT()
        .toUser(openid)
        .content(content)
        .build();
    try {
      wxMpKefuService.sendKefuMessage(message);
    } catch (WxErrorException e) {
      throw new RuntimeException(e.getMessage());
    }
  }
}

示例说明

假设有一个小程序,名称为test-mini-program,AppID为ABC,AppSecret为123。

  1. 引入依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>weixin-java-miniapp</artifactId>
    <version>3.9.0</version>
</dependency>
  1. 配置属性

在application.properties文件中设置以下属性:

wx.miniapp.appid=ABC
wx.miniapp.secret=123
wx.miniapp.token=your-token
wx.miniapp.aesKey=your-aesKey
  1. 创建配置类

创建以下配置类:

@Configuration
public class WxMiniProgramConfiguration {

  private static final Logger log = LoggerFactory.getLogger(WxMiniProgramConfiguration.class);

  @Autowired
  private WxMiniProgramProperties wxMiniProgramProperties;

  private static Map<String, WxMaService> maServices = new HashMap<>();

  /**
   * 初始化小程序服务
   *
   * @return {@link WxMaService}
   */
  public WxMaService initMaService() {
    WxMaService maService = new WxMaServiceImpl();
    WxMaInMemoryConfig config = new WxMaInMemoryConfig();
    config.setAppid(wxMiniProgramProperties.getAppid());
    config.setSecret(wxMiniProgramProperties.getSecret());
    config.setToken(wxMiniProgramProperties.getToken());
    config.setAesKey(wxMiniProgramProperties.getAesKey());

    maService.setWxMaConfig(config);
    maServices.put(config.getAppid(), maService);

    log.info("Init WxMaService for appid: {}", config.getAppid());

    return maService;
  }

  /**
   * 获取小程序服务
   *
   * @return {@link WxMaService}
   */
  public WxMaService getMaService() {
    String appId = wxMiniProgramProperties.getAppid();
    WxMaService maService = maServices.get(appId);
    if (maService == null) {
      maService = initMaService();
    }
    return maService;
  }
}

其中,WxMaServiceImpl和WxMaInMemoryConfig分别为weixin-java-minapp中提供的小程序服务的实现类和配置存储类。

  1. 使用配置类

在需要使用小程序服务的类中,可以直接注入WxMaService类实例或使用WxMiniProgramConfiguration.getMaService()方法获取实例。示例代码如下:

@Service
public class WxMaServiceImpl implements WxMaService {

  @Autowired
  private WxMaConfiguration wxMaConfiguration;

  @Override
  public void sendSubscribeMessage(String openid, WxMaTemplateMessage templateMessage) {
    WxMaService wxMaService = wxMaConfiguration.getMaService();
    try {
      wxMaService.getSubscribeMsgService().sendSubscribeMsg(openid, templateMessage);
    } catch (WxErrorException e) {
      throw new RuntimeException(e.getMessage());
    }
  }
}

以上代码演示了使用WxMaService发送订阅消息的方式。需要注意的是,在使用订阅消息之前,需要事先在小程序后台设置好相关的订阅消息模板。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用weixin-java-miniapp配置进行单个小程序的配置详解 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • SpringBoot2 整合Ehcache组件,轻量级缓存管理的原理解析

    首先,Spring Boot是一个快速构建Spring应用程序的框架,而Ehcache是一款开源的Java缓存框架。将Spring Boot和Ehcache结合使用能够提高应用程序的性能。下面展示如何在Spring Boot应用程序中使用Ehcache实现轻量级缓存管理。 环境准备 JDK 1.8+ Maven Spring Boot 2.0.0.RELEA…

    Java 2023年5月31日
    00
  • Java之InputStreamReader类的实现

    Java提供了一种用于将字节流转换为字符流的机制,称为字符流与字节流之间的桥梁,这种机制的关键是使用InputStreamReader类。本篇攻略就是讲解InputStreamReader类的使用和实现原理。 InputStreamReader类概述 InputStreamReader类实现了将字节流转换为字符流的功能,它继承了Reader类,属于Reade…

    Java 2023年5月20日
    00
  • Sprint Boot @JsonInclude使用方法详解

    @JsonInclude是Spring Boot中的一个注解,用于指定在序列化Java对象为JSON字符串时,哪些字段需要包含在内。在本文中,我们将详细介绍@JsonInclude注解的作用和使用方法,并提供两个示例。 @JsonInclude注解的作用 @JsonInclude注解用于指定在序列化Java对象为JSON字符串时,哪些字段需要包含在内。当使用…

    Java 2023年5月5日
    00
  • SpringBoot 在IDEA中实现热部署步骤详解(实用版)

    下面是详细讲解“SpringBoot 在IDEA中实现热部署步骤详解(实用版)”的完整攻略,包含两个示例。 什么是热部署 热部署是指在应用程序运行的情况下,修改代码后不需要重启应用程序就能生效,从而提高开发效率。SpringBoot 中实现热部署可以通过多种方式,比如 XML 配置文件方式、SpringBoot DevTools 方式等。本攻略主要介绍 Sp…

    Java 2023年5月19日
    00
  • Java操作Excel文件解析与读写方法详解

    Java操作Excel文件解析与读写方法详解 Excel文件是一种广泛应用于商业、金融等领域的数据处理工具。在Java开发中,操作Excel文件常常需要通过对Excel文件进行解析读取和写入操作。 Excel文件格式 Excel文件通常有两种常见的格式:xls和xlsx。其中,xls是Excel97-2003版本的二进制文件,而xlsx则是Excel 200…

    Java 2023年5月19日
    00
  • Java多线程实现快速切分文件的程序

    下面我将为你详细讲解“Java多线程实现快速切分文件的程序”的完整攻略。 1. 程序总体思路 本程序的主要任务是将大文件切分成若干个小文件,以便后续进行处理。我们可以采用多线程的方式来实现快速切分文件的功能,具体步骤如下: 读取需要进行切分的大文件,获取文件总长度。 根据线程数量计算每个线程需要读取的文件块大小及起始位置。 创建多个线程,每个线程负责读取指定…

    Java 2023年5月18日
    00
  • Java 面向对象和封装全面梳理总结

    Java 面向对象和封装全面梳理总结 什么是面向对象编程? 面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计范式,它将“对象”作为程序的基本单元,通过对象之间的交互来实现程序的功能。在OOP中,每个对象都具有数据(属性)和行为(方法),对象通过调用方法来执行某些操作,并可以修改自身的状态。 OOP的核心思想是把…

    Java 2023年5月26日
    00
  • 利用 Linq+Jquery+Ajax 实现异步分页功能可简化带宽压力

    利用 Linq+Jquery+Ajax 实现异步分页功能可简化带宽压力的攻略包括以下几个步骤: 1. 后端接口 首先需要在后端实现一个接口用于提供分页数据,可以使用 Linq 来实现。下面是一个 C# 的示例代码: public JsonResult GetList(int pageIndex, int pageSize) { var list = db.U…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部