接口调用凭证access_token
-
PHP发起网络请求方式
- file_get_contents
- fsockopen
-
curl
-
curl实现get
-
curl实现post
-
curl实现文件上传
-
终极函数
function http_request($url,$ret='',$file=''){ if (!empty($file)) { // 有文件上传 //php5.5之前 '@'.$file;就可以进地文件上传 //$ret['pic'] = '@'.$file; //php5.6之后用此方法 $ret['pic'] = new CURLFile($file); } // 初始化 $ch = curl_init(); //相关设置 //设置请求的URL地址 curl_setopt($ch,CURLOPT_URL,$url); //请求头关闭 curl_setopt($ch,CURLOPT_HEADER,0); //请求的得到的结果不直接输出,而是以字符串结果返回 必写 curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //设置请求的超时时间 单位秒 curl_setopt($ch,CURLOPT_TIMEOUT,30); //设置浏览器型号 curl_setopt($ch,CURLOPT_USERAGENT,'MSIE001'); //证书不检查 curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); //设置为post请求 if($ret){ # 如果 $ret不为假则是post提交 # 开启post请求 curl_setopt($ch,CURLOPT_POST,1); # post请求的数据 curl_setopt($ch,CURLOPT_POSTFIELDS,$ret); } // 发起请求 $data = curl_exec($ch); // 有没有发生异常 if(curl_errno($ch) > 0){ // 把错误发送给客户端 echo curl_error($ch); $data = ''; } // 关闭请求 curl_close($ch); return $data; }
PHP发起网络请求步走
初始化、相关设置、发送请求、关闭资源
获取access_token
access_toke是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用它。
access_token的存储至少要保留512个字符空间。
access_token的有效期目前为2个小时。
access_token的每天请求的次数为2000次。
根据官方所提的要求,那么我们在实现工作,一定要缓存起来我们access_token。
缓存的方案
数据库、redis、mongodb、memcache、文件缓存-
文档地址
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
-
推荐使用 memcache缓存
-
效果
//telnet 下查看memcache缓存的列表信息
stats items
STAT items:1:number 2
STAT items:1:age 3054538109
STAT items:1:evicted 0
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:6:number 1
STAT items:6:age 3054538477
STAT items:6:evicted 0
STAT items:6:evicted_nonzero 0
STAT items:6:evicted_time 0
STAT items:6:outofmemory 0
STAT items:6:tailrepairs 0
//查看块中的缓存列表
stats cachedump 6 1
ITEM wx3e7552f91168c93f_key [157 b; 1544673130 s]
get wx3e7552f91168c93f_key
//删除
delete wx3e7552f91168c93f_key
自定义菜单
-
自定义菜单概述
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
微信公众号默认没有开通底部是没有菜单功能,需要使用者自行来创建开通。
-
注意点
- 自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。
- 一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。
- 创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
-
按钮事件
- 注
最常用的自定义类型按钮为:view 它相当有html中的a作用;view想跳转到指定的URL,需要认证后的公众号才可以
- 注
-
自定义菜单创建
-
自定义菜单数据准备-方式一
-
自定义菜单数据准备-方式二
-
生成菜单文件
-
执行
-
效果
-
自定义菜单删除接口
-
删除成功
-
自定义菜单事件推送.
事件,大家一定要牢记 click和view 只有认证的公众号使用view事件才能跳转到任意url中。
-
效果
新增素材
公众号经常有需要用到一些多媒体素材的场景,例如在使用接口特别是发送消息时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。素材管理接口对所有认证的订阅号和服务号开放。
-
新增临时素材
- 注意点
1、临时素材media_id是可复用的。
2、媒体文件在微信后台保存时间为3天,即3天后media_id失效。
3、上传临时素材的格式、大小限制与公众平台官网一致。
4、图片(image): 2M,支持PNG\JPEG\JPG\GIF格式
5、语音(voice): 2M,播放长度不超过60s,支持AMR\MP3格式
6、视频(video): 10MB,支持MP4格式
7、缩略图(thumb):64KB,支持JPG格式
- 注意点
-
新增永久素材
对于常用的素材,开发者可通过本接口上传到微信服务器,永久使用。
如:企业logo,小图标,公众号有些场景,规定只能使用永久素材。请注意
1、最近更新:永久图片素材新增后,将带有URL返回给开发者,开发者可以在腾讯系域名内使用(腾讯系域名外使用,图片将被屏蔽)。
2、公众号的素材库保存总数量有上限:图文消息素材、图片素材上限为5000,其他类型为1000。
3、素材的格式大小等要求与公众平台官网一致:
4、图片(image): 2M,支持bmp/png/jpeg/jpg/gif格式
5、语音(voice):2M,播放长度不超过60s,mp3/wma/wav/amr格式
6、视频(video):10MB,支持MP4格式
7、缩略图(thumb):64KB,支持JPG格式注
1、永久素材的使用一定要谨慎,用于公众号规则我们必须用的地方和企业LOGO。
2、临时素材我们可以随便用。
3、说明:永久素材上传时,它的上传的文件域的名称必须为 media
-
实现过程
-
第1步:制作出文件上传的表单html
-
第2步:接受表单数据实现文件上传功能
-
第3步:实现把本服务器中的图片资源上传到公众号平台去
临时接口说明
-
-
永久素材接口说明
-
编写实现上传到公众号平台的接口代码
-
实现上传
-
入库
-
-
效果
客服消息
客服消息是一种主动发送的消息模式,这个就是说微信用户给公众号发信息,在发送消息后,公众号可以点对点的进行回复!!
但是也是有条件的限制,只有激活用户在48小时之内,可以无限制,发送消息。
-
发送客服消息
-
如何让用户激活
-
实现过程
-
第1步:制作表单页
-
第2步:接受数据
-
第3步:实现客服主动发消息功能、编写接口代码
-
实现互通
-
-
效果
生成场景二维码
-
场景二维概述
为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。
-
场景二维码作用
- 解决关注时来源问题
-
使用的场景
- 加盟
- 活动场景
- 分销系统
-
目前有2种类型的二维码
- 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
- 永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
-
生成临时和永久二维码
- 获取ticket(凭据)
- 通过ticket(凭据)换取二维码图片资源
- 保存二维码图片资源到本机