一、概述
本文要讲述的内容一共有以下二点
1.代码实现微信上开发二维码
2.代码实现微信上开发菜单
二、微信上生成二维码操作流程和代码实现
二维码的名称叫做”快速响应吗”;英文名称为”QRcode”;在微信开发者文档中对应账号管理,如下图:
1、微信中的二维码分类
- 临时二维码
- 长期二维码
它们的特征在文档中的描述如下:
2、二维码的获取流程
获取ticket票据
创建二维码ticket
每次创建二维码ticket需要提供一个开发者自行设定的参(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程
遇到问题找错误码
获取ticket票据的流程
1.url地址
2.组合参数, 判断是永久的还是临时的
3.发送请求
4.处理返回数据
获取ticket票据的代码实现:
function getTiket($tmp)
{
$url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$this->getAccessToken();
$data = '{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}';
if($tmp == 'limit'){
$data = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}';
}
$content = $this->request($url,true,'post',$data);
$content = json_decode($content);
$ticket = $content->ticket;
return $ticket;
获取二维码图片的流程
1.url
2.发送请求
3.处理返回结果
获取二维码图片的代码
function getQRcode($ticket)
{
$url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.$ticket;
$content = $this->request($url);
file_put_contents('qrimg.jpg',$content);
}
关于request方法请看http://blog.csdn.net/jiang_xinxing/article/details/60960893这篇博客。
三、微信上生菜单开发流程和代码实现
自定义菜单的接口都在这里面了。
1.自定义菜单的规则
自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“…”代替。
创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
关于自定义菜单的接口详细信息请看微信开发者文档。
2、代码实现菜单的创建
实现流程:
1.url地址
2.组织发送参数
3.发送参数并请求接口
4.处理返回值,返回结果
代码:
function createMenu()
{
$url = 'https://api.weixin.qq.com/cgi-bin/menu/create?access_token='.$this->getAccessToken();
$data = '{
"button":[
{
"type":"click",
"name":"今日资讯",
"key":"news"
},
{
"name":"更多",
"sub_button":[
{
"type":"view",
"name":"搜索",
"url":"http://www.thinkphp.cn/"
},
{
"type":"view",
"name":"主页",
"url":"http://panteng.me/demos/whb/"
},
{
"name": "发送位置",
"type": "location_select",
"key": "rselfmenu_2_0"
}]
}]
}';
$content = $this->request($url,true,'post',$data);
$content = json_decode($content);
if($content->errmsg == 'ok')
{
echo '创建菜单成功!';
}
else
{
echo '创建失败!'.'<br />';
echo '错误码:'.$content->errcode;
}
}
3、代码实现菜单的删除
实现流程
1.url地址
2.请求接口
3.处理返回值
代码
function delMenu()
{
$url = 'https://api.weixin.qq.com/cgi-bin/menu/delete?access_token='.$this->getAccessToken();
$content = $this->request($url);
$content = json_decode($content);
if($content->errmsg == 'ok')
{
echo '删除菜单成功!';
}
else
{
echo '删除失败!'.'<br />';
echo '错误码:'.$content->errcode;
}
}
4、代码实现菜单的查询
实现流程
1.url地址
2.请求接口
3.处理返回数据
代码:
function showMenu()
{
$url = 'https://api.weixin.qq.com/cgi-bin/menu/get?access_token='.$this->getAccessToken();
$content = $this->request($url);
var_dump($content);
}