做个广告先,

PHP千人群(6848027)

C++群 (1414577)

看雪汇编&反汇编群(15375777)

看雪汇编&反汇编2群(4915800)

转载不一定注明出处,只要推荐下群就可以哈,各位亲~

微信开发_微信教程__微信通讯框架V1.0

<?php
/**
* 微信消息框架 by 牛牛 Q 184377367
*/
class WeChat { public $token = null;
public $msgType = null;
public $event = null;
public $eventKey = null;
public $keyword = null;
public $context = array();
public $insHandle = array(); public function Valid($retstr) { if ($this->CheckSignatrue()) {
echo $retstr;
exit;
}
} public function RegisterHandle(WeChatInterface $ins){
array_push($this->insHandle, $ins);
} public function GetPostContent() { //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->context['fromUserName'] = $postObj->FromUserName;
$this->context['toUserName'] = $postObj->ToUserName;
$this->context['time'] = $postObj->CreateTime;
$this->keyword = trim($postObj->Content);
$this->msgType = $postObj->MsgType;
// $this->msgType = 'event';
$this->event = $postObj->Event;
$this->eventKey = $postObj->EventKey;
$this->ActionRouter(); } else {
echo "";
exit;
}
} private function CheckSignatrue() {
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"]; $tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature) {
return true;
} else {
return false;
}
} /*
* 事件消息
*/
public function OnEvent($event, $eventkey, $context ){ if ( count($this->insHandle)>0 ){
foreach ( $this->insHandle as $ins ){ $ins->OnEvent($event, $eventkey, $context);
}
}
} /*
* 文字消息
*/
public function OnText($keyword,$context){
if ( count($this->insHandle)>0 ){
foreach ( $this->insHandle as $ins ){ $ins->OnText($keyword,$context);
}
}
} private function ActionRouter(){ switch ($this->msgType)
{
case 'event': $this->OnEvent($this->event, $this->eventKey, $this->context);
break;
case 'text':
$this->OnText($this->keyword, $this->context);
break;
default :
exit(); }
} } ?>
<?php
/**
* 微信消息框架 by 牛牛 Q 184377367
*/
interface WeChatInterface{ public function OnEvent($event, $eventkey, $context);
public function OnText($keyword,$context); } ?>
<?php
/**
* 微信消息框架 by 牛牛 Q 184377367
* 操作类必须实现
* WeChatInterface接口中的方法(OnEvent,OnText)
* OnEvent
* OnText
* 微信有事件消息触发OnEvent,文本消息触发OnText */
class WeChatIns implements WeChatInterface { public function OnEvent($event, $eventkey, $context) { $this->PostNews($context); } public function OnText($keyword, $context) {
$this->PostNews($context);
} public function PostText(){ } public function PostNews($context){ $ary[0]['Title'] = '测试';
$ary[0]['Description'] = '测试';
$ary[0]['PicUrl'] = 'http://xxx.jpg';
$ary[0]['Url'] = 'http://qq.com';
echo WeChatUtil::CreateNewsXML($ary, $context); } } ?>
<?php
/**
* 微信消息框架 by 牛牛 Q 184377367
*/
class WeChatUtil { static public function CreateNewsXML( $ary ,$context) {
$count = count($ary);
$textTpl = "<xml>
<ToUserName><![CDATA[".$context['fromUserName']."]]></ToUserName>
<FromUserName><![CDATA[".$context['toUserName']."]]></FromUserName>
<CreateTime>".time()."</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<Content><![CDATA[这里是内容]]></Content>
<ArticleCount>".$count."</ArticleCount>
<Articles>"; foreach($ary as $k=>$v){
$textTpl.="<item>
<Title><![CDATA[".$v['Title']."]]></Title>
<Description><![CDATA[".$v['Description']."]]>
</Description>
<PicUrl><![CDATA[".$v['PicUrl']."]]></PicUrl>
<Url><![CDATA[".$v['Url']."]]></Url>
</item>";
}
$textTpl.="</Articles><FuncFlag>0</FuncFlag></xml>";
return $textTpl; } } ?>
<?php
/**
* 微信消息框架 by 牛牛 Q 184377367
*/
/*
import 是TP函数,换成include吧 0 0
*/
import('ORG.WeChatInterface');
import('ORG.WeChatIns');
import('ORG.WeChat'); $wechatObj = new WeChat();
//微信TOKEN
$wechatObj->token = '';
$wechatObj->RegisterHandle( new WeChatIns() );
if (isset( $_GET['echostr'] )) {
$wechatObj->Valid( $_GET['echostr'] );
} else {
$wechatObj->GetPostContent();
} ?>

