PHP-WeChat-Aufrufmethode für erweiterte WeChat-Schnittstelle (benutzerdefinierte Menüschnittstelle, Kundendienstschnittstelle, QR-Code)_php-Beispiel

WBOY
Freigeben: 2023-03-03 07:54:01
Original
1122 Leute haben es durchsucht

So rufen Sie die erweiterte WeChat-Schnittstelle auf

Der Unterschied zwischen der erweiterten WeChat-Schnittstelle und der normalen WeChat-Schnittstelle

Der Hintergrundserver kann die WeChat-Schnittstelle aufrufen, um mit WeChat-Benutzern zu kommunizieren. Diese Schnittstellen sind grundlegende Schnittstellen. Sie können sie ohne Zahlung oder Identitätsauthentifizierung aufrufen. Es gibt jedoch einige erweiterte Schnittstellen. Ihr offizielles WeChat-Konto muss über bestimmte Berechtigungen verfügen, z. B. über die WeChat-Authentifizierung, um erweiterte Funktionen wie benutzerdefinierte Menüs und WeChat-Zahlungen aufzurufen.
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

Um die erweiterte WeChat-Schnittstelle aufzurufen, müssen Sie zuerst eine token_access-Schnittstelle aufrufen. Nur wenn Sie diese Schnittstelle zuerst aufrufen, können Sie andere erweiterte Schnittstellen aufrufen.
Wie folgt: Schematische Darstellung der Verbindung der erweiterten Schnittstelle


Der Aufruf von token_access erfordert appID und appsecreset (der Ursprung dieser beiden wurde in der Entwicklung der WeChat-Plattform für öffentliche Konten (1) beschrieben)

Der Aufrufcode lautet wie folgt

<&#63;php
$appid = "wxbad0b4x543aa0b5e";
$appsecret = "ed222a84da15cd24c4bdfa5d9adbabf2";
$url = "https://api.weixin.qq.com/cgi-bin/token&#63;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"];

&#63;>

Nach dem Login kopieren

Erweiterte WeChat-Schnittstelle aufrufen

1), rufen Sie die benutzerdefinierte Menüfunktion auf

 //创建一个自定义菜单的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&#63;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接口的代码中就可以实现在微信公众号界面添加菜单的功能。

Nach dem Login kopieren

Wenn wir dem offiziellen WeChat-Konto ein Menü hinzufügen, wie stellt man dann den entsprechenden Effekt ein, wenn man auf das Menü klickt?
Dabei handelt es sich um einen anderen XML-Typ 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菜单的数据传递类型,数据会发送给后台服务器,然后服务器做出响应。
Nach dem Login kopieren

Es gibt viele Menütypen und die XML-Typen sind unterschiedlich. Weitere Informationen finden Sie in den entsprechenden Dokumenten auf der offiziellen WeChat-Kontoplattform.

*Was ich hier erklären möchte, ist, dass die Ausführung dieses PHP-Codes in jedem Serverbereich auf den WeChat-Server zugreifen kann, solange Sie über die AppID und das Appsecret des offiziellen WeChat-Kontos verfügen Rufen Sie die entsprechende Funktion auf. Dies muss nicht unbedingt der Fall sein. Sie muss 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 benutzerdefinierter Menüs.

2), Kundendienstschnittstelle anrufen

Wenn WeChat-Benutzer aktiv Nachrichten an öffentliche WeChat-Konten senden (einschließlich des Sendens von Nachrichten, des Klickens auf benutzerdefinierte Menüklickereignisse, des Abonnierens von Ereignissen, des Scannens von QR-Codes und von Zahlungserfolgsereignissen), leitet WeChat die Nachrichtendaten an Entwickler weiter. Entwickler können innerhalb eines bestimmten Zeitraums Nachrichten über die Kundendienstschnittstelle aufrufen und Nachrichten an Benutzer senden, indem sie ein JSON-Datenpaket veröffentlichen.

Code kopieren Der Code lautet wie folgt:
$access_token = "nFX6GFsspSLBKJLgMQ3kj1YM8_FchRE7vE2ZOIlmfiCOQntZKnBwuOen2GCBpFHBYS4QLGX9fGoVf A36tft ME2sRiYsKPzgGQKU-ygU7x8cgy_1tlQ4n1mhSumwQEGy6PK6rdTdo8O8GROuGE3Hiag";
$openid = "o7Lp5t6n59DeX3U0C7Kric9qEx-Q";//WeChat-Benutzer haben alle eine openID

Die folgende Abbildung zeigt, wie Sie openID erhalten.

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

Nach dem Login kopieren

Die Kundendienstschnittstelle sendet grafische Nachrichten, Musiknachrichten und Videonachrichten für bestimmte Formate. Weitere Informationen finden Sie im Entwicklungshilfedokument auf der öffentlichen WeChat-Plattform.
Die Kundendienstschnittstelle kann mit der Nachrichtenschnittstelle gemischt werden.

Hier verstehen Sie möglicherweise 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 können Sie jedoch jedes Mal auf andere Songs antworten, was die MySQL-Datenbank betrifft.

Etwas einfacher: eine öffentliche WeChat-Plattform zur Überprüfung der Expresszustellung inklusive 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. Ersterer hat eine Ablaufzeit von bis zu 1800 Sekunden.
Um einen QR-Code zu generieren, müssen Sie 3 Schnittstellen aufrufen,
Das erste ist access_token
Die zweite besteht darin, eine Ticketschnittstelle
zu generieren Die dritte Möglichkeit besteht darin, das über die zweite Schnittstelle generierte Ticket gegen das QR-Code-Bild einzutauschen.

$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&#63;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&#63;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)); 
}

Nach dem Login kopieren

Führen Sie diesen Code im Serverbereich aus und der Browser generiert ein QR-Code-Bild.

Erhalten Sie nicht-WeChat-funktionale Schnittstellen, z. B. zum Abrufen von Verkehrsinformationen und Wettervorhersagen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird. Ich hoffe auch, dass jeder Script House unterstützt.

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!