当前位置:网站首页 > Java教程 > 正文

公众号商城开发教程 java




前言

本人不喜欢网络上的各种文章,上来就把完整代码放脸上,让你琢磨不懂,这篇文章会尽量让你不要出现这种情况。

https://mp.weixin..com/

  • 普通用户建议注册订阅号
  • 文中后半部分的菜单配置等,需要其权限,可以用公司的公众号来实验
  • 打开基本配置菜单,成为开发者

在这里插入图片描述

  • URL必须有域名,且必须在外网可以访问到,因此我们需要natapp来进行内网穿透,简单点说就是把外网的IP映射到你当前的内网下,外网ip接受的内容会被转到你映射的内网ip:端口下。
  • Token 随便填
  • key随便填
  • 建议选择明文模式
  • 此时提交之后由于后端没有对应的服务,所有无法成功,待下文可以开始提交的时候建议大家再进行提交

官网:https://natapp.cn
在这里插入图片描述

  1. 点击客户端下载即可,先不用急着点教程/文档,里面并没有我们当前想要的
    在这里插入图片描述
  2. 选择系统对应的版本,这里使用的是win64,之后点击箭头指向的地方进行快速的安装使用教程!
  3. 安装教程里面第一步是需要注册
    1. 在这里插入图片描述
      购买隧道是有免费的和付费的,但是免费的需要进行支付宝实名认证,乍一看似乎能白嫖,但是我本人使用的时候,一到支付宝登陆的时候就显示我支付宝账号有危险,要我改密码,死活上不去,无奈只好购买付费的。

我也对客服进行了邮箱反馈,但是只是建议我进行付费的购买,并没有说排查错误什么的!
2. 在这里插入图片描述
隧道协议选择Web即可
二级域名如果没有先选择不需要,如果你有自然更好。
本地端口填写一个即可,本人这里选择的80
带宽&流量选择小流量即可
购买完之后进行注册域名
4. 在这里插入图片描述
选择一个可用于微信开发的即可
之后再回到我的隧道里面进行绑定域名即可

构建之前,请大家大致的看微信开发平台文档一遍,比避免有些地方不懂(强烈告诫至少看一遍)
在这里插入图片描述
本教程只需要大家看以上四个大章即可
本教程以大家都有一个springboot的基本启动程序,为前提(能启动,controller能返回个hello,world即可)
先给出本教程需要的全部maven包 —jdk 1.8
开发工具 idea

 
 

先定义这样的一个类,加上一个接受微信推送消息服务器接口匹配的方法(暂时不需要定义其他类)
在这里插入图片描述

  • 按要求填写这些输入框
  • 建议大家先点击提交,查看是否已经进入此方法
    完整代码:
 

接受信息推送这里需要进行新加类:

  1. 新建utils package(包)
  2. 在utils包下新建messagehandle
  3. 在messagehandle包下,新建ParseXml类内容为:
 
  1. 然后在上文的HelloController中新建方法如下:
 

在这里插入图片描述
附图供大家看!
根据官方文档可知:
在这里插入图片描述
基本每一个消息都会有一个MsgType来确定是什么类型的,所以我们这里要获取它:

 

在这里插入图片描述
被动回复用户消息章节文档,我们最后是需要返回xml形式的给微信服务器。
所以我们的大体步骤是:

  1. 获取微信服务器的请求,解析xml为对象
  2. 操作对象,获取请求类型(比如文本、图片等)进行相应的处理,进行数据的变更
  3. 把对象变为xml形式返回

