仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1025|回复: 8
打印 上一主题 下一主题

[学习教程] PHP教程之SpeedPHP微信接口扩大

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
告诉你了一个方式,但是缺少努力这一环节,那也是白搭。
这个扩大完成了SP和微信公家平台的对接,1.0版临时只完成了最复杂的功效:绑定,收信息,复兴信息。
扩大设置办法:
[quote]$spConfig=array(
mode=>debug
//扩大设置
,ext=>array(
//微信扩大设置
spWeiXin=>array(
TOKEN=>weixin//微信通讯密钥,背景设置
)
)
);
[/quote][quote]然后在controll的办法内里实行:
[quote]$wx=spClass(spWeiXin);
$msg=$wx->run();
就好了,假如是绑定那末会间接输入微信指定显现的echostr,程序中断实行。假如是收到信息,那末$msg就是收到的信息的数组,键名对比微信官方文档就成。

<?php/***<b>SpeedPHP微信接口扩大</b>*<p>2013年8月15日08:51:23</p>*@authorLee(leeldy[AT]163.com)*@version1.0*/classspWeiXin{//微信通讯密钥private$token;//微信公家帐号IDprivate$publicuserid;//信息承受者private$touserid;publicfunction__construct(){$params=spExt(spWeiXin);//猎取设置参数if(empty($params[TOKEN])){spError(微信公家帐号通讯密钥未设置!);}$this->token=$params[TOKEN];}/***绑定微信接口*@returnstringfalse*/publicfunctionbind(){//随机字符串$echoStr=$_GET["echostr"];//微信加密署名$signature=$_GET["signature"];//署名工夫戳$timestamp=$_GET["timestamp"];//加密随机数$nonce=$_GET["nonce"];/**加密/校验流程:1.将token、timestamp、nonce三个参数举行字典序排序2.将三个参数字符串拼接成一个字符串举行sha1加密3.开辟者取得加密后的字符串可与signature对照,标识该哀求来历于微信*/$tmpArr=array($this->token,$timestamp,$nonce);sort($tmpArr);$_signature=sha1(implode($tmpArr));if($_signature!=$signature){//署名不准确,前往false$echoStr=false;}return$echoStr;}/***吸收动静,前往动静数组*@returnarray*/publicfunctionreceive(){$raw=$this->php_fix_raw_query();$msg=false;if(!empty($raw)){$msg=(array)simplexml_load_string($GLOBALS[HTTP_RAW_POST_DATA],SimpleXMLElement,LIBXML_NOCDATA);$this->publicuserid=$msg[ToUserName];$this->touserid=$msg[FromUserName];}return$msg;}/***猎取POST提交的原始数据*@authorrobotreplyatgmaildotcom(24-Jul-200908:17)*@returnstring*/privatefunctionphp_fix_raw_query(){//Tryglobalsarray//试图从全局变量中猎取if(isset($GLOBALS["HTTP_RAW_POST_DATA"])){return$GLOBALS["HTTP_RAW_POST_DATA"];}//Tryglobalsvariable//试图从全局变量中猎取if(isset($HTTP_RAW_POST_DATA)){return$HTTP_RAW_POST_DATA;}$post=;//Trystream//试图从流中猎取if(!function_exists(file_get_contents)){//php://inputisnotavailablewithenctype="multipart/form-data".$fp=fopen("php://input","r");if($fp){while(!feof($fp)){$post=fread($fp,1024);}fclose($fp);}}else{$post=file_get_contents("php://input");}return$post;}/***<b>复兴文本动静</b>*<p>关于每个POST哀求,开辟者在呼应包中前往特定xml布局</p>*<p>对该动静举行呼应(现撑持复兴文本、图文、语音、视频、音乐和对收到的动静举行星标操纵)</p>*<p>微佩服务器在五秒内收不到呼应会断失落毗连。</p>*@paramstring$Content复兴的动静内容*@returnstringfalse*/publicfunctionreplyText($Content){$msg=false;if(!empty($Content)){//CreateTime动静创立工夫$CreateTime=time();$msg=<<<XML<xml><ToUserName><![CDATA[{$this->touserid}]]></ToUserName><FromUserName><![CDATA[{$this->publicuserid}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[{$Content}]]></Content></xml>XML;}return$msg;}/***<b>复兴音乐动静</b>*@paramstring$Title题目*@paramstring$Description形貌*@paramstring$MusicUrl音乐链接*@paramstring$HQMusicUrl高质量音乐链接,WIFI情况优先利用该链接播放音乐*@returnstringfalse*/publicfunctionreplyMusic($Title,$Description,$MusicUrl,$HQMusicUrl){$msg=false;if(!empty($MusicUrl)){//CreateTime动静创立工夫$CreateTime=time();$msg=<<<XML<xml><ToUserName><![CDATA[{$this->touserid}]]></ToUserName><FromUserName><![CDATA[{$this->publicuserid}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA[music]]></MsgType><Music><Title><![CDATA[{$Title}]]></Title><Description><![CDATA[{$Description}]]></Description><MusicUrl><![CDATA[{$MusicUrl}]]></MusicUrl><HQMusicUrl><![CDATA[{$HQMusicUrl}]]></HQMusicUrl></Music></xml>XML;}return$msg;}/***复兴图文动静*@paramtype$Articles文章列表array(array(Title,PicUrl,Url))*@returnstringfalse*/publicfunctionreplyNews($Articles){$msg=false;$articlesStr=;//图文动静个数,限定为10条之内$ArticleCount=0;foreach($Articlesas$_art){if(!empty($_art[Title])&&!empty($_art[PicUrl])&&!empty($_art[Url])){$ArticleCount++;$articlesStr.="<item><Title><![CDATA[{$_art[Title]}]]></Title><Description><![CDATA[{$_art[Description]}]]></Description><PicUrl><![CDATA[{$_art[PicUrl]}]]></PicUrl><Url><![CDATA[{$_art[Url]}]]></Url></item>";}}if(!empty($ArticleCount)){//CreateTime动静创立工夫$CreateTime=time();$msg=<<<XML<xml><ToUserName><![CDATA[{$this->touserid}]]></ToUserName><FromUserName><![CDATA[{$this->publicuserid}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA[news]]></MsgType><ArticleCount>{$ArticleCount}</ArticleCount><Articles>{$articlesStr}</Articles></xml>XML;}return$msg;}/***运转*@returntype*/functionrun(){//微佩服务器每次哀求城市将signature,timestamp,nonce三个参数GET到接口//只能经由过程是不是存在echostr来判别是不是是接口绑定举措if(isset($_GET[echostr])){//绑定exit($this->bind());}else{//收到信息return$this->receive();}}}?>[/quote][/quote]让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。
若天明 该用户已被删除
沙发
发表于 2015-1-19 05:53:38 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
蒙在股里 该用户已被删除
板凳
 楼主| 发表于 2015-1-27 23:48:25 来自手机 | 只看该作者
实践是检验自己会不会的真理。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-5 16:06:37 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
活着的死人 该用户已被删除
5#
发表于 2015-2-12 22:55:31 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
冷月葬花魂 该用户已被删除
6#
发表于 2015-3-3 11:24:55 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
小妖女 该用户已被删除
7#
发表于 2015-3-11 10:45:59 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
简单生活 该用户已被删除
8#
发表于 2015-3-18 10:47:34 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
若相依 该用户已被删除
9#
发表于 2015-3-25 21:13:03 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-20 16:44

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表