前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0开始一个微信公众号的自动回复

从0开始一个微信公众号的自动回复

作者头像
花花522
发布2023-03-07 16:04:21
1.1K0
发布2023-03-07 16:04:21
举报
文章被收录于专栏:花花爱咖啡

如果喜欢花花,不妨点个在看,分享给你同学

  1. 注册个人公众号,手机下载订阅号助手,简单注册就能用了
  2. 打开开发者模式,步骤如下

登录微信公众平台

链接如下:https://mp.weixin.qq.com/

滑动到底部,打开基本配置

修改公众号开发信息

修改服务器配置

消息加解密因为麻烦,这里直接使用明文,如用于商业,建议使用安全模式

3. 这里不能直接提交.因为微信在提交的时候会验证一遍,所以开始编写服务器代码.

4. 编写代码的第一个步骤就是先看看开发文档,那么我们来看看微信给的文档

我们从接入指南开始看,

https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html

第一步是填写服务器配置.我们上面已经完成了

第二布是验证请求的来源

参数加密有三个步骤

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

先看看微信官方给出的代码(php)

代码语言:javascript
复制
private function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];
  
    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );
    
    if( $tmpStr == $signature ){
        return true;
    }else{
        return false;
    }
}

最近刚好接触了springboot.用起来,java不香吗.写起来一样方便

spring: 配置地狱

springboot的优点就是自动装配.不需要写大量xml配置了.全部用start来启用配置.转对于spring.会慢慢更新,扯远了.我们直接看代码里面的注释


代码语言:javascript
复制
package com.huahua.controller;

import com.huahua.service.MessageServiceImpl;
import com.huahua.util.SHAUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;

@RestController
public class WxController {

    private final String token = "这里填自定义的token,需要对应微信配置的";
    @Autowired
    MessageServiceImpl messageService;// 这个是自动回复的service.本章节可以忽略




    @GetMapping("/wx")
    // 这个是本章节的重点.验证请求是否来自微信,防止别人手动请求获取结果
    public String token(@RequestParam("timestamp") String timestamp, @RequestParam("nonce") String nonce, @RequestParam("signature") String signature,@RequestParam("echostr") String echostr) {
        // 创建string数组接收,排序的方法很多
        String[] strings = {timestamp, nonce, token};
        // java自己提供的排序
        Arrays.sort(strings);
        String sha1 = SHAUtils.SHA1(strings[0] + strings[1] + strings[2]);
        return signature.equals(sha1) ? echostr : "验证失败";
    }

    /**
     * @return
     */
    @PostMapping("/wx")
    public String autoReply(HttpServletRequest request) throws Exception {
        System.out.println("autoReply执行");
        // 自动回复,本章节可以忽略
        return messageService.newMessageRequest(request);
    }



    @RequestMapping("/")
    public String index() {
    // 测试服务器连通,可以忽略
        return "爱花花";
    }

}

排序

传入数组就会自动把数组排序

springboot项目的打包

1. 首先放服务器上.因为自带tomcat,所以为了避免冲突.修改端口为8083(自定义,跟其他端口不冲突就行)

然后就ok了

2. 打jar包.双击就能自动打包

打包后在如下目录

3.上传服务器测试

通过宝塔或者其他花里胡哨的操作都行

4. 配置域名访问(使用反向代理)

5.运行jar包,这里使用ssh测试,你们想要后台运行可以使用nohup命令,具体你们参考百度把

6. 测试部署

访问配置好的域名,比如我的http://wx,jxwazx.cn

就会发现能访问,实测部分nginx访问时403.这是因为配置问题(原因未知),初步确认时因为没有index文件,代码没问题

7. 之前的微信界面提交

到这里已经配置完毕了

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 花花爱咖啡 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
测试服务
测试服务 WeTest 包括标准兼容测试、专家兼容测试、手游安全测试、远程调试等多款产品,服务于海量腾讯精品游戏,涵盖兼容测试、压力测试、性能测试、安全测试、远程调试等多个方向,立体化安全防护体系,保卫您的信息安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档