PHP 微信公众号开发者模式 第三方接入
来源:互联网 发布:知到演讲与口才答案 编辑:程序博客网 时间:2024/04/30 10:35
<?php//define your tokendefine("TOKEN", "weixin2015");$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();class wechatCallbackapiTest{ public function valid(){ $echoStr = $_GET["echostr"]; //valid signature , option if($this->checkSignature()){ echo $echoStr; $this->responseMsg();//验证后处理用户发关的消息-这里是原样返回用户的消息] exit; } } public function responseMsg(){ //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); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $type = $postObj->MsgType; $event = $postObj->Event; $c = $postObj->Location_X; $d = $postObj->Location_Y; $Label = $postObj->Label; $keyword = trim($postObj->Content); $PicUrl = trim($postObj->PicUrl); $msgType = trim($postObj->msgType); $time = time(); $textTpl = "<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> <FuncFlag>1</FuncFlag> </xml>"; $msgid = $postObj->MsgId; $picurl = $postObj->PicUrl; $piccontentTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[%s]]></Title> <Description><![CDATA[%s]]></Description> <PicUrl><![CDATA[%s]]></PicUrl> <Url><![CDATA[%s]]></Url> </item> </Articles> <FuncFlag>1</FuncFlag> </xml>";//图片消息 //天气信息 $textHaderTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[news]]></MsgType><Content><![CDATA[]]></Content><ArticleCount>%d</ArticleCount><Articles>";$textContentTpl = "<item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>";$textFooterTpl = "</Articles><FuncFlag>1</FuncFlag></xml>"; $imageTpl="<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Image> <MediaId><![CDATA[%s]]></MediaId> </Image> </xml>";//图片image if(!empty($keyword)){ if(1==$keyword){$msgType = "text";$content1="你的openid: $fromUsername \r\n \r\n TOKEN:".TOKEN.'';$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $content1); echo $resultStr; }else{//接入第三方URL、token$url = '第三方URL';$token = '第三方TOKEN';$timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); $url .= stripos($url, '?') === false ? '?' : '&'; $url .= http_build_query(array( 'signature' => $tmpStr, 'timestamp' => $timestamp, 'nonce' => $nonce, ));//echo $url;//如果不是项目相关的事件 $returnStr返回空$header = array();//$header[] = "Content-type: text/xml";//定义content-type为xml$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postStr);//curl_setopt($ch, CURLOPT_POSTFIELDS, $pp);$response = curl_exec($ch);if(curl_errno($ch)){ error_log (curl_error($ch));}curl_close($ch);echo $response; } }else{ if($event=="subscribe"){// $msgType = "text"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, "欢迎关注"); echo $resultStr; }else if($type=='location'){// } echo "Input something..."; } }else { echo ""; 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;}}}?>
0 0
- PHP 微信公众号开发者模式 第三方接入
- 微信公众平台开发者模式接入PHP代码
- 微信开放平台,公众号第三方平台接入
- 微信公众号开发者接入
- 微信公众号接入第三方管理平台和创建微官网
- java微信公众号第三方接入解析及全网检测代码示例
- 微信公众号开发之——第三方自动回复机器人接入
- 第三方支付:微信公众号接入支付宝支付开发
- Java微信公众号--1--基本配置接入开发者模式
- 微信公众号第三方开发之一创建微信公众号第三方平台
- PHP-TP微信公众号接入微信分享
- 微信公众平台的开发者模式(PHP)
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发
- php开发微信公众号 第三方平台一键绑定(授权)感言
- 微信公众号接入
- 微信公众号接入
- Android微信第三方登录接入
- Android 数据查询query函数参数解析
- Android GPS学习笔记(5)—LMS初始化
- 必须了解的Java 基础题
- NBU中手工将磁带过期办法
- 基于mvc模式的应用框架之struts2(一)---Struts2的执行流程和原理
- PHP 微信公众号开发者模式 第三方接入
- mysql约束
- 解决a different object with the same identifier value was already associated with the session错误
- 烟台地铁路线图 Yantai Subway
- server---服务器端允许跨域
- Freemaker中list的使用
- java android面试题分析总结
- 完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题
- SMB协议与Samba软件