使用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日

相关文章

  • SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    下面给出详细的攻略以及两条示例说明。 1. 概述 本攻略主要介绍如何使用SpringMVC和Ajax实现文件批量上传和下载功能。SpringMVC提供了强大的文件处理能力,可以方便地上传和下载文件。而Ajax则可以实现异步上传和下载文件,提高用户体验。 2. 文件上传 2.1 配置文件上传相关bean 首先,需要在SpringMVC配置文件中添加以下配置: …

    Java 2023年6月15日
    00
  • java写入文件的几种方法分享

    以下是Java写入文件的几种方法分享的完整攻略。 1. 概述 Java中提供了多种方式来进行文件写入。下面我们将介绍Java中常用的几种文件写入方式。 2. FileWriter方式 使用FileWriter可以向文件写入字符流。 import java.io.FileWriter; import java.io.IOException; public cl…

    Java 2023年5月20日
    00
  • 脚本发生错误怎么解决 当前页的脚本发生错误的解决方法小结

    脚本发生错误怎么解决 当网站出现脚本发生错误时,可能导致页面无法正常运行,给用户造成极大的困扰,因此我们需要及时修复这些问题,以确保用户的良好体验。本文将为大家介绍如何解决脚本发生错误的问题。 1. 查看错误提示 当脚本发生错误时,浏览器会给出相关的错误提示信息,我们可以根据提示信息快速定位问题所在。常见的错误提示信息包括:语法错误、未定义变量、函数调用错误…

    Java 2023年5月23日
    00
  • 利用python分析access日志的方法

    当我们需要了解一个网站的访问情况时,经常会使用access日志来进行分析。在本文中,我们将利用python来分析access日志。 准备工作 在开始之前,我们需要一些准备工作: 确认access日志的格式是否符合Nginx的常规格式,通常情况下,access日志应该包括如下信息: 远程访问IP 访问时间 请求方式 请求的URL 请求的HTTP协议版本 请求的…

    Java 2023年5月20日
    00
  • 对Java中JSON解析器的一些见解

    让我们来详细讲解一下“对Java中JSON解析器的一些见解”的攻略。 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,用于描述数据的类型和结构。JSON使用键值对的方式表示数据,键和值之间使用冒号(:)分隔,多个键值对之间使用逗号(,)分隔。 Java中的…

    Java 2023年5月26日
    00
  • Spring MVC拦截器_动力节点Java学院整理

    以下是关于“Spring MVC拦截器_动力节点Java学院整理”的完整攻略,其中包含两个示例。 Spring MVC拦截器 Spring MVC拦截器是一种用于拦截请求和响应的机制。在本文中,我们将讲解Spring MVC拦截器的实现原理及用法。 拦截器实现原理 Spring MVC拦截器的实现原理是通过实现HandlerInterceptor接口来实现的…

    Java 2023年5月17日
    00
  • 简单了解Java关键字throw和throws的区别

    简单了解Java关键字throw和throws的区别 在Java中,throw和throws是两个与异常相关的关键字,它们的作用和使用场景不同,但经常容易混淆。 throw关键字 throw关键字用于抛出一个异常对象。我们可以在代码中手动抛出一个异常对象并且将其名称直接传递给throw语句。抛出异常后,程序会立即终止当前的语句执行,并开始执行异常处理流程。 …

    Java 2023年5月25日
    00
  • Mybatis 自动映射(使用需谨慎)

    Mybatis 自动映射 (Auto-mapping) 是指Mybatis在进行 SQL 查询结果和Java对象映射时,自动查找Java对象对应属性名和SQL查询结果列名相同的项,并进行赋值。自动映射虽然能够简化开发工作,但也存在一些需要注意的地方,使用时需谨慎。 自动映射的配置方式 方式一: 自动映射全局开启 Mybatis提供了全局配置自动映射的方式,即…

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