700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php微信高级接口调用方法(自定义菜单接口 客服接口 二维码)【PHP】

php微信高级接口调用方法(自定义菜单接口 客服接口 二维码)【PHP】

时间:2019-02-28 05:29:15

相关推荐

php微信高级接口调用方法(自定义菜单接口 客服接口 二维码)【PHP】

后端开发|php教程

php微信高级接口调用,php自定义菜单接口,php微信客服接口,php微信二维码生成

后端开发-php教程

怎么调用微信高级接口

传奇网站源码套,vscode开发bs,ubuntu srv,tomcat页面更新,sqlite 表增加字段,jquery 图片管理插件,前端界面运用什么框架技术,爬虫编写交易程序,php get http,国内seo优化代理,手机版论坛网站源码,百度网页源码,qq界面模板lzw

微信高级接口和微信普通接口的区别

php crm 源码,vscode调试报错,ubuntu ddate,tomcat渗透思路,sqlite分组统计序号,显示日历的日期插件,前端框架的网站有哪些,python爬虫收集新闻代码,php ecmall,seo优化流量提升,生成论坛网站源码,超级网页访问模块3.0 源码,dz手机模板在哪里设置lzw

后台服务器可以调用微信的接口与微信用户进行讯息的通信,这样的行为就是在调用微信的接口,这些接口是基础接口,你不需要任何付费行为或者身份认证行为就可以调用。但是有一些高级接口,你的微信公众号必须达到一定的权限如通过微信认证才能调用自定义菜单、微信支付等高级功能。

不过微信公众帐号的测试号系统可以应用这些高级接口(微信支付等涉及交易的接口除外)。

android pn源码,vscode自动修复,ubuntu安装官网软件,购买tomcat服务,vb代码链接sqlite,dede筛选插件,最新前端开发框架搭建,爬虫抓视频代码,php wap,常州seo顾问,明星网站模板手机版,导航跟随网页下拉,简单购物商城html模板,页面异常veh易语言,高校教务管理系统源代码,微祝福小程序lzw

微信高级接口的调用

微信高级接口的调用需要先调用一个token_access接口,只有先调用这个接口才能调用其它高级接口。

如下:连通高级接口示意图

调用token_access需要用到appID和appsecreset(在微信公众号平台开发(一)中已经讲述这两者的由来)

调用代码如下

调用微信高级接口

1)、调用自定义菜单功能

//创建一个自定义菜单的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./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类型的数据传递:

<![CDATA[gh_82479813ed64]]><![CDATA[ojpX_jig-gyi3_Q9fHXQ4rdHniQs]]>1392297442<![CDATA[event]]><![CDATA[CLICK]]><![CDATA[公司简介]]>//上面是点击click菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。

菜单类型有多种,xml类型差别,详细情况可以在微信公众号平台上查看相应文档。

*这里要说明的是只要你有微信公众号的appID和appsecret,在任何服务器空间运行这段php代码都可以进入微信服务器调用相应功能,不一定非要在进行了token验证的服务器下运行。token验证是为了后台服务器进行判断数据来源是否是来自微信服务器,与调用微信服务器的高级接口并没有多大的关联。

php文件一定要在服务器运行才会产生效果。

其它高级接口的调用都同调用自定义菜单一样。

2)、调用客服接口

当微信用户主动发消息 给微信公众帐号的时候(包括发送信息、单击自定义菜单click事件、订阅事件、扫描二维码、支付成功事件)微信会把消息数据推送给开发者。开发者在一段时间内可以调用客服接口消息,通过post一个JSON数据包来发送消息给用户。

$access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVfA36tftME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag";

$openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";//微信用户都有一个openID

下图所示即为openID的获取方式。

$data = { "touser":".$openid.\", "msgtype":"text", "text": { "content":"Hello World" }};//通过基础消息接口发送的数据是XML格式的,但是调用客服接口发送的数据是json数据格式,更易传输。 $url = "https://api./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;}

客服接口发送图文消息、音乐消息、视频消息具体格式请参看微信公众平台上的开发帮助文档。

客服接口可以和消息接口混合使用。

这里大家可能不明白既然可以直接通过被动响应消息的接口发送xml数据给用户,为什么还需要这样一个客服接口?可以这样理解,被动响应消息是一次性的只能回复一次相同的消息。如你向一个音乐平台输入一个歌星名称,通过被动响应方式发送的消息永远只会回复你一首相同的歌。但是通过客服接口方式可以每次回复不同的 歌曲,这涉及到MySQL数据库。

再简单一点,一个查看快递包括地址的微信公众平台。你每次输入同一个订单编号,后台却能够回复订单每次所在的位置(针对同样的文本却可以做出不同的回应)就像是人工回复一样,这就是客服接口 。

3)、生成二维码接口

二维码类型分两种,分别是临时二维码eh 和永久二维码,前者与过期时间,最长是1800s。

生成二维码你需要调用3个接口,

第一个是access_token

第二个是生成ticket接口

第三个是通过第二个接口生成的ticket来换取二维码图片。

$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./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./cgi-bin/showqrcode?ticket=".urlencode($ticket);//ticket对面二维码图片代码。$imageInfo = downloadWeixinFile($url);$filename = "qrcode.jpg" alt="php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)【PHP】" title="php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)【PHP】";$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(ody => $package), array(header => $httpinfo)); }

在服务器空间运行这段代码,浏览器会生成一张二维码图片。

获取非微信功能接口,比如获取交通信息、天气预报。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。