微信公众账号开发 (一)

本文档介绍了如何配置微信公众号的开发者密码并启用,详细解释了如何验证微信发送的GET请求,以及设置用于接收用户消息的POST接口。通过提供一个Java实现的控制器代码示例,展示了如何处理接收到的XML消息并进行签名验证。
摘要由CSDN通过智能技术生成

1、注册略
2、登录
在这里插入图片描述

左侧是菜单栏
往下滑动
在这里插入图片描述
点击基本配置
2.1 启用开发者密码AppSecret
在这里插入图片描述
在这里插入图片描述

只有白名单里的ip才可以获取token
在这里插入图片描述

在这里插入图片描述
url就是微信用户给公众号发送的信息 都会转发到这个接口上
token我是随便起的 一个名字 “java_xxxx”
然后随机生成一个EncodingAESKey
为了方便调试、我这里直接用明文模式

这个url
需要自己实现 用于接收消息
其中get请求 用于token验证
post请求 用于接收微信用户发送给公众号的消息

package jo.weixin;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

/**
 * 微信token验证、消息接收
 * <p>
 * 由官方文档介绍可知,当我们填入url与token的值,并提交后,微信发送的GET请求携带4个参数,
 * 而signature参数结合了timestamp参数、nonce参数来做的加密签名,我们在后台需要对该签名进行校验,看是否合法。
 * 通过微信传入的timestamp与nonce做相同算法的加密操作,若结果与微信传入的signature相同,即为合法,
 * 则原样返回echostr参数,代表接入成功,否则不做处理,则接入失败。
 */
//@RestController
//@RequestMapping
public class WeixinBaseController {

    /**
     * 微信公众号签名认证接口
     * 注意此请求是get请求
     *
     * @param: @param signature
     * @param: @param timestamp
     * @param: @param nonce
     * @param: @param echostr
     * @return: String
     */
    //@GetMapping("weixin")
    public String checkSignature(String signature, String timestamp, String nonce, String echostr) {

        // 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败
        if (signature != null && JoWeixin.checkSignature(signature, timestamp, nonce)) {
            return echostr;
        }
        return null;
    }
    //@PostMapping("weixin")
    public void DoPost(HttpServletRequest request, HttpServletResponse response) {
        try {
            //接受微信服务器发送过来的XML形式的消息
            InputStream in = request.getInputStream();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
            String xml = "";
            String itemStr = "";//作为输出字符串的临时串,用于判断是否读取完毕
            while ((itemStr = reader.readLine()) != null) {
                xml += itemStr;
            }
            in.close();
            reader.close();

            System.out.println("收到消息:" + xml);
            //防止中文乱码
            response.setCharacterEncoding("UTF-8");

            WeixinMessage message = JoWeixin.parseXml(xml, WeixinMessage.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}


获取access_token
https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值