调用token_access需要用到appID和appsecreset(在微信公众号平台开发(一)中已经讲述这两者的由来)
调用代码如下
<?php$appid = "wxbad0b4x543aa0b5e";$appsecret = "ed222a84da15cd24c4bdfa5d9adbabf2";$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";//下面是一个cURL会话过程,通过这个会话可以返回一段字符串{"access_token":"NU7Kr6v9L9TQaqm5NE3OTPctTZx797Wxw4Snd2WL2HHBqLCiXlDVOw2l-Se0I-WmOLLniAYLAwzhbYhXNjb"}这就是我们要获得的Access Token了。在调用高级功能接口的时候就靠它。这个过程用的时候直接引用就好,不需要深究,这个cURL系统相关函数有点多而且复杂。$ch = curl_init();//初始化curl_setopt($ch, CURLOPT_URL, $url);//与url建立对话curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); //进行配置curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //进行配置curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//进行配置$output = curl_exec($ch);//执行对话,获取接口数据Access Tokencurl_close($ch);//关闭会话$jsoninfo = json_decode($output, true);//解码接口数据,将json格式字符串转换成php变量或数组。默认是变量,加true后是数组。$access_token = $jsoninfo["access_token"];?>调用微信高级接口
//创建一个自定义菜单的json字符串 $jsonmenu = "{"button":[{ "name":"关于我们", "sub_button":[ {"type":"click","name":"公司简介","key":"公司简介" }, {"type":"click","name":"社会责任","key":"社会责任" }, {"type":"click","name":"联系我们","key":"联系我们" }]},{ "name":"产品服务", "sub_button":[ {"type":"click","name":"微信平台","key":"微信平台" }, {"type":"click","name":"微博应用","key":"微博应用" }, {"type":"click","name":"手机网站","key":"手机网站" }]},{ "name":"技术支持", "sub_button":[ {"type":"click","name":"文档下载","key":"文档下载" }, {"type":"click","name":"技术社区","key":"技术社区" }, {"type":"click","name":"服务热线","key":"服务热线" }]}] }"; $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;//接口地址$result = https_request($url, $jsonmenu);//与接口建立会话var_dump($result);function https_request($url,$data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output;}//把这段代码加入到上面的调用Access Token接口的代码中就可以实现在微信公众号界面添加菜单的功能。当我们为微信公众号添加菜单后怎么样设置点击菜单时会出现相应的效果呢?
<xml><ToUserName><![CDATA[gh_82479813ed64]]></ToUserName><FromUserName><![CDATA[ojpX_jig-gyi3_Q9fHXQ4rdHniQs]]></FromUserName><CreateTime>1392297442</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[CLICK]]></Event><EventKey><![CDATA[公司简介]]></EventKey></xml>//上面是点击click菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。菜单类型有多种,xml类型差别,详细情况可以在微信公众号平台上查看相应文档。
$data = "{ "touser":"".$openid."", "msgtype":"text", "text": { "content":"Hello World" }}";//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。 $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=".$access_token;$result = https_request($url,$data);var_dump($result);function https_request($url,$data){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($curl); if (curl_errno($curl)) {return "Errno".curl_error($curl); } curl_close($curl); return $result;}客服接口发送图文消息、音乐消息、视频消息具体格式请参看微信公众平台上的开发帮助文档。
$access_token = " xDx0pD_ZvXkHM3oeu5oGjDt1_9HxlA-9g0vtR6MZ-v4r7MpvZYC4ee4OxN97Lr4irkPKE94tzBUhpZG_OvqAC3D3XaWJIGIn0eeIZnfaofO1C3LNzGphd_rEv3pIimsW9lO-4FOw6D44T3sNsQ5yXQ";//假定获取的ACCESS TOKEN为这段代码。//临时二维码$qrcode = "{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 10000}}}";//永久二维码$qrcode = "{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 1000}}}";$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=$access_token";//创建ticket接口$result = https_request($url,$qrcode);$jsoninfo = json_decode($result, true);$ticket = $jsoninfo["ticket"];function https_request($url, $data = null){ $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($curl); curl_close($curl); return $output;}$ticket = "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==";//获取ticket的字符串$url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket);//ticket对面二维码图片代码。$imageInfo = downloadWeixinFile($url);$filename = "qrcode.jpg";$local_file = fopen($filename, "w");if (false !== $local_file){ if (false !== fwrite($local_file, $imageInfo["body"])) {fclose($local_file); }}function downloadWeixinFile($url){ $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_NOBODY, 0); //只取body头 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $package = curl_exec($ch); $httpinfo = curl_getinfo($ch); curl_close($ch); return array_merge(array("body" => $package), array("header" => $httpinfo)); }在服务器空间运行这段代码,浏览器会生成一张二维码图片。