微服务电商实战(七)公众号消息接口开发

一、简介

在我们的电商项目中,注册功能流程是这样的:

用户填写账号信息后,需要扫码关注我们的公众号,然后向公众号发送手机号码,公众号会返回消息提示(比如已发送验证码、手机号错误、手机号已注册等),接着手机会收到验证码短信,以此来完成注册。

为什么要加上关注公众号的步骤?

好处是这样可以让用户注册使用我们的电商时,就关注了我们的公众号,好处很多。

 

本篇博客将实现其中的公众号消息的接收与发送环节,使用wxjava框架开发。

wxjava的使用方法

wxjava的demo

docker安装redis

docker安装mysql

微信公众号

个人的公众号类型一般是订阅号。

 

 

二、用wxjava来开发微信公众号接收消息和发送消息的接口

 

首先我们先在微信公众平台开个测试号方便我们测试

 

 

 

公众平台接口调用仅支持80端口,公众号必须实名。

 

 

接着我们修改shop-service-impl-weixin模块

 

修改pom.xml文件,如下

<?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>
        <artifactId>shop-service-impl</artifactId>
        <groupId>com.liazhan</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>shop-service-impl-weixin</artifactId>
    <packaging>jar</packaging>

    <properties>
        <weixin-java-mp.version>3.7.0</weixin-java-mp.version>
    </properties>

    <dependencies>
        <dependency>
            <artifactId>shop-service-api-weixin</artifactId>
            <groupId>com.liazhan</groupId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!-- wxjava公众号开发-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>${weixin-java-mp.version}</version>
        </dependency>
    </dependencies>
</project>

 

将wxjava的某些类复制过来,如下图

 

这里我们主要用到WxPortalController类和MsgHandler类,一个用来接口配置,一个用来消息处理。

我们可以注意到测试号管理有个接口配置信息,需要填写URL和Token,其中Token是自定义的,而URL的地址对应的就是WxPortalController的映射/wx/portal/{appid},将appid修改成我们的公众号appID,然后我们使用的是网关,那么完整的URL就是http://127.0.0.1/liazhan-weixin/wx/portal/wx342b2a9312d0084c

 

这里需要注意的是,微信接口需要公网能访问到,而上述URL是本地的,因此我们要使用内网穿透,使用ngrok,有免费的可以使用,不过可能会经常掉线,使用方式自行查看官网教程。如果自己有公网服务器的话,可以用frp,利用阿里云和frp实现无域名内网穿透

 

这里我使用内网穿透之后,http://liazhan.free.idcfengye.com映射到我的本地地址127.0.0.1:80,因此完整的URL就是

http://liazhan.free.idcfengye.com/liazhan-weixin/wx/portal/wx342b2a9312d0084c

 

修改github上weixin服务的配置文件,添加如下配置

wx:
  mp:
    configs:
      - appId: wx342b2a9312d0084c  #微信公众号的appID
        secret: 33144fa93ee3940fd6d37db8ad28fc0e  #微信公众号的appsecret
        token: liazhan  #微信公众号的Token,自定义
        aesKey: 111 #微信公众号的EncodingAESKey值,在测试号中测试不需要这个值

配置文件github地址 https://github.com/liazhan/shop-project-config/commit/9b8fd6b84bddcdb719436e5ce8ce9e64a56cf95d

 

ok,我们依次启动config、eureka、gateway、weixin服务。

 

然后进行接口配置信息,填写URL和Token后点击提交

 

查看控制台,可以看到打印了一条信息

 

公众平台显示配置成功,如此便ok了。如果显示配置失败,那么可以多点击几次提交按钮试试。

 

 

接下来我们用微信号关注我们的测试号,扫描二维码关注。

 

然后发送消息。

可以看到,测试号自动回复了一条消息解析信息给我们,这个消息的格式是在我们的MsgHandler类里进行修改的。

 

我们修改MsgHandler类如下,只进行简单的消息回复

package com.liazhan.weixin.mp.handler;

import com.liazhan.weixin.mp.builder.TextBuilder;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage;
import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * @author Binary Wang(https://github.com/binarywang)
 */
@Component
public class MsgHandler extends AbstractHandler {

    @Override
    public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
                                    Map<String, Object> context, WxMpService weixinService,
                                    WxSessionManager sessionManager) {

        //TODO 组装回复消息
        String content = "收到信息内容:" + wxMessage.getContent();

        return new TextBuilder().build(content, wxMessage, weixinService);

    }

}

 

重新启动weixin服务,再次向测试号发送消息测试。

 

可以看到,消息的回复内容已经被我们更改了,如此我们接下来便可以实现我们的手机验证码短信功能了。

 

github项目地址https://github.com/liazhan/shop-project/tree/e1070f04933ebb0de064bf954c2a8de5059b7245

版本号为e1070f04933ebb0de064bf954c2a8de5059b7245


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值