开发流程

公众号基本配置(首先得有公众平台账号)

  1. 在开发菜单的基本配置中填写好基本配置项

    • 首先配置服务器地址、Token、和消息加密密钥(地址为开发者为微信验证留的接口、token可以随便填写,只要在验证的时候填写一致即可、消息加密三种模式,为了方便开发环境下可使用明文模式。加密项的加密方式可查看微信开发文档消息加说明
  2. 在配置完后这是提交肯定会出现token验证错误(坑),因为你还没有写验证代码,这是你在自己的服务端开始写验证代码。

    *微信会发送一个get请求携带四个参数,根据微信给出的规则进行加密然后验证,验证成功直接返回echostr。详情可查看微信文档验证消息的确来自微信服务器
  3. 这些都完成之后皆可以进行开发了。当然如果要调用微信的一些接口是需要用到access_token的。具体回去access_token的方式微信文档也讲得很清楚获取access_token。这次开发的功能是用户消息的接收和被动回复。不需要用到access_token,也不是特别复杂得多功能。主要记录一下这次开发中踩得各种坑

爬坑心路

首先是接收用户发送给供公众号,微信服务器再转发给开发者的
  1. 微信给开发者填写的url发送请求,除了公众号基本配置是使用的是get请求,发送用户消息使用的是post请求。所以使用开发的话,需要接收两种方式的请求getpost.
  2. 微信发送的post请求会携带用户发送的消息。但是发送的是xml格式的数据包,所以这对于node开发者来说是不太友好的。一般nodejs开发接收post请求会使用到body-parser这个包,但是他不支持接收xml格式的数据,所以直接在reqbody中是找不到微信发送的数据的,这就必须要自己进行转化了。
  3.  //使用req的事件来读取发送的请求信息
    req.rawBody = ''// 给req添加一个rawBody属性
    req.on('data', (chunk) => {
    req.rawBody += chunk;// 将数据保存到req.rawBody中
    }) req.on('end', () => { })
  4. 在请求结束后,使用xml2js这个包对xml数据进行处理,将xml数据转换成json数据
  5.  req.on('end', () => {
    //在这里使用xml2js对xml数据进行处理,获取用户发送的信息,然后回复用户信息
    })
进行用户信息回复

微信服务器在请求五秒之内没有回复的话,回发起第二次第三次请求。三次都没有响应回给用户报错,所以如果无法再五秒之内回复的话,可以直接回复成功,或者一个空的字符串''.

消息回复最重要的就是回复消息的格式,一定要按微信给出的消息回复的格式来进行回复,不然也会报错,可以参考被动回复用户消息.

注意:如果复制微信给出的消息模板一定要去掉其中的空格,因为不符合xml数据的格式,所以也会报错

<xml> <ToUserName>< ![CDATA[toUser] ]></ToUserName> <FromUserName>< ![CDATA[fromUser] ]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType>< ![CDATA[text] ]></MsgType> <Content>< ![CDATA[你好] ]></Content> </xml>

比如!和<之间的空格和两个] ]中间的空格一定要去掉。

还有在回复的时候会有ToUserNameFromUserName两个参数,分别代表要将消息发送给谁(用户的openID),和消息的发送者(开发者公众号微信号).由于接受的微信的xml数据包这两个参数代表是反的ToUserNameFromUserName分别是使用户openID和开发者微信。所以一定不要弄反了。

