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 |
只要填上正确的参数 微信自定义菜单就修改成功了!
首先你要有图片
所以 先新增一个临时素材
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 |
只要填上正确的参数 微信自定义菜单就修改成功了!
首先你要有图片
所以 先新增一个临时素材
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 英语 |
微信开发其实非常简单 ,多看接口文档