この記事の内容は、PHP WeChat API アクセスとキーワード自動返信に関するものです。必要な友達はこの記事の内容を参照してください。
https://blog.csdn.net/self_realian/article /details/70849159
パブリックアカウントの使用モード分類
1. 編集モード: WeChatパブリックアカウントマネージャーにシンプルで視覚的な操作インターフェイスを提供するWeChatパブリックプラットフォームがあり、主に
にとって便利です。WeChat パブリック アカウント マネージャーは、いくつかの簡単な WeChat 操作を実行します
2. 開発者モード: WeChat のいくつかのパブリック インターフェイスを呼び出して、独自のビジネスの一部を完了します
アプリケーションで API インターフェイスにアクセスする手順
1サーバー URL とトークンを入力します (注: ポート 80 のみをサポートします。つまり、送信されたメッセージを受信するには、http サービスをポート 80 で開く必要があります。
ここでの URL は、サードパーティ サーバーの URL を指します。その主な機能は、WeChat によってプッシュされたメッセージを受信することです
ここでのトークンは、開発者と WeChat パブリック プラットフォームの間で合意されたパスワードであり、主にサードパーティ サーバーの真の正当性を検証するために使用されます
2。サーバーアドレスの有効性、暗号化/検証 プロセスは次のとおりです:
(1) トークン、タイムスタンプ、ノンスの 3 つのパラメータを辞書順に並べ替えます (これら 3 つは、WeChat が get メソッドを通じて送信した 3 つのパラメータです。 3 つのパラメーターを使用して、リクエストが (WeChat 内) からのものであるかどうかを確認できます
(2) sha1 暗号化用に 3 つのパラメーター文字列を 1 つの文字列に結合します
(3) 開発者は、暗号化された文字列を署名と比較して、リクエストはWeChatから来ています
3、access_tokenについて
(1) access_tokenとappid、appsecredの関係
WeChatパブリックプラットフォームにWeChatパブリックアカウントを登録すると、WeChatパブリックプラットフォームはappidとappsecredを生成します。 appsecred は、WeChat パブリック プラットフォーム上の一意の識別子です
appid と appsecred (edd7d19a4d8c625ed1244d17f78a9165) は、実際には、時間に依存する動的パスワードです。
Access_token は、プラットフォームの一部のインターフェイスの WeChat 公開キーを呼び出すこととしても理解できます
特徴: (1) 固有の有効性 (2) グローバルな有効性 (access_token の詳細な説明については、WeChat を入力できます)そして「開発者向けドキュメント」を参照してください)
WeChat インターフェースを開きます
1、access_token を取得します
2、WeChat サーバーアドレスを取得します
ここまで述べた後、まず最初に思い出していただきたいのがコード部分です。これらの機能を独自に追加するには、まず独自のパブリック ネットワークからアクセスできるドメイン名を取得する必要があります。Tencent Cloud または Alibaba Cloud (フレームワーク) で申請することはできません。私が使用しているのは ThinkPHP3.2.2)
[php]ビュー plaincopy
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { public function index(){ $timestamp = $_GET['timestamp'];//timestamp其实就是一个时间戳 $nonce = $_GET['nonce'];//nonce是一个随机参数 $token = "weixin";//这个token填写你在微信公众平台上写的那个值 $signature = $_GET['signature'];//这个signature其实就是在微信公众平台已经加密好的字符串 $echostr = $_GET['echostr']; $array = array( $timestamp, $nonce, $token); sort($array); $tmpstr = implode('', $array); $tmpstr = sha1($tmpstr); if( $tmpstr == $signature && $echostr){ echo $echostr; exit; }else{ $this->reponseMsg(); } } public function reponseMsg(){ $postArr = $GLOBALS['HTTP_RAW_POST_DATA']; $postObj = simplexml_load_string( $postArr ); if( strtolower( $postObj->MsgType) == 'event'){ //如果是关注事件(subscribe) if( strtolower($postObj->Event == 'subscribe') ){ //回复用户消息 $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $time = time(); $msgType = 'text'; $content = '欢迎关注 书旅and良玉 微信公众账号'.$postObj->FromUserName.'-'.$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) == 'text' && trim($postObj->Content) == '夏目友人帐'){ $toUser = $postObj->FromUserName; $fromUser = $postObj->ToUserName; $arr = array( array( 'title'=>'夏目友人帐', 'description'=>"此生无悔入夏目", 'picUrl'=>'http://img4.duitang.com/uploads/item/201508/16/20150816015528_X8dKY.jpeg', 'url'=>'http://www.shulvchen.cn', ), ); $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['title']."]]></Title> <Description><![CDATA[".$v['description']."]]></Description> <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl> <Url><![CDATA[".$v['url']."]]></Url> </item>"; } $template .="</Articles> </xml> "; echo sprintf($template, $toUser, $fromUser, time(), 'news'); }else{ switch( trim($postObj->Content) ){ case 'bb': $content = '我喜欢你'; break; case '良玉': $content = '我喜欢你'; break; case '书旅': $content = '加油'; break; case 'dsdf': $content = '不愿错过他'; break; case '垒哥': $content = '垒哥已死,有事儿烧纸'; break; case '书旅and良玉': $content = 'Forever with you'; break; case '学弟': $content = '书旅是你学长'; break; default: $content = "<a href='http://www.baidu.com'>百度一下,你就知道(点击文字,进入百度)</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 = '我喜欢你'; $msgType = 'text'; echo sprintf($template1, $toUser, $fromUser,$time, $msgType, $content); } } }
このブログが私と同じように WeChat 開発が好きな初心者に役立つことを願っています
関連する推奨事項:
Python+Slack API の説明方法の詳細な例チャットボットのメソッドを実装
以上がPHP WeChat API アクセスとキーワード自動応答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。