


Detailed explanation of PHP WeChat custom menu interface, customer service interface, and QR code usage code
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 call custom 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
<?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 Token curl_close($ch);//关闭会话 $jsoninfo = json_decode($output, true);//解码接口数据,将json格式字符串转换成php变量或数组。默认是变量,加true后是数组。 $access_token = $jsoninfo["access_token"]; ?>
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:
<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菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。
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 and send messages to 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 and weather 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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











PHP and Python each have their own advantages, and choose according to project requirements. 1.PHP is suitable for web development, especially for rapid development and maintenance of websites. 2. Python is suitable for data science, machine learning and artificial intelligence, with concise syntax and suitable for beginners.

PHP is widely used in e-commerce, content management systems and API development. 1) E-commerce: used for shopping cart function and payment processing. 2) Content management system: used for dynamic content generation and user management. 3) API development: used for RESTful API development and API security. Through performance optimization and best practices, the efficiency and maintainability of PHP applications are improved.

PHP is a scripting language widely used on the server side, especially suitable for web development. 1.PHP can embed HTML, process HTTP requests and responses, and supports a variety of databases. 2.PHP is used to generate dynamic web content, process form data, access databases, etc., with strong community support and open source resources. 3. PHP is an interpreted language, and the execution process includes lexical analysis, grammatical analysis, compilation and execution. 4.PHP can be combined with MySQL for advanced applications such as user registration systems. 5. When debugging PHP, you can use functions such as error_reporting() and var_dump(). 6. Optimize PHP code to use caching mechanisms, optimize database queries and use built-in functions. 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHP is suitable for web development, with simple syntax and high execution efficiency. 2. Python is suitable for data science and machine learning, with concise syntax and rich libraries.

PHP is still dynamic and still occupies an important position in the field of modern programming. 1) PHP's simplicity and powerful community support make it widely used in web development; 2) Its flexibility and stability make it outstanding in handling web forms, database operations and file processing; 3) PHP is constantly evolving and optimizing, suitable for beginners and experienced developers.

PHP and Python have their own advantages and disadvantages, and the choice depends on project needs and personal preferences. 1.PHP is suitable for rapid development and maintenance of large-scale web applications. 2. Python dominates the field of data science and machine learning.

PHP is suitable for web development, especially in rapid development and processing dynamic content, but is not good at data science and enterprise-level applications. Compared with Python, PHP has more advantages in web development, but is not as good as Python in the field of data science; compared with Java, PHP performs worse in enterprise-level applications, but is more flexible in web development; compared with JavaScript, PHP is more concise in back-end development, but is not as good as JavaScript in front-end development.

PHP is mainly procedural programming, but also supports object-oriented programming (OOP); Python supports a variety of paradigms, including OOP, functional and procedural programming. PHP is suitable for web development, and Python is suitable for a variety of applications such as data analysis and machine learning.
