この記事では、WeChat パブリック アカウントの開発に関する完全なチュートリアルを紹介します。これを必要とする友人に共有します。
過去 2 年間で、WeChat の公開アカウントで小規模なプログラム、さらに多くのプロジェクトが制作されました。だからこそ、私は包括的な制作チュートリアルを書くつもりです。もちろん、最良のチュートリアルは WeChat 作業プラットフォームのドキュメントです。ここでは私の作品の制作過程についてお話します。私はすべての関連記事のソース コードを自分の github でホストしています。フォローを歓迎します。アドレスをクリックしてリンクを開きます。チュートリアルを始めましょう。
WeChat: インスタント チャット ソフトウェア、1 対 1 の関係
WeChat パブリック プラットフォーム: 1 対多の関係。
サブスクリプション アカウント: 1 メッセージは個人またはグループのメディアに毎日送信できます。デフォルトではカスタム メニューはありません。 サーバー番号: 企業または銀行の場合、デフォルトでカスタムメニューを使用して、毎月4のメッセージを一括送信できます。 運営主体が組織(企業、メディア、慈善団体など)の場合は、サービスアカウントを申請できます。組織および個人である運用主体はサブスクリプション アカウントを申請できますが、個人はサービス アカウントを申請できません。
1、編集モード: ユーザー インタラクションのために WeChat パブリック プラットフォームによって提供されるバックグラウンド操作を直接使用します。編集モードは次のシナリオで使用できます: 開発能力のないオペレーター、主にブランドプロモーション、ニュースメディア、およびセルフサービスカスタマーサービス用の公開アカウント、運用の初期段階では編集の必要はありません機能が多すぎるため、 開発モード システムのアップグレード、障害、その他の特殊な状況
2、開発者モード: インターフェイス コードを直接使用してユーザー コミュニケーションを実現します
パブリック プラットフォームを登録し、オンライン サーバーを用意します
原則:
マス メッセージング用のオブジェクトとマテリアルを選択する:
カスタマイズを有効にする メニューを定義してオンにします:
クリックして表示し、設定インターフェイスに入ります:
上記の説明は主に編集モードの使用方法に関するもので、実際には、私たちが通常フォーラムで記事や投稿を編集する方法と似ていると思います。
原則:
注: 開発者モードをオンにすると、編集モードの一部の機能が正常に使用できなくなります。つまり、開発者モードとエディター モードの間に競合が存在します。 設定インターフェイスに入ります:
設定を変更します:
設定結果は以下のようになります: サーバーファイルアドレス、トークンを入力し、送信をクリックして確認します。送信して検証されると、開発者モードに入ります
public function valid(){ //获取随机字符串 $echoStr = input("echostr"); if($echoStr){ // 验证接口的有效性,由于接口有效性的验证必定会传递echostr 参数 if($this ->checkSignature()){ echo $echoStr; exit; } }else{ $this->responseMsg(); } } protected function checkSignature() { // 微信加密签名 $signature = input("signature"); $timestamp = input("timestamp");//时间戳 $nonce =input("nonce");//随机数 $token = "weixin"; //token值,必须和你设置的一样 $tmpArr =array($token,$timestamp,$nonce); sort($tmpArr,SORT_STRING); $tmpStr = implode($tmpArr); $tmpStr =sha1($tmpStr); if($tmpStr == $signature){ return true; }else{ return false; } }
上記のコードの変数のソースについては、WeChat に詳細な手順が記載されています。私が構築したパブリック アカウントは、PHP7.0 バージョンと TP5.0 フレームワークを使用しています。ここで説明してください。
上記のコードは一度だけ実行されます。開発者モードをオンにした後は、上記のコード内の
responseMsg
メソッドのみが実行されます。
最初にテスト コードをアップロードして、テキスト メッセージに返信するかどうかを確認してみましょう。コードは次のとおりです。
public function responseMsg() { //get post data, May be due to the different environments $postStr = file_get_contents('php://input'); //extract post data if (!empty($postStr)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content); $time = time(); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>0</FuncFlag> </xml>"; if(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } }else { echo ""; exit; } }
上記のコードが表示された場合は、テストが成功したことを意味します。次に、access_token の値の取得を開始します。このパラメーターは私たちにとって非常に重要です。
access_token
を使用する必要があります。開発者はそれを適切に保存する必要があります。 access_tokenのストレージには、少なくとも512文字スペースを予約する必要があります。 access_tokenの有効期間は現在2時間であり、定期的に更新する必要があるため、最後に取得したaccess_tokenは無効になります。 access_token は ID 認証です。他のインターフェイスは基本的にこの値を使用して検証する必要があります。 7.access_token の取得: (ローカルでテスト可能)
結果は次のとおりです:
access_token
結果は次のとおりです:
us 上記のコードのカプセル化を開始します。
// 获取请求的地址的方法
i
f(!function_exists("http_curl")){ function http_curl($url,$data =array(),$method ="get",$returnType ="json") { //1.开启会话 $ch = curl_init(); //2.设置参数 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false); if($method!="get"){ curl_setopt($ch,CURLOPT_POST,TRUE); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); } curl_setopt($ch,CURLOPT_URL,$url); //执行会话 $json = curl_exec($ch); curl_close($ch); if($returnType == "json"){ return json_decode($json,true); } return $json; } } if(!function_exists('get_access_token')){ function get_access_token() { $appid = "wx1ba8f59d9e2c0be0"; //微信的appid $secret ="9e65155599fb9ec047455e197ff6e121"; //微信的开发者密钥 // 读取缓存中的内容 include_once "MyMemcache.php"; //引入缓存方法文件 $obj = new \MyMemcache("47.104.71.253"); $value = $obj ->get($appid); if(!$value){ $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret; $result = http_curl($url); $value = $result['access_token']; $obj->set($appid,$value,7000); } return $value; } }
上述代码就是我对这两个方法的封装,其中我们用到了缓存技术:缓存的方法如下:
// memcache操作类
class MyMemcache{ public $conn; public $isMemcache =true; public function __construct($host="127.0.0.1",$port='11211') { // 建立连接 if(class_exists('MyMemcache')){ $obj =new \Memcache(); }else{ $this ->isMemcache =false; $obj =new \Memcached(); } $obj ->addServer($host,$port); $this ->conn =$obj; } //获取数据 public function get($key) { return $this->conn->get($key); } //设置数据 public function set($key,$value,$expire=0) { if($this->isMemcache){ $this->conn->set($key,$value,0,$expire); }else{ // Memcached扩展的操作方式 $this->conn->set($key,$value,$expire); } } }
结合上述的三个方法,我们就可以实现获取access_token的值,并保存在缓存系统,7000s去重新获取一次。
上述的步骤完成,我们就算是对微信公众号的开发的基本准备全部准备完毕,接下来就开始对着微信开发者文档进行开发和数据的替换了。第一节先讲述到这里.....
相关文章推荐:
1.微信公众号开发完整教程二
2.微信公众号开发完整教程三
3.微信公众号开发完整教程四
相关视频推荐:
1.php微信接口开发实战项目视频教程 聊天机器人+微信支付
2.开发微信小程序视频教程
以上がWeChat パブリック アカウント開発に関する完全なチュートリアル 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。