版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP对接微信公众平台消息接口开发流程教程这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下一、写好接口程序在你的服务器上上传好一个接口程序文件,
如
/weixin.php
内容如下:复制代码 代码如下:<?phpdefine("TOKEN","weixin");//自己定义的token就是个通信的私钥$wechatObj=newwechatCallbackapiTest();$wechatObj->valid();//$wechatObj->responseMsg();classwechatCallbackapiTest{publicfunctionvalid(){$echoStr=$_GET["echostr"];if($this->checkSignature()){echo$echoStr;exit;}}publicfunctionresponseMsg(){$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];if(!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);$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(!empty($keyword)){$msgType="text";$contentStr='你好啊,屌丝 ';$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time,$msgType,$contentStr);echo$resultStr;}else{echo'咋不说哈呢';}}else{echo'咋不说哈呢';exit;}}privatefunctioncheckSignature(){$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){returntrue;}else{returnfalse;}}}?>二、配置微信公众平台回复接口设置回复接口,填好URL和
Token(url填上面的
/weixin.php
,token必须跟上面程序里面定义的
Token一致)三、验证接口用自己的个人微信关注下你的公众账号,给这个账号发一条消息过去,收到原样的消息返回,即验证成功了。四、开始自定义回复注释掉$wechatObj->valid(); 这行,同时去掉 //$wechatObj->responseMsg();这行的注释。你可以修改 responseMsg函数里面的代码, 根据用户的消息类型 ('text','image','location'消息内容来回复用户不同的内容。消息接口就可以使用了,发个消息试试看吧?
)和1.封装
weixin.class.php由于微信公众平台的通信使用的是特定格式的 XML数据,每次接受和回复都要去做一大堆的数据处理。我们就考虑在这个基础上做一次封装, weixin.class.php,代码如下:复制代码 代码如下:<?phpclassWeixin{public$token='';//tokenpublic$debug= false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据public$setFlag=false;public$msgtype='text'; //('text','image','location')public$msg=array();publicfunction__construct($token,$debug){$this->token=$token;$this->debug=$debug;}//获得用户发过来的消息(消息内容和消息类型 )publicfunctiongetMsg(){$postStr=$GLOBALS["HTTP_RAW_POST_DATA"];if($this->debug){$this->write_log($postStr);}if(!empty($postStr)){$this->msg = (array)simplexml_load_string($postStr, 'SimpleXMLElement',LIBXML_NOCDATA);$this->msgtype=strtolower($this->msg['MsgType']);}}回复文本消息publicfunctionmakeText($text=''){$CreateTime=time();$FuncFlag=$this->setFlag?1:0;$textTpl="<xml><ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName><FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA1]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>%s</FuncFlag></xml>";returnsprintf($textTpl,$text,$FuncFlag);}根据数组参数回复图文消息publicfunctionmakeNews($newsData=array()){$CreateTime=time();$FuncFlag=$this->setFlag?1:0;$newTplHeader="<xml><ToUserName><![CDATA[{$this->msg['FromUserName']}]]></ToUserName><FromUserName><![CDATA[{$this->msg['ToUserName']}]]></FromUserName><CreateTime>{$CreateTime}</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[%s]]></Content><ArticleCount>%s</ArticleCount><Articles>";$newTplItem="<item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>";$newTplFoot="</Articles><FuncFlag>%s</FuncFlag></xml>";一次最多
$Content='';$itemsCount=count($newsData['items']);$itemsCount=$itemsCount<10?$itemsCount:10;//10条if($itemsCount){foreach($newsData['items']as$key=>$item){if($key<=9){$Content
微信公众平台图文回复的消息
.=sprintf($newTplItem,$item['title'],$item['description'],$item['picurl'],$item['url']);}}}$header=sprintf($newTplHeader,$newsData['content'],$itemsCount);$footer=sprintf($newTplFoot,$FuncFlag);return$header.$Content.$footer;}publicfunctionreply($data){if($this->debug){$this->write_log($data);}echo$data;}publicfunctionvalid(){if($this->checkSignature()){if($_SERVER['REQUEST_METHOD']=='GET'){echo$_GET['echostr'];exit;}}else{write_log('认证失败');exit;}}privatefunctioncheckSignature(){$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){returntrue;}else{returnfalse;}}privatefunctionwrite_log($log){//这里是你记录调试信息的地方
请自行完善
以便中间调试}}?>2.调用weixin.class.php把你的微信公众平台主接口文件(如前面定义的 )中,修改代码为:复制代码 代码如下:<?phpinclude_once('weixin.class.php');// 引用刚定义的微信消息处理类define("TOKEN","mmhelper");define('DEBUG',true);$weixin=newWeixin(TOKEN,DEBUG);//实例化$weixin->getMsg();$type=$weixin->msgtype;//消息类型$username=$weixin->msg['FromUserName'];// 哪个用户给你发的消息
,这个$username是微信加密之后的,但是每个用户都是一一对应的if($type==='text'){if($weixin->msg['Content']=='Hello2BizUser'){//微信用户第一次关注你的账号的时候,你的公众账号就会受到一条内容为'Hello2BizUser'的消息$reply=$weixin->makeText('欢迎你关注哦,屌丝
');}else{//
这里就是用户输入了文本信息$keyword=$weixin->msg['Content'];include_once("chaxun.php");//
//用户的文本消息内容文本消息 调用查询程序$chaxun=newchaxun(DEBUG,$keyword,$username);$results['items']=$chaxun->search();//查询的代码$reply=$weixin->makeNews($results);}}elseif($type==='location'){//用户发送的是位置信息 稍后的文章中会处理}elseif($type==='image'){//用户发送的是图片 稍后的文章中会处理}elseif($type==='voice'){//用户发送的是声音 稍后的文章中会处理}$weixin->reply($reply);?>3.查询代码还需要将数据库里面的查询结果格式化为特定的形式复制代码 代码如下:<?phppublicfunctionsearch(){$record=array(); //定义返回结果的数组$list=$this->search($this->keyword);// 普通的根据关键词查询数据库的操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津中医药大学第一附属医院招聘20人备考题库及完整答案详解一套
- 3D打印导板在神经外科手术中的精准设计与精准定制
- 2025年宁波市升力同创科技咨询服务有限公司招聘备考题库有答案详解
- 3D打印个性化骨缺损修复支架的血管化策略
- 2型糖尿病神经病变的早期预防社区实践
- 上海市2025年事业单位公开招聘高层次急需紧缺专业技术人才备考题库及完整答案详解1套
- 2025年韶山旅游发展集团招聘中层管理人员备考题库带答案详解
- 2025年马鞍山市住房公积金管理中心编外聘用人员招聘备考题库完整答案详解
- 核工业井巷建设集团有限公司2026年校园招聘备考题库及答案详解参考
- 2025年金华市轨道交通控股集团有限公司财务岗应届毕业生招聘备考题库完整参考答案详解
- 拆迁劳务合同协议
- 2025年云南省交通投资建设集团有限公司下属港投公司社会招聘51人备考题库完整参考答案详解
- 2025中国融通资产管理集团有限公司招聘(230人)(公共基础知识)测试题附答案解析
- 工作交接表-交接表
- 2025年课件-(已瘦身)2023版马原马克思主义基本原理(2023年版)全套教学课件-新版
- 2025云南省人民检察院招聘22人考试笔试备考题库及答案解析
- 2025国家统计局齐齐哈尔调查队招聘公益性岗位5人笔试考试备考题库及答案解析
- 学堂在线 雨课堂 学堂云 医学英语词汇进阶 期末考试答案
- JC∕T 942-2022 丁基橡胶防水密封胶粘带
- MOOC 工程材料学-华中科技大学 中国大学慕课答案
- 车间技术提升的人才培养与知识传承
评论
0/150
提交评论