操作对象

  • 首先每个返回的事件类型有一个自己的返回格式,但是都有几个共同的字段,所以我们可以先定一个实体基类,然后其他的各种格式来继承它,获取共同的属性(这里的思路出自网络代码,但是网络代码完整性,实用性比较低,扩展性也不行所以我进行了大幅的修改)。
  • 实体基类BaseMessage代码如下(请自行新建包来进行放置,建议不要和utils放置在一起):
 
  • 文字消息实体类TextMessage
 
  • 图片消息实体类ImageMessage
 
  • 语音消息实体类VoiceMessage
 
  • 视频消息实体类VideoMessage
 
  • 暂时不提供小视频处理类,请自行添加
  • 地理位置处理类LocationMessage
 
  • 链接消息实体类LinkMessage
 
  • 现在有了对象之间的映射但是还少一个判断是什么事件类型的枚举类,请在utils包下新建code
  • code包下新建MessageCode
  • 类如下(这个其实还少一两个,但是懒的加了,有需要的自己加上,此代码完全来自网上,没有多少需要修改的):
 
  • 此时我们就可以在helloController里面进行事件类型的判断了,代码如下:
 
  • 这里我们已经进行成功的判断了,那么接下来就需要根据传来的参数对象,进行返回参数xml的构建
  • utils包新建msghandle
  • msghandle包下,新建MsgHandleMsgHelpClass2个类
  • MsgHandle : 处理消息的分发,因为每一个消息类型的返回值,各有个的特点
  • MsgHelpClass:每一个消息类型的返回值,虽然各有各的特点,但是依然有共同的地方,用于辅助MsgHandle
    在这里插入图片描述
    在这里插入图片描述
  • MsgHandle 代码如下:
 
  • 此类有4个共同的属性,下面的代码直接加在此类中即可,分开只是为了更好理解,避免第一眼看上去太多,难以理解
 
  • MsgHelpClass类代码如下:
 
  • 上面两个类就是处理分发的类,但是上面我们也提到了一个把数据处理返回为xml,ParseXml类的静态方法
  • 此方法在ParseXml类中为:
 
  • 上文提到的XmlHandleFun方法代码如下:
 

以上配置完成之后我们就可以进行HelloController剩下的部分了

 
  • 看到这里你可以会说这ResultRes.response又是个什么东西,都配置怎么多了怎么还有,我答应你们这真的是最后一个了,别骂了别骂了!
  • utilsl包新建reresult包(我承认我这个名字不规范,不合适 …)
  • reresult包下新建ResultRes
  • ResultRes类代码如下:
 

到这里正常情况下,已经可以对用户输入的普通文本消息进行自动回复了!

  • HelloController类message(get)方法里,加入
  •  
  • 获取事件字符串之后,我们需要进行匹配,来进入相应的处理

订阅消息事件,返回创建自定义菜单json数据

  • 在message(get)方法里加入
 
  • 我们需要新建GetBodyMessage类,代码如下:
 
  • getBodyJson方法返回的json结构如下:
    在这里插入图片描述
  • 官网token获取请求实例如下:
    在这里插入图片描述
  • 创建httpRequest类和httpsRequest类,代码如下(代码源自网络):
  • 网址:链接
 
 

https请求如果报错,可能还需要导入服务端的安全证书步骤如下:

  1. 例:点击下图中红线指向的小锁(谷歌浏览器)
    在这里插入图片描述
  2. 点击证书一行
  3. 点击详细信息
    在这里插入图片描述
  4. 点击复制到文件
    在这里插入图片描述
  5. 下一步然后来到下图页面
    在这里插入图片描述
  6. 选择DER编码二进制X.509后点击下一步
  7. 随意选择一个文件名和文件路径。
  8. 打开cmd进入刚刚创建的文件路径,命令行输入Keytool -import -alias 文件名 -file 文件名.cer -keystore cacerts
  9. 回车之后会让输入口令,一般口令默认是changeit。输入密钥时并不会显示在界面上。
  10. 输入正确之后会让你选择是否信任该证书,输入y,会提示导入成功!
  • 完成之后,用户订阅该公众号之后就会出现菜单。

用户点击自定义菜单事件 && 用户点击自定义链接事件

  • 由于上文新建的菜单里面包括了用户点击自定义菜单事件 && 用户点击自定义链接事件这两个,所以我们只需要添加如下代码,观察到用户的操作即可:
 

在这里插入图片描述

版权声明


相关文章:

  • java 打印视频教程2025-01-23 16:10:00
  • java前段教程2025-01-23 16:10:00
  • java睡眠视频教程2025-01-23 16:10:00
  • java案例教程pdf2025-01-23 16:10:00
  • java反汇编教程2025-01-23 16:10:00
  • java支付视频教程2025-01-23 16:10:00
  • java+播放器+教程2025-01-23 16:10:00
  • java2实用教程代码2025-01-23 16:10:00
  • java加油教程2025-01-23 16:10:00
  • java部署教程2025-01-23 16:10:00