在公众号内的输入任意文字,文字相关的第三方网站链接
我们在微信公众平台上,是可以进行简单的自定义消息回复的。
这里的显然不能满足我们的需求。
略
略。
和一般我们配置项目没有区别,所以不再赘述。
本次我们的测试域名是
- http://***.***.**/***.php
在微信的公众后台的
中
- 开发 / 基本配置 / 填写服务器配置
我们需要配置服务器的地址,在启用配置之前,需要经过微信的 token 验证。
本文使用的实例代码为 PHP.
官方文档给出了验证流程图
下面为 PHP 实现的代码。
- //1 获取加密参数
- $token = "***";
- $signature = $_GET['signature'];
- $timestamp =$_GET['timestamp'];
- $nonce = $_GET['nonce'];
- $echostr = $_GET['echostr'];
- //2 排序数组
- $list = [
- 'token'=>$token,
- 'timestamp'=>$timestamp,
- 'nonce'=>$nonce,
- ];
- sort($list);
- //拼接字符串
- $str ="";
- foreach ($list as $value){
- $str .= $value;
- }
- //加密
- $encode_str = sha1($str);
- if($encode_str == $signature){
- echo $echostr;
- }
在官方文档中,有一个对应的事例代码。
- https://wximg.gtimg.com/shake_tv/mpwiki/cryptoDemo.zip
第一步,接收普通消息
这里我们采用明文的方式接收数据。
下面采用官方的接口调试工具。
由于是被动调用接口,所以我们只需要从消息中得到最后的用户 id 以及消息文字就行了。
- $msg = file_get_contents("php://input");
- $xml = new DOMDocument();
- $xml->loadXML($msg);
- $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue;
- $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue;
- $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue;
- echo $from_user_name." 说的类型是".$msg_type.", 内容是".$content;
也就是说,直接返回对应的 xml 就行。
下面的简单实现代码,直接返回给用户自己说的话。
- $msg = file_get_contents("php://input");
- $xml = new DOMDocument();
- $xml->loadXML($msg);
- $from_user_name = $xml->getElementsByTagName("FromUserName")->item(0)->nodeValue;
- $to_user_name = $xml->getElementsByTagName("ToUserName")->item(0)->nodeValue;
- $msg_type = $xml->getElementsByTagName("MsgType")->item(0)->nodeValue;
- $content = $xml->getElementsByTagName("Content")->item(0)->nodeValue;
- $time = time();
- $str = "<xml>
- <ToUserName><![CDATA[".$from_user_name."]]></ToUserName>
- <FromUserName><![CDATA[".$to_user_name."]]></FromUserName>
- <CreateTime>".$time."</CreateTime>
- <MsgType><![CDATA[text]]></MsgType>
- <Content><![CDATA[".$content."]]></Content>
- </xml>";
- echo $str;
下面是最终实现的效果
- //前后省略,跟上面的一样
- $str = "<xml>
- <ToUserName><![CDATA[".$from_user_name."]]></ToUserName>
- <FromUserName><![CDATA[".$to_user_name."]]></FromUserName>
- <CreateTime>".$time."</CreateTime>
- <MsgType><![CDATA[news]]></MsgType>
- <ArticleCount>1</ArticleCount>
- <Articles>
- <item>
- <Title><![CDATA[".$content."]]></Title>
- <Description><![CDATA[我是文字描述]]></Description>
- <PicUrl><![CDATA[http://avatar.csdn.net/C/6/6/1_diandianxiyu.jpg]]></PicUrl>
- <Url><![CDATA[http://blog.coderfix.cn]]></Url>
- </item>
- <item>
- </xml>";
实现效果
微信的文档还是十分详细的,我们能通过微信实现很多好玩的功能。
来源: http://www.bubuko.com/infodetail-1973937.html