微信两个服务器之间的连通

这篇博客详细介绍了如何实现微信两个服务器之间的连通。首先通过检查签名验证请求来源,然后处理POST数据,当接收到用户消息时,回复定制的欢迎语。整个过程涉及到微信API的调用和XML数据的处理。
摘要由CSDN通过智能技术生成

接通两个服务器

[php]  view plain  copy
  1. define("TOKEN""weixin");  
  2. $wechatObj = new wechatCallbackapiTest();  
  3.  $wechatObj->run();  
  4.   
  5. class wechatCallbackapiTest  
  6. {  
  7.     public function run(){  
  8.         $echoStr = $_GET["echostr"];  
  9.         //valid signature , option  
  10.         if($this->checkSignature()){  
  11.             echo $echoStr;  
  12.             exit;  
  13.         }  
  14.     }  
[php]  view plain  copy
  1. //返回$echostr  接入成功  
[php]  view plain  copy
  1. public function responseMsg()  
  2.     {  
  3.         //get post data, May be due to the different environments  
  4.         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];  
  5.         file_put_contents('msg.txt'$postStr,FILE_APPEND);  
  6.         //extract post data  
  7.         if (!empty($postStr)){  
  8.                   
  9.                 $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA);  
  10.                 $fromUsername = $postObj->FromUserName;  
  11.                 $toUsername = $postObj->ToUserName;  
  12.                 $keyword = trim($postObj->Content);  
  13.                 $time = time();  
  14.                 $textTpl = "<xml>  
  15.                             <ToUserName><![CDATA[%s]]></ToUserName>  
  16.                             <FromUserName><![CDATA[%s]]></FromUserName>  
  17.                             <CreateTime>%s</CreateTime>  
  18.                             <MsgType><![CDATA[%s]]></MsgType>  
  19.                             <Content><![CDATA[%s]]></Content>  
  20.                             <FuncFlag>0</FuncFlag>  
  21.                             </xml>";      
  22.                           
  23.                 if(!empty$keyword ))  
  24.                 {  
  25.   
  26.   
  27.                     $msgType = "text";  
  28.                     $contentStr = "Welcome to wechat world!";  
  29.                     $resultStr = sprintf($textTpl$fromUsername$toUsername$time$msgType$contentStr);  
  30.                     echo $resultStr;  
  31.                     file_put_contents('msg.txt'$resultStr,FILE_APPEND);  
  32.                 }else{  
  33.                     echo "Input something...";  
  34.                 }  
  35.   
  36.   
  37.         }else {  
  38.             echo "";  
  39.             exit;  
  40.         }  
  41.     }  
[php]  view plain  copy
  1. //判断请求是否来自腾讯服务器 
  2. 将token、timestamp、nonce三个参数进行字典序排列,将三个参数字符串拼接成一个字符串进行sha1加密

[php]  view plain  copy
  1. private function checkSignature()  
  2.     {  
  3.         $signature = $_GET["signature"];  
  4.         $timestamp = $_GET["timestamp"];  
  5.         $nonce = $_GET["nonce"];      
  6.                   
  7.         $token = TOKEN;  
  8.         $tmpArr = array($token$timestamp$nonce);  
  9.         sort($tmpArr);  
  10.         $tmpStr = implode( $tmpArr );  
  11.         $tmpStr = sha1( $tmpStr );  
  12.           
  13.         if$tmpStr == $signature ){  
  14.             return true;  
  15.         }else{  
  16.             return false;  
  17.         }  
  18.     }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值