实现简单的微信公众号开发



1.准备工作


首先你得有一个公众号


打开  mp.weixin.qq.com 注册一个微信公众平台账号 

每个邮箱仅能申请一种帐号:公众号或企业号


我们创建一个公众号,个人性质的可以创建一个订阅号

进入订阅号 我们可以创建一个自动回复 或者自定义菜单 

也可以进入开发者模式

但是启用开发者模式之后 编辑模式的功能就不可以用啦

然后我们在权限部分发现 订阅号给予的权限相对较少 次数限制比较严重

所以我们在测试开发的时候 可以使用微信测试号进行开发


测试号如何使用呢

打开浏览器,这里以IE为例。输入:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

用手机登录你的微信,使用微信中的“扫一扫”功能,扫描上面网页中的二维码

点击确认登录,登录成功!

网页中提供了测试的微信号,及二维码等信息。

填写微信帐号连接的URL网址,如果没有,可以购买一个云服务器。

购买云服务器请自行百度

然后输入你的令牌号到Token(任意字符串,必须与你的URL网页中的Token值相同)

在手机微信号扫描网页中的二维码,就可以将你的公众测试帐号添加到微信的订阅号里了。

测试号在接口调用上几乎没有限制

不过一天只能调用2000次access_token 一点要记得做缓存 !!不然不知不觉就超了


2.进入开发

准备工作做完了,我们有了一个测试公众号 服务器配置也填写好了

下一步要做的就是 验证服务器的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。


加密流程:

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
很显然 他加密和解密的流程是一样的 用到了对称加密技术

在验证的时候需要注意的是 定义一个 Token常量 必须要跟上一步填写的Token值一致


服务器验证成功之后 我们在调用微信接口的时候 都需要与微信进行一个安全验证

验证时候 微信会给我们一个access_token 进行安全验证

所以我们在做开发时 第一步要获取微信的 access_token

那么 如何获取呢


我们只要get方式请求下面这个链接

里面填写你的APPID 和 APPSECRET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
注意调用所有微信接口时均需使用https协议

返回下面这个样子的json串

{"access_token":"ACCESS_TOKEN","expires_in":7200}

我们可以看出来 ACCESS_TOKEN的失效时间为7200秒 所以我们可以给他设置一个小于7200的缓存来防止重复调用


然后我们先来创建一个 自定义菜单


http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

参数说明

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过256字节
media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id

只要填上正确的参数 微信自定义菜单就修改成功了!


3.被动图片回复消息

首先你要有图片

所以 先新增一个临时素材

http请求方式: POST/FORM,需使用https
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):
curl -F [email protected] "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"

参数说明

参数 是否必须 说明
access_token 调用接口凭证
type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
media form-data中媒体文件标识,有filename、filelength、content-type等信息

返回说明

正确情况下的返回JSON数据包结果如下:

{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
参数 描述
type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)
media_id 媒体文件上传后,获取时的唯一标识
created_at 媒体文件上传时间戳

错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):

{"errcode":40004,"errmsg":"invalid media type"}


最后获取用户信息

请求方法

http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语


微信开发其实非常简单 ,多看接口文档

1.准备工作


首先你得有一个公众号


打开  mp.weixin.qq.com 注册一个微信公众平台账号 

每个邮箱仅能申请一种帐号:公众号或企业号


我们创建一个公众号,个人性质的可以创建一个订阅号

进入订阅号 我们可以创建一个自动回复 或者自定义菜单 

也可以进入开发者模式

但是启用开发者模式之后 编辑模式的功能就不可以用啦

然后我们在权限部分发现 订阅号给予的权限相对较少 次数限制比较严重

所以我们在测试开发的时候 可以使用微信测试号进行开发


测试号如何使用呢

打开浏览器,这里以IE为例。输入:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

用手机登录你的微信,使用微信中的“扫一扫”功能,扫描上面网页中的二维码

点击确认登录,登录成功!

网页中提供了测试的微信号,及二维码等信息。

填写微信帐号连接的URL网址,如果没有,可以购买一个云服务器。

购买云服务器请自行百度

然后输入你的令牌号到Token(任意字符串,必须与你的URL网页中的Token值相同)

在手机微信号扫描网页中的二维码,就可以将你的公众测试帐号添加到微信的订阅号里了。

测试号在接口调用上几乎没有限制

不过一天只能调用2000次access_token 一点要记得做缓存 !!不然不知不觉就超了


2.进入开发

准备工作做完了,我们有了一个测试公众号 服务器配置也填写好了

下一步要做的就是 验证服务器的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数 描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。


加密流程:

加密/校验流程如下:
1. 将token、timestamp、nonce三个参数进行字典序排序
2. 将三个参数字符串拼接成一个字符串进行sha1加密
3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
很显然 他加密和解密的流程是一样的 用到了对称加密技术

在验证的时候需要注意的是 定义一个 Token常量 必须要跟上一步填写的Token值一致


服务器验证成功之后 我们在调用微信接口的时候 都需要与微信进行一个安全验证

验证时候 微信会给我们一个access_token 进行安全验证

所以我们在做开发时 第一步要获取微信的 access_token

那么 如何获取呢


我们只要get方式请求下面这个链接

里面填写你的APPID 和 APPSECRET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
注意调用所有微信接口时均需使用https协议

返回下面这个样子的json串

{"access_token":"ACCESS_TOKEN","expires_in":7200}

我们可以看出来 ACCESS_TOKEN的失效时间为7200秒 所以我们可以给他设置一个小于7200的缓存来防止重复调用


然后我们先来创建一个 自定义菜单


http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

参数说明

参数 是否必须 说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过256字节
media_id media_id类型和view_limited类型必须 调用新增永久素材接口返回的合法media_id

只要填上正确的参数 微信自定义菜单就修改成功了!


3.被动图片回复消息

首先你要有图片

所以 先新增一个临时素材

http请求方式: POST/FORM,需使用https
https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):
curl -F [email protected] "https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"

参数说明

参数 是否必须 说明
access_token 调用接口凭证
type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb)
media form-data中媒体文件标识,有filename、filelength、content-type等信息

返回说明

正确情况下的返回JSON数据包结果如下:

{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}
参数 描述
type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)
media_id 媒体文件上传后,获取时的唯一标识
created_at 媒体文件上传时间戳

错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):

{"errcode":40004,"errmsg":"invalid media type"}


最后获取用户信息

请求方法

http:GET(请使用https协议)
https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明

参数 描述
access_token 网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid 用户的唯一标识
lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语


微信开发其实非常简单 ,多看接口文档

你可能感兴趣的:(微信开发)