So rufen Sie die erweiterte WeChat-Schnittstelle auf
Der Unterschied zwischen der erweiterten WeChat-Schnittstelle und der normalen WeChat-Schnittstelle
Der Hintergrundserver kann WeChat-Schnittstellen aufrufen, um Nachrichten mit WeChat-Benutzern zu kommunizieren. Bei diesen Schnittstellen handelt es sich um grundlegende Schnittstellen, und Sie können sie ohne Bezahlung oder Identitätsauthentifizierung aufrufen. Es gibt jedoch einige erweiterte Schnittstellen. Ihr offizielles WeChat-Konto muss bestimmte Berechtigungen erfüllen, z. B. die WeChat-Authentifizierung, um das benutzerdefinierte Menü aufzurufen, WeChat-Zahlungen und andere erweiterte Funktionen.
Das Testkontosystem öffentlicher WeChat-Konten kann diese erweiterten Schnittstellen jedoch anwenden (mit Ausnahme von Schnittstellen, die Transaktionen wie WeChat-Zahlungen beinhalten).
Aufruf der erweiterten WeChat-Schnittstelle
Aufruf der erweiterten WeChat-Schnittstelle muss zuerst eine token_access-Schnittstelle aufrufen erweiterte Schnittstellen aufgerufen werden.
Wie folgt: Schematische Darstellung der Verbindung der erweiterten Schnittstelle
Der Aufruf von token_access erfordert appID und appsecreset (wird bereits bei der Entwicklung der WeChat-Plattform für öffentliche Konten verwendet (1 ) Sagen Sie den Ursprung der beiden)
Der Aufrufcode lautet wie folgt
<?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"]; ?>
Aufruf der erweiterten WeChat-Schnittstelle
1), Aufruf die benutzerdefinierte Menüfunktion
//创建一个自定义菜单的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接口的代码中就可以实现在微信公众号界面添加菜单的功能。
Wenn wir dem offiziellen WeChat-Konto ein Menü hinzufügen, wie stellt man den entsprechenden Effekt ein, wenn man auf das Menü klickt?
Dabei handelt es sich um eine weitere XML-Art der Datenübertragung:
<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菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。
Es gibt viele Menütypen und die XML-Typen sind unterschiedlich. Einzelheiten finden Sie in den entsprechenden Dokumenten auf der öffentlichen Kontoplattform WeChat.
*Was ich hier erklären möchte, ist, dass Sie den WeChat-Server betreten können, um die entsprechende Funktion aufzurufen, solange Sie über die AppID und das Appsecret des offiziellen WeChat-Kontos verfügen indem Sie diesen PHP-Code in einem beliebigen Serverbereich ausführen. Er muss nicht unter einem Server mit Token-Verifizierung ausgeführt werden. Die Token-Überprüfung dient dazu, dass der Backend-Server ermittelt, ob die Datenquelle vom WeChat-Server stammt, und hat wenig mit dem Aufrufen der High-Level-Schnittstelle des WeChat-Servers zu tun.
Die PHP-Datei muss auf dem Server ausgeführt werden, um eine Wirkung zu erzielen.
Der Aufruf anderer erweiterter Schnittstellen erfolgt auf die gleiche Weise wie der Aufruf des benutzerdefinierten Menüs.
2), rufen Sie die Kundendienstschnittstelle auf
Wenn ein WeChat-Benutzer aktiv eine Nachricht an ein öffentliches WeChat-Konto sendet (einschließlich Senden einer Nachricht, Klicken auf ein benutzerdefiniertes Menüklickereignis, Abonnieren eines Ereignis und Scannen eines QR-Codes, Zahlungserfolgsereignis) WeChat sendet die Nachrichtendaten an den Entwickler. Entwickler können innerhalb eines bestimmten Zeitraums Nachrichten über die Kundendienstschnittstelle aufrufen und Nachrichten an Benutzer senden, indem sie ein JSON-Datenpaket veröffentlichen.
Der Code lautet wie folgt:
$access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVfA36tftME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag"; $openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";//微信用户都有一个openID
Die folgende Abbildung zeigt, wie man openID erhält.
$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; }
Informationen zur Kundendienstoberfläche zum Senden von grafischen Nachrichten, Musiknachrichten und Videonachrichten finden Sie unter die öffentliche WeChat-Plattform für spezifische Formatentwicklungshilfedokumentation.
Kundendienstschnittstelle kann mit Nachrichtenschnittstelle gemischt werden.
Hier verstehen Sie vielleicht nicht, warum Sie eine solche Kundendienstschnittstelle benötigen, da Sie über die passive Antwortnachrichtenschnittstelle XML-Daten direkt an Benutzer senden können? Es versteht sich, dass eine passive Antwortnachricht eine einmalige Antwort auf dieselbe Nachricht nur einmal ist. Wenn Sie den Namen eines Sängers in eine Musikplattform eingeben, wird Ihnen die per passive Antwort gesendete Nachricht immer mit demselben Lied antworten. Über die Kundendienstschnittstelle, die eine MySQL-Datenbank umfasst, können Sie jedoch jedes Mal auf andere Songs antworten.
Etwas einfacher, eine öffentliche WeChat-Plattform zum Anzeigen von Expresslieferungen einschließlich der Adresse. Jedes Mal, wenn Sie dieselbe Bestellnummer eingeben, kann der Hintergrund jedes Mal auf den Ort der Bestellung antworten (für denselben Text können unterschiedliche Antworten erfolgen), genau wie bei einer manuellen Antwort. Dies ist die Kundendienstoberfläche.
3), QR-Code-Schnittstelle generieren
Es gibt zwei Arten von QR-Codes, nämlich temporäre QR-Codes und permanente QR-Codes. Ersteres hat eine Ablaufzeit von bis zu 1800 Sekunden.
Sie müssen 3 Schnittstellen aufrufen, um einen QR-Code zu generieren.
Die erste ist access_token.
Die zweite besteht darin, eine Ticketschnittstelle zu generieren.
Die dritte besteht darin, über die zweite Schnittstelle generierte Tickets gegen 2 QR einzutauschen Codebild.
$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)); }
Führen Sie diesen Code im Serverbereich aus und der Browser generiert ein QR-Code-Bild.
Erhalten Sie funktionale Schnittstellen, die nicht zu WeChat gehören, z. B. zum Abrufen von Verkehrsinformationen und Wettervorhersage.
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der benutzerdefinierten Menüoberfläche von PHP WeChat, der Kundendienstoberfläche und des QR-Code-Nutzungscodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!