Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-WeChat-API-Zugriff und automatische Antwort auf Schlüsselwörter

PHP-WeChat-API-Zugriff und automatische Antwort auf Schlüsselwörter

不言
不言Original
2018-04-04 14:36:461797Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Zugriff auf die PHP-WeChat-API und der automatischen Antwort auf Schlüsselwörter. Jetzt können Freunde in Not auf den Inhalt dieses Artikels verweisen

https:// blog.csdn .net/self_realian/article/details/70849159


Nutzungsmodusklassifizierung öffentlicher Konten

1, Bearbeitungsmodus: Es gibt Eine öffentliche WeChat-Plattform, die eine einfache, visuelle Bedienoberfläche für öffentliche WeChat-Kontomanager bereitstellt, hauptsächlich um

WeChat-Öffentlichkeitskontomanagern die Durchführung einiger einfacher WeChat-Vorgänge zu erleichtern

2 um einige öffentliche Schnittstellen von WeChat aufzurufen, um einige seiner eigenen Geschäfte abzuschließen

Schritte zum Zugriff auf die API-Schnittstelle in der Anwendung

1 Geben Sie die Server-URL und das Token ein (Hinweis: Unterstützt nur Port 80), das heißt, der HTTP-Dienst muss an Port 80 geöffnet werden, um gesendete Nachrichten zu empfangen

Die URL hier bezieht sich auf die URL des Drittanbieter-Servers, und ihre Funktion ist hauptsächlich um WeChat-Push zu erhalten.

Das hier verwendete Token ist das zwischen dem Entwickler und der öffentlichen WeChat-Plattform vereinbarte Passwort. Es wird hauptsächlich zur Überprüfung der wahren Legitimität des Drittanbieter-Servers verwendet

2. Überprüfen Sie die Serveradresse. Der Gültigkeits- und Verschlüsselungs-/Verifizierungsprozess ist wie folgt:

(1) Sortieren Sie die drei Parameter Token, Zeitstempel und Nonce in lexikografischer Reihenfolge Von WeChat über die get-Methode übertragene Parameter. Mithilfe dieser drei Parameter können Sie überprüfen, ob die Anfrage von WeChat stammt. (2) Fügen Sie die drei Parameterzeichenfolgen zu einer Zeichenfolge für die SHA1-Verschlüsselung zusammen (3) Entwicklung Die vom Benutzer erhaltene verschlüsselte Zeichenfolge kann mit der Signatur verglichen werden, was darauf hinweist, dass die Anfrage von WeChat stammt

3, über access_token

(1) access_token Beziehung mit appid und appsecred Wenn Sie ein öffentliches WeChat-Konto auf der öffentlichen WeChat-Plattform registrieren, generiert die öffentliche WeChat-Plattform eine appid und appsecred für Sie Einzigartig auf der öffentlichen WeChat-Plattform. Das Logo

appid und appsecred (edd7d19a4d8c625ed1244d17f78a9165) ist eigentlich ein dynamisches Passwort. Es ist zeitlich begrenzt

Access_token kann auch als Aufruf öffentlicher WeChat-Schlüssel einiger Schnittstellen der Plattform verstanden werden

Eigenschaften: (1) Eindeutige Gültigkeit (2) Globale Gültigkeit (Was die detaillierte Erklärung von access_token betrifft, können Sie WeChat und eingeben Sehen Sie sich die „Entwicklerdokumentation“ an.)

Offene WeChat-Schnittstelle

1, Zugriffstoken abrufen

2, WeChat-Serveradresse abrufen

Nachdem ich dies gesagt habe, ist das Folgende der Codeteil. Zunächst möchte ich alle daran erinnern, dass Sie, wenn Sie diese eigenen Funktionen hinzufügen möchten, zunächst über einen Domainnamen verfügen müssen, auf den über Ihr eigenes öffentliches Netzwerk zugegriffen werden kann. Wenn Sie keinen haben, können Sie sich bewerben zum einen auf Tencent Cloud oder Alibaba Cloud (das Framework, das ich verwende, ist ThinkPHP3.2.2)


[php]

Ansicht schlicht

kopieren

Ich hoffe, dieser Blog wird für Neulinge hilfreich sein, die wie ich WeChat-Entwicklung mögen

