简单的实现微信平台开发 使用说明:新手入门很适合的,你可以看我转载的博客:http://my.oschina.net/xz360/blog/341169 也可以去看官网的文档:http://mp.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5 无 ?phpdefine ( "TOKEN", "weixin" );$wech
简单的实现微信平台开发
<?php
define ( "TOKEN", "weixin" );
$wechatObj = new wechatCallbackapiTest ();
if (isset ( $_GET ['echostr'] )) {
$wechatObj->valid ();
} else {
$wechatObj->responseMsg ();
}
class wechatCallbackapiTest {
// 验证Token
public function valid() {
$echoStr = $_GET ["echostr"];
if ($this->checkSignature ()) {
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;
}
return false;
}
/* 回应 */
public function responseMsg() {
$postStr = $GLOBALS ["HTTP_RAW_POST_DATA"];
if (! empty ( $postStr )) {
$postObj = simplexml_load_string ( $postStr, 'SimpleXMLElement', LIBXML_NOCDATA );
$RX_TYPE = trim ( $postObj->MsgType );
switch ($RX_TYPE) {
//接收关注/取消关注、扫描带参数二维码【未关注时,进行关注后、用户已关注】、上报地理位置、自定义菜单【点击菜单拉取消息、点击菜单跳转链接】
case "event" :
$result = $this->receiveEvent ( $postObj );
break;
//接收普通的文字、图片、媒体消息
case "text" :
$result = $this->receiveText ( $postObj );
break;
}
echo $result;
} else {
echo "";
exit ();
}
}
// 处理接收到用户发送的消息
private function receiveEvent($object) {
$content = "";
switch ($object->Event) {
//关注
case "subscribe" :
$content = "感谢您的关注,本账号目前还\n在测试阶段,给您带来的不便请谅解!";
break;
//取消关注
case 'unsubscribe':
$content = "欢迎您再次关注我们“女人要懂得爱自己”!";
break;
}
if (is_array ( $content )) {
$result = $this->transmitNews ( $object, $content );
} else {
$result = $this->transmitText ( $object, $content );
}
return $result;
}
/* 处理接收到的文本 */
private function receiveText($object) {
$keyword = trim ( $object->Content );
if (strstr ( $keyword, "四六级" ) || strstr ( $keyword, "英语" )) {
$content = array ();
$content [] = array (
"Title" => "2014年6月全国大学英语四六级考试成绩查询",
"Description" => "",
"PicUrl" => "http://img003.21cnimg.com/photos/album/20141104/m600/B2579ABF2B905FA793C6756A59044992.jpeg",
"Url" => "http://apix.sinaapp.com/cet/index.php?openid=" . $object->FromUserName
);
$content [] = array (
"Title" => "刘强东带奶茶妹妹看牙 两人旁若无人地忘情缠绵(图)",
"Description" => "",
"PicUrl" => "",
"Url" => "http://news.21cn.com/social/shixiang/a/2014/1105/11/28502924.shtml"
);
} else {
$content = date ( "Y-m-d H:i:s", time () ) . "\n目前正在测试阶段";
}
if (is_array ( $content )) {
$result = $this->transmitNews ( $object, $content );
} else {
$result = $this->transmitText ( $object, $content );
}
return $result;
}
/* 输出文章 */
private function transmitText($object, $content) {
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$result = sprintf ( $textTpl, $object->FromUserName, $object->ToUserName, time (), $content );
return $result;
}
/* 输出图文 */
private function transmitNews($object, $arr_item) {
if (! is_array ( $arr_item ))
return;
$itemTpl = "
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
";
$item_str = "";
foreach ( $arr_item as $item )
$item_str .= sprintf ( $itemTpl, $item ['Title'], $item ['Description'], $item ['PicUrl'], $item ['Url'] );
$newsTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<Content><![CDATA[]]></Content>
<ArticleCount>%s</ArticleCount>
<Articles>
$item_str
</Articles>
</xml>";
$result = sprintf ( $newsTpl, $object->FromUserName, $object->ToUserName, time (), count ( $arr_item ) );
return $result;
}
}
?>
微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号