How to call the WeChat advanced interface
The difference between the WeChat advanced interface and the WeChat ordinary interface
The background server can Calling WeChat interfaces to communicate messages with WeChat users is calling WeChat interfaces. These interfaces are basic interfaces, and you can call them without any payment or identity authentication. However, there are some advanced interfaces. Your WeChat official account must have certain permissions, such as passing WeChat authentication to callcustom menu, WeChat payment and other advanced functions.
However, the test account system of WeChat public accounts can apply these advanced interfaces (except for interfaces involving transactions such as WeChat payment).
Call of WeChat advanced interface
#Call of WeChat advanced interface requires calling a token_access interface first. Only by calling this interface first can other advanced interfaces be called. interface.
As follows: Schematic diagram of connecting the advanced interface
Calling token_access requires appID and appsecreset (already used in WeChat public account platform development (1) Tell the origin of the two)
The calling code is as follows
Calling the WeChat advanced interface
1), calling the custom menu function
//创建一个自定义菜单的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接口的代码中就可以实现在微信公众号界面添加菜单的功能。
After we add a menu to the WeChat official account, how to set the corresponding effect when clicking on the menu?
This involves another XML type of data transfer:
//上面是点击click菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。 1392297442
There are many menu types, and the XML types are different. For details, you can view the corresponding documents on the WeChat public account platform.
*What I want to explain here is that as long as you have the appID and appsecret of the WeChat official account, you can enter the WeChat server to call the corresponding function by running this php code in any server space. It does not have to be run under a server with token verification. Token verification is for the backend server to determine whether the data source is from the WeChat server, and has little to do with calling the high-level interface of the WeChat server.
The php file must be run on the server to have any effect.
The calling of other advanced interfaces is the same as calling the custom menu.
2), call the customer service interface
When a WeChat user actively sends a message to a WeChat public account (including sending a message, clicking on a custom menu click event, subscribing to an event, and scanning a QR code , payment success event) WeChat will push the message data to the developer. Developers can call customer service interface messages within a period of time andsend messagesto users by posting a JSON data packet.
The code is as follows:
$access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVfA36tftME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag"; $openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";//微信用户都有一个openID
The figure below shows how to obtain openID.
##
$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; }
Customer service interface can be mixed with message interface.
MySQL database.
You need to call 3 interfaces to generate a QR code,
The first is access_token
The second is to generate a ticket interface
The third is to exchange tickets generated through the second interface for 2 QR code picture.
$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)); }
Obtain non-WeChat functional interfaces, such as obtaining traffic information andweather forecast.
The above is the detailed content of Detailed explanation of PHP WeChat custom menu interface, customer service interface, and QR code usage code. For more information, please follow other related articles on the PHP Chinese website!