<?php  
namespace Home\Controller;  
use Think\Controller;  
class IndexController extends Controller {  
    public function index(){  
        $timestamp = $_GET[&#39;timestamp&#39;];//timestamp其实就是一个时间戳  
        $nonce     = $_GET[&#39;nonce&#39;];//nonce是一个随机参数  
        $token     = "weixin";//这个token填写你在微信公众平台上写的那个值  
        $signature = $_GET[&#39;signature&#39;];//这个signature其实就是在微信公众平台已经加密好的字符串  
        $echostr   = $_GET[&#39;echostr&#39;];  
        $array     = array( $timestamp, $nonce, $token);  
        sort($array);  
  
        $tmpstr = implode(&#39;&#39;, $array);  
        $tmpstr = sha1($tmpstr);  
  
    if( $tmpstr == $signature && $echostr){  
      
            echo $echostr;  
            exit;  
        }else{  
            $this->reponseMsg();  
        }  
    }  
    public function reponseMsg(){  
        $postArr = $GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;];  
        $postObj = simplexml_load_string( $postArr );  
        if( strtolower( $postObj->MsgType) == &#39;event&#39;){  
            //如果是关注事件(subscribe)  
            if( strtolower($postObj->Event == &#39;subscribe&#39;) ){  
                //回复用户消息  
                $toUser   = $postObj->FromUserName;  
                $fromUser = $postObj->ToUserName;  
                $time     = time();  
                $msgType  =  &#39;text&#39;;  
                $content  = &#39;欢迎关注 书旅and良玉 微信公众账号&#39;.$postObj->FromUserName.&#39;-&#39;.$postObj->ToUserName;  
                $template = "<xml>  
                            <ToUserName><![CDATA[%s]]></ToUserName>  
                            <FromUserName><![CDATA[%s]]></FromUserName>  
                            <CreateTime>%s</CreateTime>  
                            <MsgType><![CDATA[%s]]></MsgType>  
                            <Content><![CDATA[%s]]></Content>  
                            </xml>";  
                $info     = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);  
                echo $info;  
            }  
        }  
//回复纯文本或单图文消息  
        if(($postObj->MsgType) == &#39;text&#39; && trim($postObj->Content) == &#39;夏目友人帐&#39;){  
            $toUser   = $postObj->FromUserName;  
            $fromUser = $postObj->ToUserName;  
            $arr = array(  
                array(  
                    &#39;title&#39;=>&#39;夏目友人帐&#39;,  
                    &#39;description&#39;=>"此生无悔入夏目",  
                    &#39;picUrl&#39;=>&#39;http://img4.duitang.com/uploads/item/201508/16/20150816015528_X8dKY.jpeg&#39;,  
                    &#39;url&#39;=>&#39;http://www.shulvchen.cn&#39;,  
                ),  
            );    
            $template = "<xml>  
                        <ToUserName><![CDATA[%s]]></ToUserName>  
                        <FromUserName><![CDATA[%s]]></FromUserName>  
                        <CreateTime>%s</CreateTime>  
                        <MsgType><![CDATA[%s]]></MsgType>  
                        <ArticleCount>".count($arr)."</ArticleCount>  
                        <Articles>";  
            foreach($arr as $k=>$v){  
                $template .="<item>  
                            <Title><![CDATA[".$v[&#39;title&#39;]."]]></Title>   
                            <Description><![CDATA[".$v[&#39;description&#39;]."]]></Description>  
                            <PicUrl><![CDATA[".$v[&#39;picUrl&#39;]."]]></PicUrl>  
                            <Url><![CDATA[".$v[&#39;url&#39;]."]]></Url>  
                            </item>";  
            }  
            $template .="</Articles>  
                        </xml> ";  
            echo sprintf($template, $toUser, $fromUser, time(), &#39;news&#39;);  
        }else{  
            switch( trim($postObj->Content) ){  
                case &#39;bb&#39;:  
                    $content = &#39;我喜欢你&#39;;  
                break;  
                case &#39;良玉&#39;:  
                    $content = &#39;我喜欢你&#39;;  
                break;  
                case &#39;书旅&#39;:  
                    $content = &#39;加油&#39;;  
                break;  
                case &#39;dsdf&#39;:  
                    $content = &#39;不愿错过他&#39;;  
                break;  
                case &#39;垒哥&#39;:  
                    $content = &#39;垒哥已死,有事儿烧纸&#39;;  
                break;  
                case &#39;书旅and良玉&#39;:  
                    $content = &#39;Forever with you&#39;;  
                break;  
                case &#39;学弟&#39;:  
                    $content = &#39;书旅是你学长&#39;;  
                break;  
                default:  
                    $content = "<a href=&#39;http://www.baidu.com&#39;>百度一下,你就知道(点击文字,进入百度)</a>";  
  
            }     
                $template1 = "<xml>  
                            <ToUserName><![CDATA[%s]]></ToUserName>  
                            <FromUserName><![CDATA[%s]]></FromUserName>  
                            <CreateTime>%s</CreateTime>  
                            <MsgType><![CDATA[%s]]></MsgType>  
                            <Content><![CDATA[%s]]></Content>  
                            </xml>";  
                $fromUser = $postObj->ToUserName;//消息从哪里来  
                $toUser   = $postObj->FromUserName;//发送给谁  
                $time     = time();   
                //$content  = &#39;我喜欢你&#39;;  
                $msgType  = &#39;text&#39;;  
                echo sprintf($template1, $toUser, $fromUser,$time, $msgType, $content);  
        }  
    }     
}


Verwandte Empfehlungen:


Detailliertes Beispiel für die Implementierung eines Chatbots mithilfe der Python+Slack-API

PHP-Methode zum Aufrufen der Schnittstellen-API

Das obige ist der detaillierte Inhalt vonPHP-WeChat-API-Zugriff und automatische Antwort auf Schlüsselwörter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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