PHP は WeChat パブリック アカウント開発を実装します

WBOY
リリース: 2016-06-23 13:14:02
オリジナル
1129 人が閲覧しました

1. まず、外部ネットワークからアクセスできるインターフェース URL が必要です。

ここで Sina 無料クラウド サーバーを申請しています。http://xxxxx.applinzi.com/wx.php。具体的には、Sina Cloud Center にアクセスして、次のアドレスで申請できます。

2. WeChat 公開アカウントにアクセスして個人公開アカウントを申請します。アドレスは https://mp.weixin.qq.com で、左側のメニューの開発に入り、基本設定を選択します。

3. クリックして設定を変更し、必要な情報を入力します。 認証は次のようになります:

認証コードを wx.php に記述する必要があります。

4. 認証が成功したら、設定を有効にします

詳細なコードを添付します:

  1 <?php  2 header('Content-type:text/html;charset=utf-8');  3 define("TOKEN", "这里是你在微信那里的token");  4 $wechatObj = new wechatCallbackapiTest();  5 $wechatObj->valid();  6   7 class wechatCallbackapiTest {  8     public function valid()  9     { 10         <br />       //这里是认证过程<br />       $echoStr = $_GET["echostr"]; 11         if($this->checkSignature() && $echoStr) { 12             echo $echoStr; 13             exit; 14         } else { 15             $this->responseMsg();//当认证成功后执行下面的代码 16         } 17     } 18  19     private function responseMsg() { 20  21         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 22         if (!empty($postStr)) { 23                 libxml_disable_entity_loader(true); 24                 $textTpl = "<xml> 25                             <ToUserName><![CDATA[%s]]></ToUserName> 26                             <FromUserName><![CDATA[%s]]></FromUserName> 27                             <CreateTime>%s</CreateTime> 28                             <MsgType><![CDATA[%s]]></MsgType> 29                             <Content><![CDATA[%s]]></Content> 30                             <FuncFlag>0</FuncFlag> 31                             </xml>"; 32                 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 33                 //第一次关注的时候 34                 if (strtolower($postObj->MsgType) == 'event') { 35                     if (strtolower($postObj->Event) == 'subscribe') { 36                         $toUsername = $postObj->ToUserName; 37                         $fromUsername = $postObj->FromUserName; 38                         $time = time(); 39                         $msgType = "text"; 40                         $contentStr = "<<Welcome attention to life is elsewhere!>>"; 41                         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 42                         echo $resultStr; 43                     } 44                 //关键字文本回复 45                 } else if ( strtolower($postObj->MsgType) == 'text' ) { 46                     if ( $postObj->Content == 'imooc' ) { 47                         $toUsername = $postObj->ToUserName; 48                         $fromUsername = $postObj->FromUserName; 49                         $time = time(); 50                         $msgType = "text"; 51                         $contentStr = "imooc is very good"; 52                         $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 53                         echo $resultStr; 54                         exit; 55                     } else if ( $postObj->Content == '美丽说' ) { 56                         $array = array( 57                             array( 58                               'title' => 'meilishuo',  59                               'description'=> 'meilishuo is very good', 60                               'picurl' => 'http://d05.res.meilishuo.net/img/_o/67/24/65bc4ebfe22d0c2eca1702c9736c_117_43.ch.png', 61                               'url' => 'http://www.meilishuo.com' 62                             ) 63                         ); 64                         $imageTpl = "<xml> 65                                     <ToUserName><![CDATA[%s]]></ToUserName> 66                                     <FromUserName><![CDATA[%s]]></FromUserName> 67                                     <CreateTime>%s</CreateTime> 68                                     <MsgType><![CDATA[%s]]></MsgType> 69                                     <ArticleCount>".count($array)."</ArticleCount> 70                                     <Articles>"; 71                         foreach ($array as $key => $value) { 72                             $imageTpl .= 73                                     "<item> 74                                     <Title><![CDATA[".$value['title']."]]></Title> 75                                     <Description><![CDATA[".$value['description']."]]></Description> 76                                     <PicUrl><![CDATA[".$value['picurl']."]]></PicUrl> 77                                     <Url><![CDATA[".$value['url']."]]></Url> 78                                     </item>";  79                         } 80                         $imageTpl .= "</Articles></xml>"; 81                         $toUsername = $postObj->ToUserName; 82                         $fromUsername = $postObj->FromUserName; 83                         $time = time(); 84                         $msgType = "news"; 85                         $resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $msgType); 86                         echo $resultStr; 87                         exit; 88                     } 89         } 90  91         } else { 92             echo ""; 93             exit; 94         } 95  96     } 97  98     private function checkSignature() { 99         if (!defined("TOKEN")) {100             throw new Exception('TOKEN is not defined!');101         }102         103         $signature = $_GET["signature"];104         $timestamp = $_GET["timestamp"];105         $nonce = $_GET["nonce"]; 106         $token = TOKEN;107         $tmpArr = array($token, $timestamp, $nonce);108         sort($tmpArr, SORT_STRING);109         $tmpStr = implode( $tmpArr );110         $tmpStr = sha1( $tmpStr );111         return ($tmpStr == $signature) ? true : false;112    }113 }
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート