微信公众号开发原始初学版---php
来源:互联网 发布:js 所有input不可编辑 编辑:程序博客网 时间:2024/06/13 22:18
<?php
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
header('content-type:text');
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//判断该数据包是否是订阅的事件推送
if (strtolower($postObj->MsgType)=='event') {
//如果是关注 subscribe 事件
if (strtolower($postObj->Event)=='subscribe') {
//回复用户消息(纯文本格式)
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = "欢迎关注我们的微信公众账号\n<a href='http://blog.csdn.net/zzz3112362088'>我的个人博客</a>";
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}
}
else if (strtolower($postObj->MsgType)=='text') {
$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($keyword == "?" || $keyword == "?")
// {
// $msgType = "text";
// $contentStr = date("Y-m-d H:i:s",time());
// $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
// echo $resultStr;
// }else{
// $msgType='text';
// $contentStr='功能还没有实现,请稍后再试';
// $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
// echo $resultStr;
// }
switch ($keyword) {
case '?':
case '?':
$msgType="text";
$contentStr=date("Y-m-d H:i:s",time());
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
case 'hello':
$msgType="text";
$contentStr="我知道你是谁";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
case 'picture':
$arr=array(
array(
'title'=>'个人博客',
'description'=>'包含我所学知识的记录',
'picurl'=>'http://1.tianyu12345.applinzi.com/images/23.jpg',
'url'=>'http://blog.csdn.net/zzz3112362088',),
// array(
// 'title'=>'qq空间',
// 'description'=>'个人生活记录',
// 'picurl'=>'http://1.tianyu12345.applinzi.com/images/24.jpg',
// 'url'=>'http://user.qzone.qq.com/649832402/main',),
);
$imageTpl="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach ($arr as $key => $value) {
$imageTpl.="<item>
<Title><![CDATA[".$value['title']."]]></Title>
<Description><![CDATA[".$value['description']."]]></Description>
<PicUrl><![CDATA[".$value['picurl']."]]></PicUrl>
<Url><![CDATA[".$value['url']."]]></Url>
</item>";
}
$imageTpl.="</Articles>
</xml>";
// $arr = array(
// array(
// 'title'=>'非常感谢关注',
// 'description'=>"我的个人博客",
// 'picUrl'=>'http://1.tianyu12345.applinzi.com/images/23.jpg',
// 'url'=>'http://blog.csdn.net/zzz3112362088',
// ),
// );
// $imageTpl = "<xml>
// <ToUserName><![CDATA[%s]]></ToUserName>
// <FromUserName><![CDATA[%s]]></FromUserName>
// <CreateTime>%s</CreateTime>
// <MsgType><![CDATA[%s]]></MsgType>
// <ArticleCount>".count($arr)."</ArticleCount>
// <Articles>";
// foreach($arr as $k=>$v){
// $imageTpl .="<item>
// <Title><![CDATA[".$v['title']."]]></Title>
// <Description><![CDATA[".$v['description']."]]></Description>
// <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
// <Url><![CDATA[".$v['url']."]]></Url>
// </item>";
// }
// $imageTpl .="</Articles>
// </xml> ";
echo sprintf($imageTpl,$fromUsername,$toUsername,$time,'news');
break;
default:
$msgType="text";
$contentStr="本部分功能还未实现,快加入我们吧!";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
}
}
}else{ //数据包为空
echo "";
exit;
}
}
}
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}
class wechatCallbackapiTest
{
public function valid()
{
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
header('content-type:text');
echo $echoStr;
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//判断该数据包是否是订阅的事件推送
if (strtolower($postObj->MsgType)=='event') {
//如果是关注 subscribe 事件
if (strtolower($postObj->Event)=='subscribe') {
//回复用户消息(纯文本格式)
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = "欢迎关注我们的微信公众账号\n<a href='http://blog.csdn.net/zzz3112362088'>我的个人博客</a>";
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}
}
else if (strtolower($postObj->MsgType)=='text') {
$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($keyword == "?" || $keyword == "?")
// {
// $msgType = "text";
// $contentStr = date("Y-m-d H:i:s",time());
// $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
// echo $resultStr;
// }else{
// $msgType='text';
// $contentStr='功能还没有实现,请稍后再试';
// $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
// echo $resultStr;
// }
switch ($keyword) {
case '?':
case '?':
$msgType="text";
$contentStr=date("Y-m-d H:i:s",time());
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
case 'hello':
$msgType="text";
$contentStr="我知道你是谁";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
case 'picture':
$arr=array(
array(
'title'=>'个人博客',
'description'=>'包含我所学知识的记录',
'picurl'=>'http://1.tianyu12345.applinzi.com/images/23.jpg',
'url'=>'http://blog.csdn.net/zzz3112362088',),
// array(
// 'title'=>'qq空间',
// 'description'=>'个人生活记录',
// 'picurl'=>'http://1.tianyu12345.applinzi.com/images/24.jpg',
// 'url'=>'http://user.qzone.qq.com/649832402/main',),
);
$imageTpl="<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach ($arr as $key => $value) {
$imageTpl.="<item>
<Title><![CDATA[".$value['title']."]]></Title>
<Description><![CDATA[".$value['description']."]]></Description>
<PicUrl><![CDATA[".$value['picurl']."]]></PicUrl>
<Url><![CDATA[".$value['url']."]]></Url>
</item>";
}
$imageTpl.="</Articles>
</xml>";
// $arr = array(
// array(
// 'title'=>'非常感谢关注',
// 'description'=>"我的个人博客",
// 'picUrl'=>'http://1.tianyu12345.applinzi.com/images/23.jpg',
// 'url'=>'http://blog.csdn.net/zzz3112362088',
// ),
// );
// $imageTpl = "<xml>
// <ToUserName><![CDATA[%s]]></ToUserName>
// <FromUserName><![CDATA[%s]]></FromUserName>
// <CreateTime>%s</CreateTime>
// <MsgType><![CDATA[%s]]></MsgType>
// <ArticleCount>".count($arr)."</ArticleCount>
// <Articles>";
// foreach($arr as $k=>$v){
// $imageTpl .="<item>
// <Title><![CDATA[".$v['title']."]]></Title>
// <Description><![CDATA[".$v['description']."]]></Description>
// <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
// <Url><![CDATA[".$v['url']."]]></Url>
// </item>";
// }
// $imageTpl .="</Articles>
// </xml> ";
echo sprintf($imageTpl,$fromUsername,$toUsername,$time,'news');
break;
default:
$msgType="text";
$contentStr="本部分功能还未实现,快加入我们吧!";
$resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
echo $resultStr;
break;
}
}
}else{ //数据包为空
echo "";
exit;
}
}
}
0 0
- 微信公众号开发原始初学版---php
- 微信公众平台开发:进阶篇(如何获取微信公众原始号)
- 微信公众号开发index.php
- 微信公众号开发分享 PHP
- 微信公众开发号-php
- 微信公众平台开发-PHP版
- 微信公众平台开发-PHP版
- 微信公众平台开发初学
- 微信公众测试号开发改进版---php
- 公众号删除分组,php开发微信公众平台
- 公众获取用户地理位置-php开发微信公众号
- 微信公众号用户分组,新建公众号用户分组,php开发公众号
- 微信公众平台开发[3] —— 微信公众号支付功能(PHP)
- 微信公众平台开发[3] —— 微信公众号支付功能(PHP)
- PHP——微信公众号开发
- 微信公众号开发Apache+php如何搭建服务
- 微信公众号开发1搭建php服务器
- PHP开发微信公众号(学习之路一)
- LNMP(linux+nginx+mysql+php)服务器环境配置
- mvn odbc14 ojdbc6 打包问题
- 最简单的基于FFmpeg的移动端例子:IOS 推流器
- 个人助记
- SUN(oracle)存储配置界面
- 微信公众号开发原始初学版---php
- 详谈String类
- Swift-自定义控件之IndicatorButton(带动画的按钮)
- 线程详解
- 运用PopWindow实现仿微信弹出下拉列表
- 最简单的基于FFmpeg的移动端例子:IOS 视频转码器
- Unable to load class ‘org.codehaus.groovy.runtime.typehandling.ShortTypeHandling’
- math.random()和Math.round的区别
- 关于mysql的java.sql.SQLException: Incorrect string value: '\xF0\x9F\x91\xBD\xF0\x9F…'问题