php代码实现
<?php
namespace app\index\controller;
use think\Controller;
use app\index\model\User AS UserModel;
use think\Request;
use think\Db;
class Index extends Controller
{
private $toUsername = 'xxx';
private $secret = 'xxxx';
//微信平台会默认调用,并发送相关参数过来
public function index()
{
return view();
}
public function home()
{
$this->valid();
}
//微信验证方法
private function valid()
{
//获取微信平台发送过来的参数,微信平台关联了该路由
$signature=isset($_GET["signature"])?$_GET["signature"]:'';
$timestamp=isset($_GET["timestamp"])?$_GET["timestamp"]:'';
$nonce=isset($_GET["nonce"])?$_GET["nonce"]:'';
$token = 'mws'; //在微信平台配置的
$echoStr=isset($_GET["echostr"])?$_GET["echostr"]:'';
//将timestamp,noce,token 按字典序排序
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
//将排序后的变量用sha1加密
$tmpStr = sha1( $tmpStr );
if($tmpStr == $signature && $echoStr){
//第一次接入微信api 接口的时候
echo $echoStr;
}else{
//用户发送文字,图文,等第二次以上是,$echostr 是空的
$this->responseMsg();
}
}
private function responseMsg()
{
$fromUsername = $_GET["openid"];
$msg_signature= $_GET["msg_signature"]; //用户发送那个过来的密文
$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>";
$msgType = "text";
$contentStr = '谢谢关注';
$resultStr = sprintf($textTpl, $fromUsername, $this->toUsername, $time, $msgType, $contentStr);
echo $resultStr;
exit;
}
private function log($content){
touch("log.txt");
$fopen = fopen('log.txt','w');
fwrite($fopen,$content);
fclose($fopen);
}
}