微服务架构【SpringBoot+SpringCloud+VUE】四 || 实战项目-微信服务


本教程实战项目主要基于微信公众号的开发讲解微服务的实战开发,整个过程中会讲解如何拆分微服务,以及各微服务组件在实战项目中的应用。
首先,我们创建一个springboot项目,为了后期各服务间的RPC调用,我们把整个项目拆分为三个子工程。XXX-service为服务的业务实现,同样遵循MVC架构,XXX-model为RPC调用接口的实体类,XXX-feign为RPC调用接口,下面的项目中会详细介绍这样拆分为三个子工程的目的。

1、创建父工程open-weixin

父工程仅做版本的统一依赖,项目依赖包根据项目需求进行引入,切记把以前项目的所有依赖都引入,避免引入过多无用包,以及包冲突。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <modules>
        <module>weixin-service</module>
        <module>weixin-model</module>
        <module>weixin-feign</module>
    </modules>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.2.RELEASE</version>
        <relativePath/>
    </parent>
    <groupId>com.kevin</groupId>
    <artifactId>open-weixin</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>${java.version}</maven.compiler.source>
        <maven.compiler.target>${java.version}</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <maven.test.skip>true</maven.test.skip>
        <!-- spring -->
        <spring-cloud.version>Hoxton.SR5</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>
        <!--projects-->
        <commons-beanutils.version>1.9.4</commons-beanutils.version>
        <hutool-all.version>4.6.5</hutool-all.version>
        <mybatis-plus.version>3.3.2</mybatis-plus.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!--spring cloud-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--工具类-->
            <dependency>
                <groupId>commons-beanutils</groupId>
                <artifactId>commons-beanutils</artifactId>
                <version>${commons-beanutils.version}</version>
            </dependency>
            <dependency>
                <groupId>cn.hutool</groupId>
                <artifactId>hutool-all</artifactId>
                <version>${hutool-all.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

2、创建子工程weixin-service

weixin-service子工程为一个springboot项目,所以我们创建一个springboot子工程。创建其余两个子工程的目的主要要分离RPC调用接口;该项目基于微信公众号开发,所以需要引入微信公众号的一个开源框架,本教程使用的是weixin-java-mp,当然也有其他优秀的开源框架,根据自己需求选用。

2.1、项目依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>com.kevin</groupId>
        <artifactId>open-weixin</artifactId>
        <version>1.0.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>weixin-service</artifactId>
    <dependencies>
        <!--spring boot web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--微信公众号框架-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>${weixin-java-mp.version}</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>com.github.jedis-lock</groupId>
            <artifactId>jedis-lock</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>
</project>

目前,我们仅需要接入微信公众号端,所以引入了mp的包,mp框架demo需要redis,相关依赖也需要引入,以上依赖包已经能满足我们目前的需求,后续根据项目的需求逐渐增加,再次提醒大家,切记一次性引入所有常用的包。

2.2、微信公众号初识

如果没有微信公众号开发经验的同学可以先看一下微信公众号官方文档,了解微信公众号开发流程。了解完之后我们基于mp的demo快速上手,下载mp框架demo,下载之后,我们把demo复制到我们的weixin-service项目中。复制后目录结构如下:

alt weixin01

2.3、微信公众号参数申请

登陆微信公众号开发平台,找到开发者工具

alt weixin02

进入公众平台测试账号

alt weixin03

获取自己测试账号的appId、appsecret,URL为回调地址,需要外网可以访问(使用外网映射工具生成)、Token值自己输入

alt weixin04

至此,微信公众号测试参数申请完成,下面进行公众号的接入。

2.4、参数配置

上节我们获取到微信公众号参数,接下来把获取的参数配置到项目的application.yml配置文件中,需要替换为自己的appId、secret、token配置内容如下:

logging:
  level:
    root: warn
    com.kevin.weixin.service: info
    com.kevin.weixin.service.repository: debug
    org.springframework.web: INFO
    com.kevin.weixin.service.wx.map: DEBUG
    me.chanjar.weixin: DEBUG
wx:
  mp:
    useRedis: false
    redisConfig:
      host: 127.0.0.1
      port: 6379
    configs:
      - appId: wx11111111
        secret: 11111111
        token: kevin
        aesKey:

2.5、外网映射

下载一个外网映射工具,把我们本地的项目映射到外网地址,如下图所示,我本地项目的9005端口已经被映射到了yn.free.qydev.com域名

alt weixin05

2.6、微信公众号服务端接入

启动项目,并将项目中WxPortalController的接口填入到微信公众平台的URL中,如图所示:

alt weixin06

点击提交时,微信端会调用URL地址,进行服务端的验证,服务端会打印出如下日志:

接收到来自微信服务器的认证消息:[ff64816b307eec715166cca735cbddd035a80f3b, 1598194834, 1720798230, 7056734206944775639]

公众平台提交会提示配置成功信息,至此,微信公众号已成功接入我们自己的服务端。

3、学习交流QQ群【883210148】

alt QQ群

4、关注微信公众号,免费获取文档及资源

posted @ 2020-03-01 22:38  kevin_ying  阅读(1556)  评论(2编辑  收藏  举报
//系列教程