博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众号开发
阅读量:6507 次
发布时间:2019-06-24

本文共 1516 字,大约阅读时间需要 5 分钟。

近日摸索了公众号的开发流程特记录下来,以供大家参考。

    首先最重要的是你的有一个公众号,具体怎么申请这里就不赘述了。嘿嘿,其实开发调试的时候可以使用临时的调试公众号,这样即使没有公众号也可以进行开发调试了。具体方法如下:打开 然后用自己的微信扫一下,确认即可。系统会自动给你生成一个测试公众号,有简单的管理功能。测试账号.png

 

当然你也可以直接在公众号上进行开发调试。登陆公众号平台后,在左侧菜单底部,选择开发者中心,配置服务器信息(同测试账号)。如需加密可以设置秘钥,需注意,公众账号主动调用API的情况将不受影响。只有被动回复用户的消息时,才需要进行消息加解密。参考:http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html

blob.png

 

1、服务端认证

添加服务器URL后,微信服务器会向你的公众号服务器发送一个认证请求。比如你的微信服务URL是:http://10.10.10.10/wx。微信服务器会发起一个get请求,http://10.10.10.10/wx/?signature=c4b6bed68f55e7bd09e2771674a1989619716054&echostr=3942832202382810879&timestamp=1441531611&nonce=1839804127。公众号服务器校验流程入。

1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,如果相同则校验通过

校验通过后,返回echostr参数的内容给微信服务器,完成认证。

服务端PHP代码参考:

nodeJS代码参考:http://my.oschina.net/fengcunhan/blog/97367

通过认证后,才能完成服务器的配置。

 

2、消息接收和自动回复

当用户向公众号发送消息时,微信服务器会自动讲消息转发到公众号服务器,发起一个post请求到http://10.10.10.10/wx。消息为xml字符串形式上传到服务器。公众号服务器解析出xml字符串中的消息类型,发送用户,以及发送的消息等信息。然后返回一个xml形式的字符串。API参考:http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html

PHP使用$GLOBALS["HTTP_RAW_POST_DATA"]获取消息内容。

nodejs无法自己获取,需要执行读取操作:

1
2
3
4
5
6
7
 
var 
formData=
""
;
     
req.on(
"data"
,
function
(data){
     
formData+=data;
     
});
     
req.on(
"end"
,
function
(){
     
processMessage(formData,res);
     
});

 

3、通过API创建菜单

首先向微信服务器发起一个get请求:

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

获取到access_token,然后发起创建菜单请求。POST(请使用https协议) 

菜单信息以json格式封装。参考:http://mp.weixin.qq.com/wiki/13/43de8269be54a0a6f64413e4dfa94f39.html

转载地址:http://cgwfo.baihongyu.com/

你可能感兴趣的文章
org.springframework.data.redis 一次连接获取特定key所有k-v(pipeline)
查看>>
[译稿]同步复制提议 2010-09
查看>>
windows 自动化目录大纲(各企业架构不一样,按需选择)
查看>>
我的友情链接
查看>>
【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理
查看>>
我的友情链接
查看>>
Java 使用 Redis
查看>>
JPA常用注解
查看>>
Maven学习总结(6)——Maven与Eclipse整合
查看>>
HTML5:理解head
查看>>
oracle
查看>>
java SpringUtil获取bean
查看>>
赛门铁克开启“容灾即服务”时代
查看>>
复杂度归纳--小结
查看>>
PHP学习笔记 第八讲 Mysql.简介和创建新的数据库
查看>>
js获取鼠标位置
查看>>
Mysql
查看>>
跨越企业的“中等收入陷阱”
查看>>
Android 开发者必知的开发资源
查看>>
软件工程技术基础-(软件复用技术)
查看>>