微信公众号开发基础入门

一、申请一个微信公众号
https://mp.weixin.qq.com/

二、接口认证(证明你是一名合法的开发者)

在微信公众平台左侧菜单找到基本配置
在这里插入图片描述
在这里插入图片描述
开发者ID是注册完就有的,这里要注意的是开发者密码,非常重要,获取密码后,建议保存在文本文档里。还有一个IP白名单是干什么的呢?
开发者访问微信服务器时会携带ID和密码和IP地址,在服务器里IP白名单上的IP地址才允许访问。
在这里插入图片描述
点击修改配置

在这里插入图片描述
URL是访问地址,借助NATAPP工具获取
https://natapp.cn/
下载64位ZIP,解压出来运行后出现命令窗口,需输入指令。
先在NATAPP网页上找到免费隧道(需注册)
购买一个免费隧道
在这里插入图片描述
在命令窗口中输入 natapp -authtoken=(authtoken下的内容)
在这里插入图片描述
成功后显示online,http://…cc即是内网穿透后的地址(付费与免费的区别就是免费的URL每次都是不一样的)。

回到微信公众平台的配置网页,复制地址到URL栏,地址后接controller地址。Token随意取名,随机生成,明文模式。点击提交,提示失败。

打开IDEA新建工程,创建maven项目,因为与controlller交互,所以需要springmvc相关配置文件
1.pom.xml中引入依赖

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.3.20.RELEASE</version>
    </dependency>

导入springmvc.xml配置文件
web.xml中初始化配置文件

<servlet>
    <servlet-name>oa</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>oa</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

创建controller进行开发者认证

在这里插入图片描述

//1.按字典顺序排序
        TreeSet<String> set = new TreeSet<>();
        set.add(TOKEN);
        set.add(timestamp);
        set.add(nonce);

        //2.将三个参数拼接成一个字符串
        StringBuilder builder = new StringBuilder();
        for(String str:set){
            builder.append(str);
        }

        //3.通过SHA1加密
        String str = SHA1.encode(builder.toString());
        if(str.equals(signature)){
            System.out.println("接入成功");
            return echostr;
        }else {
            System.out.println("接入失败");
            return "failed";
        }

返回字符串需加@ResponseBody注解

再次点击提交,提交成功。

三、利用测试号进行测试
点击开发者工具,选择开发平台测试账号,微信扫码即可。

四、接收并回复用户发送的消息

//接收用户发送过来的信息(xml)
    @PostMapping(value="auth",produces = "text/xml;charset=utf-8")
    @ResponseBody
    public String receive(@RequestBody String strXml) throws DocumentException {
        System.out.println(strXml);

        //1.接收消息
        //sax  dom  dom4j
        //把xml数据变成document对象
        Document document = DocumentHelper.parseText(strXml);
        //得到根节点
        Element rootElement = document.getRootElement();
        //得到节点对象
        Element toUserNameElement = rootElement.element("ToUserName");
        Element fromUserNameElement = rootElement.element("FromUserName");
        //得到消息类型对象
        Element msgTypeElement = rootElement.element("MsgType");
        //得到节点中的数据
        String userNameText = toUserNameElement.getText();
        String fromUserNameElementText = fromUserNameElement.getText();
        String msgTypeElementText = msgTypeElement.getText();
        if("event".equals(msgTypeElementText)){
            Element eventElement = rootElement.element("Event");
            String eventType = eventElement.getText();
            if("subscribe".equals(eventType)){
                //关注
                return newsMessage(fromUserNameElementText,userNameText);
            }else {
                //取消关注
                System.out.println("取消了关注");
                return null;
            }
        }

        //2.回复消息
        Element contentElement = rootElement.element("Content");
        String contentElementText = contentElement.getText();

        String responseText = contentElementText+"hh";
        StringBuilder builder = new StringBuilder();
        builder.append("<xml>");
        builder.append("<ToUserName><![CDATA["+fromUserNameElementText+"]]></ToUserName>");
        builder.append("<FromUserName><![CDATA["+userNameText+"]]></FromUserName>");
        builder.append("<CreateTime>"+System.currentTimeMillis()+"</CreateTime>");
        builder.append("<MsgType><![CDATA[text]]></MsgType>");
        builder.append("<Content><![CDATA["+responseText+"]]></Content>");
        builder.append("</xml>");

        System.out.println(builder.toString());
        return builder.toString();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python开发微信公众号,常用的Python库包括itchat、wechatpy、wxpy等。这些库可以帮助开发者实现微信公众号的功能,例如自动回复、消息推送、菜单设置等。 其中,itchat是一个非常流行的Python库,提供了微信个人号和公众号的API,可以通过Python代码来实现微信的自动化操作。而wechatpy则是一个专门针对微信公众号的Python库,支持高级接口和企业微信接口,可以方便地进行公众号开发。 wxpy则是一个基于itchat的Python库,可以快速地实现微信机器人的开发,具有良好的扩展性和定制性。通过wxpy,开发者可以轻松地实现微信自动回复、消息推送和群聊机器人等功能。 总之,使用Python开发微信公众号可以大大提高开发效率,使得开发者可以更加专注于业务逻辑的实现。 ### 回答2: Python 微信公众号是一个使用Python编程语言开发的微信服务平台。它提供了丰富的功能和工具,可以帮助开发者创建和管理自己的微信公众号。 首先,Python 微信公众号可以实现接收和发送消息的功能。开发者可以通过编写Python代码来处理用户发送的文本、图片、音频等消息,并根据需要进行相应的回复。这为开发者提供了与用户实时互动的机会,可以更好地满足用户的需求。 其次,Python 微信公众号还支持自定义菜单的创建和管理。开发者可以通过简单的配置文件或代码来创建自己的菜单,包括一级菜单和二级菜单。这样用户在关注公众号后,就可以通过菜单快速访问所需的功能,提高用户的使用体验。 此外,Python 微信公众号还可以实现素材管理的功能。开发者可以上传和管理素材,包括图文消息、图片、视频等,方便随时更新公众号的内容。通过这个功能,开发者可以灵活地运营公众号,提供更多有趣和有用的内容。 最后值得一提的是,Python 微信公众号还支持数据统计和分析功能。开发者可以获取公众号的用户数量、关注和取消关注的动态等信息,并可以通过分析工具进行数据分析,了解用户的兴趣和行为习惯,从而更好地为用户提供个性化的服务。 综上所述,Python 微信公众号是一个强大的工具,可以帮助开发者轻松创建和管理自己的微信公众号,提供更好的用户体验和优质的服务。无论是个人开发者还是企业,都可以通过Python 微信公众号实现自己的创业梦想或运营需求。 ### 回答3: Python 微信公众号是基于Python开发的一个平台,可以通过微信公众号进行各种与Python相关的操作和交流。在这个公众号中,用户可以学习Python语言的基础知识、进阶技巧以及实际应用。公众号会提供Python编程入门教程, 提供一些编程示例和案例,帮助用户更好地理解和掌握Python的使用。 公众号的功能还包括推送最新的Python技术热点和行业动态,让用户了解Python在各个领域的应用和发展趋势。同时,公众号还会分享一些Python编程的实践经验和技巧,帮助用户解决实际应用中遇到的问题。 此外,Python 微信公众号还会定期举办一些线上线下的活动,如Python编程比赛、技术分享会等,旨在促进Python开发者之间的交流和学习。 总体来说,Python微信公众号是一个面向Python开发者和爱好者的平台,通过这个公众号,用户可以获取到Python语言相关的最新资讯、学习资源和社区互动,提升自己的编程能力和技术水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值