微信开发_微信教程__微信通讯框架V1.0的更多相关文章

  1. 《C#微信开发系列(Top)-微信开发完整学习路线》

    年前就答应要将微信开发的学习路线整理给到大家,但是因为年后回来这段时间学校还有公司那边有很多事情需要兼顾,所以没能及时更新文章.今天特地花时间整理了下,话不多说,上图,希望对大家的学习有所帮助哈. 如 ...

  2. C#微信开发小白成长教程二(新手接入指南,附视频)

    距离第一讲又已经过去了一个多星期了,本打算一周更新一讲的,奈何实在太忙.最近也在群里发现有一部分人已经可以熟练调用微信的部分接口但却不是很清楚微信公众平台接收消息的一个处理机制.本讲就来介绍下怎么接入 ...

  3. C#微信开发小白成长教程一(公众平台的工作原理与调试环境部署,附视频)

    黑夜给了我黑色的眼睛,我决定录视频到天明.半年前的现在,我还在苦逼着加着班,半年后的今天我依旧苦逼着加着班.不过现在的是为自己加班,作为一个资深程序小白,一个月前我光荣的成了一个不称职的资本家,不称职 ...

  4. [转载红鱼儿]delphi 实现微信开发(2)接入微信公众号平台

    先要学习一下接入的资料,在这里,因为原理都在,所以一定要认真阅读,然后,利用Delphi实现一个对应函数,然后申请微信公众平台接口测试帐号. function CheckSignature(const ...

  5. 微信开发(3):微信公众号发现金红包功能开发,利用第三方SDK实现(转)

    最近需求是 用户兑换微信红包,需要一些验证,加密,以及证书: 工欲善其事必先利其器 感谢前辈的微信SDK 已经维护三年了,还在维护中! 官方文档走一波 文档还是一如既往的 坑人啊,写的很简单,对简单明 ...

  6. 微信开发+百度AI学习:微信网页开发环境搭建

    参考微信官方文档:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 两步即可获取微信网页开发能力 STEP1: ...

  7. 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息

    V0.2版的开源距离今天(05年03月)已有近3年的时间.可以说这个版本已经有点落伍的感觉了,呵呵. V0.2版至今一直处于BUG的修复及一些细小功能的增加,所以版本号上一直没有变化. 其实在这1.2 ...

  8. Farseer.net轻量级ORM开源框架 V1.0 开发目标

    本篇主要给大家说明下在V1.0中,计划开发的任务的状态.按照国际惯例.上大表格 开发计划状态 编号 模块 状态 说明 1  分离Utils.Extend.UI  √  在V0.2版本中,是集成在一个项 ...

  9. java微信开发(wechat4j)——支持微信JS-SDK的jsapi_ticket中控服务器

    jsapi_ticket是使用js-sdk必须要的一个凭证,需要配置在js中. jsapi_ticket获取 要获取jsapi_ticket可以使用如下的方法 String jsapi_ticket ...

随机推荐

  1. B. Wet Shark and Bishops(思维)

    B. Wet Shark and Bishops time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  2. springMvc 支持hibernate validator

    SpringMVC 支持Hibernate Validator 发表于9个月前(2014-08-04 11:34)   阅读(1780) | 评论(0) 11人收藏此文章, 我要收藏 赞0 5月23日 ...

  3. api文档生成工具 C#

    要为编写的程序编写文档,这是件费力气的事,如果能自动生成就好了. 不怕做不到,就怕想不到.这不,搜索到了Sandcastle 比较好的参考文章: 1.Sandcastle官方网址: http://sh ...

  4. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法

    简介: 本文主要介绍几种基于灰度的图像匹配算法:平均绝对差算法(MAD).绝对误差和算法(SAD).误差平方和算法(SSD).平均误差平方和算法(MSD).归一化积相关算法(NCC).序贯相似性检测算 ...

  5. IE 对象不支持“attachEvent”属性或方法

    解决方法:attachEvent 是很旧的非标准方法.请使用 addEventListener.

  6. org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误

    Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "erro ...

  7. C++11多线程

    这篇文章说的很详细: https://www.ibm.com/developerworks/cn/linux/1412_zhupx_thread/

  8. Qt QToolTip 控件背景的 QSS 设置方法(摘抄)

    Qt/C++/CSS: QTooltip stylesheet background colour Hi there, I've recently come across a problem deve ...

  9. Hibernate知识总结(一)——Hibernate原理概述

    一.Hibernate是什么: 它是一个持久化框架,它对JDBC进行了轻量级的封装,简化对数据库的操作,提高开发效率.和另一个持久化框架MyBatis一样,他们操作数据库都是通过一个session对象 ...

  10. 1.PHP 教程_PHP 简介

    PHP是服务器端脚本语言. 在学习之前,您需要对以下知识有基本的了解: HTML css PHP是什么? PHP代表PHP:Hypertext Preprocessor PHP是一种使用广泛的开源的脚 ...