微信公众平台貌似很火,连小美女作家蒋方舟都开这么长时间了,咱这个LAMPer也来玩玩。
ps:本文只是成为开发者后的一个入门,前提我们已经成为一个开发者了:
然后您认证时填写的URL所对就的文件改成下面这样就行了(注意有中文注释的地方是改动的地方!):
<!-- lang: php -->
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "这里写我们自己的TOKEN");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
//valid signature , option
if($this->checkSignature()){
echo $echoStr;
$this->responseMsg();//验证后处理用户发关的消息-这里是原样返回用户的消息]
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)){
$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>"; //这里的<FuncFloag>0</FuncFlag>中的0要修改成1,这样用户微信中才会有显示新消息的标志
if(!empty( $keyword ))
{
$msgType = "text";
if( $keyword == "Hello2BizUser" ){//开发文档中有用户关注后服务器自动发送过来的字符串为"Hello2BizUser"
$contentStr = "欢迎关注哟,人家会争取每天都更新哒了!";//借用小美女作家的欢迎辞!
}else{
$contentStr = $keyword.'么么哒';//用户输入什么都回复他什么,加上后缀么么哒。
}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
}
?>
所以我们想自定义功能的话,只需要在responseMsg()中加入一些判断,根据不同关键词,返回给用户特定的文字或者图文结合的内容。突然想到几点,1,用户输入 “天津公交638”,然后在这个responseMsg()里面就从风上抓取一些详细的公交数椐给用户发过去。2,用户输入“古诗静夜思”,公众账号就把这首诗给发过去。3,用户输入一支股票这个股票的数椐就给发过去。4,宅男输入"蒋方舟”,就从网上找点好的好照片或作品发过去。也很好玩,哈。
测试通过-》输入“你好”回复“你好么么哒”,输入"Hello2BizUser",就会把第一次关注时的信息发给你的。