The following is an introduction to the development process of WeChat public platform through pictures and texts. The specific content is as follows:
WeChat public platform has two modes: editing mode and development mode.
Common functions can be handled through the edit mode. Development mode has more features. Let’s develop helloword using development mode
The steps are as follows:
Step one: First register a public account (https://mp.weixin.qq.com)
Step 2: Register sae (http://sae.sina.com.cn/) as your server.
Step 3: Log in to the WeChat public platform (https://mp.weixin.qq.com) to view the development documents and download the official demo. Make appropriate modifications.
Step 4: Compress the code into zip format and upload it to the sae platform.
Step 5: Log in to the WeChat public platform and enter the developer center. Open "Server Configuration".
Step 6: Success.
Let’s get started:
1. Register a public account first (https://mp.weixin.qq.com)
2. Register sae (http://sae.sina.com.cn/)
After registering, remember to perform real-name authentication, otherwise there will be a permanent "unable to obtain token" prompt when binding to the public platform. (Real-name authentication takes 3 working days to be successful)
You can then click Create App. It can be seen below after creation.
Enter the application you created. Then click Tag Management.
3. Log in to the WeChat public platform (https://mp.weixin.qq.com)
View the development documentation and download the official demo.
After opening, the following code is shown:
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //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; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
I tried the above code, but it seems that it cannot be executed to the response part. So changes were made
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); //这里做了更改 if($_GET["echostr"]){ $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; exit; } } public function responseMsg() { //get post data, May be due to the different environments $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //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; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
You can change Welcome to wechat world! to Hello Word!
4. Compress the code into zip format and upload it to the sae platform.
Click "Edit Code" to see the php file you uploaded. Then right-click and view the url. Copy the url (http://1.carlzhang.sinaapp.com/wx_carlzhang819.php). Remember here the token defined in this php file. Here is "weixin", which can be seen in the picture below.
5. Log in to the WeChat public platform and enter the developer center. Open "Server Configuration". Fill in the url copied in the previous step (here I deleted the previous 1 because my sae defaults to the first version. You can try and delete 1. If the url is accessed and does not report 404, then it is no problem). The token is filled in with the token in the code (the above is "weixin").
If the activation is successful, you can follow your WeChat platform, enter the content, and see if the prompt is Welcome to wechat world! or Hello Word!
All the above content is an explanation of the WeChat public platform. I hope it can help everyone.