Skip to content

Instantly share code, notes, and snippets.

@zhoumengkang
Created April 25, 2014 08:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save zhoumengkang/11281705 to your computer and use it in GitHub Desktop.
Save zhoumengkang/11281705 to your computer and use it in GitHub Desktop.
微信demo
<?php
/**
* description : null
* @author : zhoumengkang
* createTime : 15/2/14 10:12
*/
define("TOKEN", "weixin");
$wechatObj = new weChat();
class weChat{
//给用户返回的消息的格式
private $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>";
private $msgType = '';
private $fromUsername;
private $toUsername;
//默认消息菜单
private $menu = '回复 1 查看快递电话
回复 2 查发车时间表
回复 3 看大新沟风景
回复 4 新沟普通话考试
回复 5 进入新沟贴吧
回复 6 进入新沟网
......
还要添加什么大家说了算,有意见请到
http://t.cn/8Flnxa9 回帖吧';
//新沟风景图片
private $imgs = array(
'小桥流水接平沙,何处行云不在家。',
'千山鸟飞绝, 万径人踪灭。 孤舟蓑笠翁, 独钓寒江雪。 ',
'斜日消残雨,红霞映晚村。','黄萼裳裳绿叶稠,千村欣卜榨新油。',
'忽如一夜春风来,千树万树梨花开。新沟真的发展得好快呀!'
);
public function __construct(){
if($this->checkSignature()){
$this->responseMsg();
}else{
exit;
}
}
/**
* 验证消息的真实性
* 如果没有这一步验证能正常运行,可能是防止机器人刷服务器吧......
* @return bool
*/
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;
}
}
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);
$this->fromUsername = $postObj->FromUserName;
$this->toUsername = $postObj->ToUserName;
$this->msgType = $postObj->MsgType;
$time = time();
switch($this->msgType){
case 'text':
//TODO
$content = $this->thinkAboutIt(trim($postObj->Content));
break;
case 'voice':
$content = '你在微信里声音这么好听,你爸妈知道吗?/::d
'.$this->menu;
break;
case 'video':
$content = "陈老师的弟子,摄影技术就是不一样哈!/:B-)
".$this->menu;
break;
case 'image':
$content = '咧是哪过?介绍我认识哈!/::D
'.$this->menu;
break;
case 'location':
$content = '你踩咧西?我过来找你玩咯?/::D
'.$this->menu;
break;
case 'link':
$content = '发的什么链接,不会有毒吧,我是不会点的。
'.$this->menu;
break;
case 'event':
$content = '欢迎关注新沟微信公共服务号/::D
'.$this->menu;
break;
}
$resultStr = sprintf($this->textTpl, $this->fromUsername, $this->toUsername, $time, 'text', $content);
echo $resultStr;
}else {
exit;
}
}
private function thinkAboutIt($content){
switch($content){
case 1:
return '不一定最新:
监利县新沟镇圆通快递电话
15872146916
监利县新沟镇中通快递电话
0716-3787988
15392751318
监利县新沟镇天天快递电话
13986719702
15171142578
监利县新沟镇韵达快递电话
13997570134
15672424494
监利县新沟镇汇通快递电话
15572063655
监利县新沟镇申通快递电话
13797484845';
break;
case 2:
return '资料暂无...欢迎大家提供';
break;
case 3:
//看新沟风景
//图片格式
$i = rand(0,4);
$tmpTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[新沟风景]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
</item>
</Articles>
</xml>";
$resultStr = sprintf($tmpTpl, $this->fromUsername, $this->toUsername, time(),$this->imgs[$i],'http://2.youyong.app100718058.twsapp.com/img/xingou/'.($i+1).'.jpg');
echo $resultStr;
exit;
break;
case 4:
//进行新沟普通话考试
return '点击链接开始考试
http://t.cn/8FlOcCF
';
break;
case 5:
//进入新沟吧
return '点击链接进入新沟吧
http://t.cn/8FlOJdk';
break;
case 6:
//进入新沟网
return '点击链接进入新沟网
http://www.xingouren.com/';
break;
default :
return $this->menu;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment