Heim Backend-Entwicklung PHP-Tutorial 微信公众平台-发送被动响应消息-PHP示范

微信公众平台-发送被动响应消息-PHP示范

Jun 13, 2016 am 11:45 AM
gt lt

微信公众平台-发送被动响应消息-PHP示例

<?php $testObj = new Test();if(!empty($_GET['echostr'])){		$testObj->valid();	}else{		$testObj->responseMsg();}exit;class Test{	/**	 * 绑定url、token信息	 */	public function valid(){        $echoStr = $_GET["echostr"];        if ($this->checkSignature()) { 			echo $echoStr;        } 		exit();    }    /**     * 检查签名,确保请求是从微信发过来的     */	private function checkSignature()	{        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];	        				$token = "test123";//与在微信配置的token一致,不可泄露		$tmpArr = array($token, $timestamp, $nonce);		sort($tmpArr);		$tmpStr = implode( $tmpArr );		$tmpStr = sha1( $tmpStr );				if( $tmpStr == $signature ){			return true;		}else{			return false;		}	}    /**     * 接收消息,并自动发送响应信息     */    public function responseMsg(){    	    	//验证签名    	if ($this->checkSignature()){	    	$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];			$this->log_request_info();		      	//提取post数据			if (!empty($postStr)){	              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);	                $fromUsername = $postObj->FromUserName;//发送人	                $toUsername = $postObj->ToUserName;//接收人	                $MsgType = $postObj->MsgType;//消息类型	                $MsgId = $postObj->MsgId;//消息id	                $time = time();//当前时间做为回复时间	                	                //如果是文本消息(表情属于文本信息)	                if($MsgType == 'text'){		                $content = trim($postObj->Content);//消息内容						if(!empty( $content )){														//如果文本内容是图文,则回复图文信息,否则回复文本信息		                	if($content == "图文"){			                				                	//回复图文消息,ArticleCount图文消息个数,多条图文消息信息,默认第一个item为大图			                	$ArticleCount = 2; 			                	$newsTpl = "<xml>								<tousername></tousername>								<fromusername></fromusername>								<createtime>%s</createtime>								<msgtype></msgtype>								<articlecount>%s</articlecount>								<articles>								<item>								<title></title> 								<description></description>								<picurl></picurl>								<url></url>								</item>								<item>								<title></title>								<description></description>								<picurl></picurl>								<url></url>								</item>								</articles>								</xml>";			                	$resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time, 'news', 			                				$ArticleCount,'我是图文信息','我是描述信息','http://www.test.com/DocCenterService/image?photo_id=236',			                				'http://www.test.com','爱城市网正式开通上线','描述2','http://jn.test.com/ac/skins/img/upload/img/20131116/48171384568991509.png',			                				'http://www.test.com');				                echo $resultStr;			                 	$this->log($resultStr);		                	}else{		                		//回复文本信息				                $textTpl = "<xml>											<tousername></tousername>											<fromusername></fromusername>											<createtime>%s</createtime>											<msgtype></msgtype>											<content></content>											<funcflag>0</funcflag>											</xml>";             			                	$contentStr = '你发送的信息是:接收人:'.$toUsername.',发送人:'.$fromUsername.',消息类型:'.$MsgType.',消息内容:'.$content.' www.icity365.com';			                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);			                	echo $resultStr;			                	$this->log($resultStr);		                	}		                }else{		                	echo "Input something...";		                	$this->log($resultStr);		                }	                			              //如果是图片消息	                }elseif ($MsgType == 'image'){			            $MediaId = $postObj->MediaId;//图片消息媒体id,可以调用多媒体文件下载接口拉取数据。			            $imageTpl = "<xml>									<tousername></tousername>									<fromusername></fromusername>									<createtime>%s</createtime>									<msgtype></msgtype>									<image>									<mediaid></mediaid>									</image>									</xml>";	                	$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $MsgType, $MediaId);	                	echo $resultStr;			            $this->log("自动响应图片信息");	                	$this->log($resultStr);	                		                //如果是视频	                }else if($MsgType == 'video'){	                	$MediaId = $postObj->MediaId;//视频消息媒体id,可以调用多媒体文件下载接口拉取数据。	                	$ThumbMediaId = $postObj->ThumbMediaId;//视频消息缩略图的媒体id,可以调用多媒体文件下载接口拉取数据。 						$videoTpl = "<xml>									<tousername></tousername>									<fromusername></fromusername>									<createtime>%s</createtime>									<msgtype></msgtype>									<video>									<mediaid></mediaid>									<thumbmediaid></thumbmediaid>									<title></title>									<description></description>									</video> 									</xml>";						$resultStr = sprintf($videoTpl, $fromUsername, $toUsername, $time, $MsgType, $MediaId,$ThumbMediaId,'我是标题','我是描述');	                	echo $resultStr;			            $this->log("自动响应视频信息".$ThumbMediaId);	                	$this->log($resultStr);	                		                //如果是地理位置	                }else if($MsgType == 'location'){	                	$Location_X = $postObj->Location_X;//维度	                	$Location_Y = $postObj->Location_Y;//经度	                	$Scale = $postObj->Scale;//地图缩放大小	                	$Label = $postObj->Label;//地里位置信息	                		                	//回复文本信息		                $textTpl = "<xml>									<tousername></tousername>									<fromusername></fromusername>									<createtime>%s</createtime>									<msgtype></msgtype>									<content></content>									<funcflag>0</funcflag>									</xml>";             	              		$msgType = "text";	                	$contentStr = '经度:'.$Location_Y.',维度:'.$Location_X.',地图缩放大小'.$Scale.',地理位置信息:'.$Label;	                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);	                	echo $resultStr;	                	$this->log($resultStr);	                		                //如果是事件	                }else if($MsgType == 'event'){	                		                	$Event = $postObj->Event;	                		                	//subscribe(关注,也叫订阅)	                	if($Event == 'subscribe'){	                			                		$EventKey = $postObj->EventKey;//事件KEY值,qrscene_为前缀,后面为二维码的参数值	                			                		//未关注时,扫描二维码	                		if(!empty($EventKey)){	                			$Ticket = $postObj->Ticket;//二维码的ticket,可用来换取二维码图片		                		$this->log($fromUsername.'扫描二维码关注!EventKey='.$EventKey.',Ticket='.$Ticket);	                		}else{	                			$this->log($fromUsername.'关注我了!');	                		}	                			                	//unsubscribe(取消关注)	                	}elseif ($Event == 'unsubscribe'){	                		$this->log($fromUsername.'取消关注我了!');	                			                	//已关注时,扫描二维码事件	                	}elseif($Event == 'SCAN' || $Event == 'scan'){	                		$EventKey = $postObj->EventKey;//事件KEY值,是一个32位无符号整数,即创建二维码时的二维码scene_id                			$Ticket = $postObj->Ticket;//二维码的ticket,可用来换取二维码图片	                		$this->log($fromUsername.'关注我了!EventKey='.$EventKey.',Ticket='.$Ticket);	                		                	//菜单点击事件	                	}elseif($Event == 'CLICK'){	                		$EventKey = $postObj->EventKey;//事件KEY值,与自定义菜单接口中KEY值对应	                		//回复文本信息			                $textTpl = "<xml>										<tousername></tousername>										<fromusername></fromusername>										<createtime>%s</createtime>										<msgtype></msgtype>										<content></content>										<funcflag>0</funcflag>										</xml>";             		                	$contentStr = '你点击了菜单,菜单项key='.$EventKey;		                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);		                	echo $resultStr;		                	$this->log($resultStr);		                //其他事件类型	                	}else{	                		$this->log('事件类型:'.$Event);	                	}	                		                //其他消息类型,链接、语音等	                }else{	                	//回复文本信息		                $textTpl = "<xml>									<tousername></tousername>									<fromusername></fromusername>									<createtime>%s</createtime>									<msgtype></msgtype>									<content></content>									<funcflag>0</funcflag>									</xml>";             	                	$contentStr = '消息类型:'.$MsgType.'我们还没做处理。。。。【爱城市网】';	                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);	                	echo $resultStr;	                	$this->log($resultStr);	                }		        }else {	        	echo "";	        	exit;	        }    	}else{			    $this->log("验证签名未通过!");		    	}    }    /**     * 记录请求信息     */    function log_request_info() {    	$post = '';    	foreach($_POST   as   $key   =>   $value)   { 			$post = $post.$key.' : '.$value.' , '; 		} 		$get = '';    	foreach($_GET   as   $key   =>   $value)   { 			$get = $get.$key.' : '.$value.' , '; 		} 		$this->log("get信息:".$get);		$this->log("post信息:".$post);    }    /**     * 记录日志     * @param $str     * @param $mode     */    function log($str){    	$mode='a';//追加方式写    	$file = "log.txt";	    $oldmask = @umask(0);	    $fp = @fopen($file,$mode);	    @flock($fp, 3);	    if(!$fp)	    {	        Return false;	    }	    else	    {	        @fwrite($fp,$str);	        @fclose($fp);	        @umask($oldmask);	        Return true;	    }	} }?>
Nach dem Login kopieren

?

更多信息查看:http://mp.weixin.qq.com/wiki/index.php?title=发送被动响应消息

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Was sind die Unterschiede zwischen Huawei GT3 Pro und GT4? Dec 29, 2023 pm 02:27 PM

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgehäuse + hochauflösende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangehäuse/Keramikgehäuse + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgefäß und Sicherheit hinzugefügt

Fix: Snipping-Tool funktioniert unter Windows 11 nicht Fix: Snipping-Tool funktioniert unter Windows 11 nicht Aug 24, 2023 am 09:48 AM

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verständnis der Grundursache des Problems kann dabei helfen, die richtige Lösung zu finden. Hier sind die häufigsten Gründe, warum das Snipping Tool möglicherweise nicht ordnungsgemäß funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool geöffnet wird. Beschädigte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es möglicherweise beschädigt. Veraltete Grafiktreiber: Inkompatible Treiber können das Snipping-Tool beeinträchtigen. Störungen durch andere Anwendungen: Andere laufende Anwendungen können mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler während des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache Lösung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone So beheben Sie den Fehler „Verbindung zum App Store nicht möglich' auf dem iPhone Jul 29, 2023 am 08:22 AM

Teil 1: Erste Schritte zur Fehlerbehebung Überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen Lösungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt möglicherweise nicht an Ihrem Gerät; die Server von Apple sind möglicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgemäß funktioniert. Wenn es ein Problem gibt, können Sie nur warten, bis Apple es behebt. Überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem „Verbindung zum AppStore nicht möglich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

Ist watch4pro besser oder GT? Ist watch4pro besser oder GT? Sep 26, 2023 pm 02:45 PM

Watch4pro und GT verfügen jeweils über unterschiedliche Funktionen und Anwendungsszenarien. Wenn Sie Wert auf umfassende Funktionen, hohe Leistung und ein stilvolles Erscheinungsbild legen und bereit sind, einen höheren Preis in Kauf zu nehmen, ist Watch 4 Pro möglicherweise besser geeignet. Wenn Sie keine hohen funktionalen Ansprüche haben und mehr Wert auf Akkulaufzeit und einen angemessenen Preis legen, ist die GT-Serie möglicherweise besser geeignet. Die endgültige Wahl sollte auf der Grundlage persönlicher Bedürfnisse, Budgets und Vorlieben getroffen werden. Es wird empfohlen, vor dem Kauf Ihre eigenen Bedürfnisse sorgfältig zu prüfen und sich die Bewertungen und Vergleiche verschiedener Produkte anzusehen, um eine fundiertere Entscheidung zu treffen.

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Mar 21, 2024 pm 10:31 PM

So optimieren Sie die Akkulaufzeit des iPad mit iPadOS 17.4 Die Verlängerung der Akkulaufzeit ist der Schlüssel zum mobilen Geräteerlebnis, und das iPad ist ein gutes Beispiel. Wenn Sie das Gefühl haben, dass der Akku Ihres iPads zu schnell leer wird, machen Sie sich keine Sorgen, es gibt eine Reihe von Tricks und Optimierungen in iPadOS 17.4, die die Laufzeit Ihres Geräts deutlich verlängern können. Das Ziel dieses ausführlichen Leitfadens besteht nicht nur darin, Informationen bereitzustellen, sondern auch darin, die Art und Weise zu ändern, wie Sie Ihr iPad verwenden, Ihr gesamtes Batteriemanagement zu verbessern und sicherzustellen, dass Sie sich länger auf Ihr Gerät verlassen können, ohne es aufladen zu müssen. Durch die Übernahme der hier beschriebenen Vorgehensweisen machen Sie einen Schritt hin zu einem effizienteren und bewussteren Einsatz von Technologie, der auf Ihre individuellen Bedürfnisse und Nutzungsmuster zugeschnitten ist. Identifizieren Sie die größten Energieverbraucher

Microsoft führt mit Copilot den Build von Windows 11 23H2 im Release-Preview-Kanal ein Microsoft führt mit Copilot den Build von Windows 11 23H2 im Release-Preview-Kanal ein Sep 28, 2023 pm 07:17 PM

Alle freuen sich auf die heutige Veröffentlichung von Windows 1123H2. Tatsächlich hat Microsoft gerade Updates für die Release-Vorschau veröffentlicht, die dem offiziellen Release-Stadium am nächsten kommt. Bekannt als Build 22631 gibt Microsoft bekannt, dass sie die neue umbenannte Chat-App, Phone Links und Play Together-Widgets einführen, die in den letzten Monaten auf anderen internen Kanälen getestet wurden. „Dieses neue Update wird den gleichen Wartungszweig und die gleiche Codebasis wie Windows 11 Version 22H2 haben und mit allen neu angekündigten Funktionen kumulativ sein, einschließlich Copilot in Windows (Vorschau)“, verspricht Microsoft. Redmond-Beamte weiter

Guan Zeyuanjiang Shuying erlebt das Huawei MateBook GT 14: die perfekte Kombination aus Technologie und Kunst Guan Zeyuanjiang Shuying erlebt das Huawei MateBook GT 14: die perfekte Kombination aus Technologie und Kunst Aug 10, 2024 pm 09:51 PM

Am 8. August stellte Huawei Terminal offiziell die „Super Starlight Show“ des Huawei MateBook GT14 vor. Der bekannte Schauspieler Jiang Shuying und der offizielle Kommentator der League of Legends Professional League Guan Zeyuan waren zu Gast im Live-Übertragungsraum, um das Huawei MateBook GT14, das neueste Huawei-Notebook, persönlich zu erleben. Während der Live-Übertragung waren Jiang Shuying und Guan Zeyuan voll des Lobes für das Huawei MateBook GT14. CNMO bemerkte, dass Jiang Shuying, Guan Zeyuan und der Präsident der PC-Produktlinie von Huawei während der Live-Übertragung Zeuge der Demontage des Huawei MateBook GT14 waren. Es ist ersichtlich, dass das interne Design des Huawei MateBook GT14 sehr ordentlich ist und ein Motherboard-Design mit hoher Dichte verwendet. Das Motherboard ist auch teilweise versenkt, um sich von der Tastatur zu distanzieren. Dieses hier

See all articles