集智robot微信公众号开发笔记的更多相关文章

  1. 微信公众号开发笔记(C#)

    这篇文章还不错,使用  .net , 对微信用户的想公众号发送的文字进行回复.比较简单,自己可以修改更复杂的回复. 微信公众号开发笔记(C#) 原文地址 需求分析 根据用户在微信上发送至价值中国公众号 ...

  2. 微信公众号开发笔记1(nodejs开发的)

    本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...

  3. 微信公众号开发笔记1(nodejs开发)

    本篇记录了微信公众号开发的一些笔记 一.微信服务器与我们服务器的交流 微信开发者拥有自己的服务器,在我们服务器上可以与微信服务器进行交流.既然可以交流,那就必定需要前提条件(微信认证),也就是说,只有 ...

  4. 微信公众号开发笔记-验证token

    开发 话不多说我们直接进入主题 我们先去微信公众号申请一个公众号: 申请完成之后我们找到开发下的基本配置 然后找到进行基本配置,我们需要一个url地址来验证,这里的地址必需要是外网,Token是我们任 ...

  5. 微信公众号开发笔记2(nodejs)

    本篇主要记录调用微信各种api和功能实现 一.始于access_token 无论调用微信的什么api,都需要一个查询参数,就是我们每隔1小时或者2小时获取的access_token,笔记1中已经保证了 ...

  6. 微信公众号开发笔记3-sdk接入(nodejs)

    另一个2小时 access_token是需要2小时更新一次,在这里,又引入了一个2小时获取一次的字段,这个字段是: jsapi_ticket,这个字段是接入sdk的前提.与access_token类似 ...

  7. 微信公众号开发笔记1-获取Access Token

    获取你的Access Token a)可以采用网址的形式: 用appid和appsecert获得access token,接口为https://api.weixin.qq.com/cgi-bin/to ...

  8. 微信公众号开发C#系列-11、生成带参数二维码应用场景

    1.概述 我们在微信公众号开发C#系列-7.消息管理-接收事件推送章节有对扫描带参数二维码事件的处理做了讲解.本篇主要讲解通过微信公众号开发平台提供的接口生成带参数的二维码及应用场景. 微信公众号平台 ...

  9. 微信公众号开发C#系列-9、多公众号集中管理

    1.概述 通过前面8篇关于微信开发相关文章的学习,我们已经对微信常用开发有了一个比较深入的了解.前面的文章都是基于某一特定公众号的,在现实业务中同一单位个体运营着不至一个公众号,此时就需要对多个公众号 ...

随机推荐

  1. 关于slmgr命令

    需要管理员的权限运行.这个命令可以用来卸载系统的序列号.使系统处于未激活状态.

  2. 百度和谷歌的逆地址解析及GPS、谷歌地图和百度地图坐标之间的转换(python版)

    #!/usr/bin/env python # coding:utf-8 # @author: KaiVen """ GPS坐标转换: WGS-84:是国际标准,GPS坐 ...

  3. jdk7u79linuxx64.tar.gz下载

    jdk1.7下载: 百度云盘链接:https://pan.baidu.com/s/1cQFLnS 密码:wdek

  4. Linux设备驱动故障定位指引与实例

    Linux设备驱动故障定位指引 Linux设备驱动种类繁多,涉及的知识点多,想写一个通用的故障定位方法指引,是个难度颇大且不容易做好的工作.限于笔者的经验,难以避免存在疏漏之处,欢迎大家留言指正补充. ...

  5. [POJ1050] To the Max 及最大子段和与最大矩阵和的求解方法

    最大子段和 Ο(n) 的时间求出价值最大的子段 #include<cstdio> #include<iostream> using namespace std; int n,m ...

  6. UWP:可滚动的PivotHeader

    UWP开发里,Pivot真是个令人又爱又恨的控件.为了实现某些可滚动Header的效果,有些大佬甚至去掉了原本的Header,使用一个ListView或者ListBox自己画Header,不过这样会让 ...

  7. 笔记:Maven 下载和安装

    Windows 安装 下载 Apache Maven,下载地址为 http://maven.apache.org/ 解压缩下载的 ZIP 文件,复制到安装目录 增加环境变量 M2_HOME ,值为 A ...

  8. gulp工程化工具

    gulpfile.js var gulp = require('gulp'); var rename = require('gulp-rename') var pump = require('pump ...

  9. 剑指Kubernetes 揭秘腾讯云的PaaS技术选型策略

    1.前言 Kubernetes 很火,一大批互联网公司早已领先一步,搭建起专有的 PaaS平台,传统企业们看到的 Kubernetes的趋势,亦不甘落后,在试水的道上一路狂奔-- 虽然,Kuberne ...

  10. 【Zabbix】大规模监控误报发生时的处理方案

    今天遇到了这样一件事..Zabbix一直在用的数据库突然间崩溃,无法连接了.在down掉的那一时刻开始,zabbix向管理员报了警.然后随之而来的是铺天盖地的所有主机zabbix agent无法连接的 ...