当前位置:首页 > PHP教程 > php高级应用 > 列表

PHP封装的微信公众平台接口开发操作类完整示例

发布:smiling 来源: PHP粉丝网  添加日期:2018-11-15 09:39:55 浏览: 评论:0 

本文实例讲述了PHP封装的微信公众平台接口开发操作类。分享给大家供大家参考,具体如下:

示例调用 index.php

  1. <!--?php 
  2. /** 
  3. * Author: 惹妹子生气了 
  4. * Date: 2017-08-10 
  5. */ 
  6. class MpWeixin 
  7.   public $config
  8.   public $class_obj
  9.   public $is_check_signature = false; 
  10.   public function __construct() 
  11.   { 
  12.     //获取配置 
  13.     $this--->config = array('appid'=>'dfdfdfdfdf''secret'=>'343434343434'); 
  14.     $echostr = isset($_GET['echostr']) ? $_GET['echostr'] : ''// 是否来自于微信的服务器配置验证 
  15.     if ($echostr) { 
  16.       $this->is_check_signature = true; 
  17.     }else
  18.       $this->is_check_signature = false; 
  19.       include_once "mpweixin.class.php"
  20.       $this->class_obj = new mpweixin($this->config); //实例化对应的插件 
  21.     } 
  22.   } 
  23.   /** 
  24.    * 服务器地址(用户消息和开发者需要的事件推送,会被转发到该URL中) 
  25.    */ 
  26.   public function index() 
  27.   { 
  28.     if ($this->is_check_signature) { 
  29.       $this->valid(); 
  30.     }else
  31.       $this->class_obj->responseMsg(); 
  32.     } 
  33.   } 
  34.   /** 
  35.    * 开发者对签名(即signature)的效验,来判断此条消息的真实性 
  36.    */ 
  37.   public function valid() 
  38.   { 
  39.     $echoStr = $this->checkSignature(); 
  40.     if($echoStr){ 
  41.       header('content-type:text'); 
  42.       exit($echoStr); 
  43.     } 
  44.   } 
  45.   /** 
  46.   * 验证是否来自于微信 
  47.   * @return [type] [description] 
  48.   */ 
  49.   public function checkSignature() 
  50.   { 
  51.     //微信会发送4个参数到我们的服务器后台 签名 时间戳 随机字符串 随机数 
  52.     $signature = $_GET['signature']; // 签名 
  53.     $timestamp = $_GET['timestamp']; // 时间戳 
  54.     $echoStr = $_GET['echostr']; // 随机字符串 
  55.     $nonce = $_GET['nonce']; // 随机数 
  56.     if ($signature && $timestamp && $echoStr && $nonce) { 
  57.       // 微信公众号基本配置中的token 
  58.       $token = TOKEN; 
  59.       //将token、timestamp、nonce按字典序排序 
  60.       $tmpArr = array($token$timestamp$nonce); 
  61.       sort($tmpArr, SORT_STRING); 
  62.       // 将三个参数字符串拼接成一个字符串进行sha1加密 
  63.       $tmpStr = implode($tmpArr); 
  64.       $tmpStr = sha1($tmpStr); 
  65.       // 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 
  66.       if($tmpStr == $signature){ 
  67.         return $echoStr//phpfensi.com 
  68.       } else { 
  69.         return false; 
  70.       } 
  71.     } 
  72.   } 
  73. ?> 

PHP类文件 mpweixin.class.php

  1. <!--?php 
  2. /* 
  3. * 微信公众号插件 
  4. * 开发者模式,请先注册微信开放平台账号,然后启动开发模式 
  5. */ 
  6. class mpweixin{ 
  7.   public $appid
  8.   public $secret
  9.   public function __construct($config){ 
  10.     $this--->appid = $config['appid']; 
  11.     $this->secret = $config['secret']; 
  12.   } 
  13.   /* ----------------------------------响应----------------------------- */ 
  14.   /** 
  15.    * 响应消息 
  16.    */ 
  17.   public function responseMsg() 
  18.   { 
  19.     $postStr = file_get_contents("php://input"); 
  20.     if (!emptyempty($postStr)){ 
  21.       $this->logger("R \r\n".$postStr); 
  22.       $postObj = simplexml_load_string($postStr'SimpleXMLElement', LIBXML_NOCDATA); 
  23.       $RX_TYPE = trim($postObj->MsgType); 
  24.       switch ($RX_TYPE
  25.       { 
  26.         // 事件 
  27.         case "event"
  28.           $result = $this->receiveEvent($postObj); 
  29.           break
  30.         // 文本 
  31.         case "text"
  32.           if (strstr($postObj->Content, "第三方")){ 
  33.             $result = $this->relayPart3("http://www.fangbei.org/test.php".'?'.$_SERVER['UERY_STRING';], $postStr); 
  34.           }else
  35.             $result = $this->receiveText($postObj); 
  36.           } 
  37.           break
  38.         // 图片 
  39.         case "image"
  40.           $result = $this->receiveImage($postObj); 
  41.           break
  42.         // 地理位置 
  43.         case "location"
  44.           $result = $this->receiveLocation($postObj); 
  45.           break
  46.         // 语音 
  47.         case "voice"
  48.           $result = $this->receiveVoice($postObj); 
  49.           break
  50.         // 视频 
  51.         case "video"
  52.           $result = $this->receiveVideo($postObj); 
  53.           break
  54.         // 链接 
  55.         case "link"
  56.           $result = $this->receiveLink($postObj); 
  57.           break
  58.         default
  59.           $result = "unknown msg type: ".$RX_TYPE
  60.           break
  61.       } 
  62.       $this->logger("T \r\n".$result); 
  63.       echo $result
  64.     }else { 
  65.       echo ""
  66.       exit
  67.     } 
  68.   } 
  69.   /* ----------------------------------接收----------------------------- */ 
  70.   /** 
  71.    * 接收事件消息 
  72.    */ 
  73.   private function receiveEvent($object
  74.   { 
  75.     $content = ""
  76.     switch ($object->Event) 
  77.     { 
  78.       // 关注时的事件推送 
  79.       case "subscribe"
  80.         $content = "欢迎关注方倍工作室"
  81.         $content .= (!emptyempty($object->EventKey)) ? ("\n来自<a href="http://www.111cn.net/zhuanti/erweima/" class="anchor" target="_blank">二维码</a>场景".str_replace("qrscene_","",$object->EventKey)) : ""; 
  82.         break
  83.       // 取消关注事件 
  84.       case "unsubscribe"
  85.         $content = "取消关注"
  86.         break
  87.       // 点击菜单拉取消息时的事件推送 
  88.       case "CLICK"
  89.         switch ($object->EventKey) 
  90.         { 
  91.           case "COMPANY"
  92.             $content = array(); 
  93.             $content[] = array("Title"=>"方倍工作室""Description"=>"""PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg";, "Url" =>"http://m.cnblogs.com/?u=txw1958";); 
  94.             break
  95.           default
  96.             $content = "点击菜单:".$object->EventKey; 
  97.             break
  98.         } 
  99.         break
  100.       // 点击菜单跳转链接时的事件推送 
  101.       case "VIEW"
  102.         $content = "跳转链接 ".$object->EventKey; 
  103.         break
  104.       // 扫描带参数二维码场景,用户已关注时的事件推送 
  105.       case "SCAN"
  106.         $content = "扫描场景 ".$object->EventKey; 
  107.         break
  108.       // 上报地理位置事件 
  109.       case "LOCATION"
  110.         $content = "上传位置:纬度 ".$object->Latitude.";经度 ".$object->Longitude; 
  111.         break
  112.       // 扫码推事件且弹出“消息接收中”提示框的事件推送 
  113.       case "scancode_waitmsg"
  114.         if ($object->ScanCodeInfo->ScanType == "qrcode"){ 
  115.           $content = "扫码带提示:类型 二维码 结果:".$object->ScanCodeInfo->ScanResult; 
  116.         }else if ($object->ScanCodeInfo->ScanType == "barcode"){ 
  117.           $codeinfo = explode(",",strval($object->ScanCodeInfo->ScanResult)); 
  118.           $codeValue = $codeinfo[1]; 
  119.           $content = "扫码带提示:类型 条形码 结果:".$codeValue
  120.         }else
  121.           $content = "扫码带提示:类型 ".$object->ScanCodeInfo->ScanType." 结果:".$object->ScanCodeInfo->ScanResult; 
  122.         } 
  123.         break
  124.       // 扫码推事件的事件推送 
  125.       case "scancode_push"
  126.         $content = "扫码推事件"
  127.         break
  128.       // 弹出系统拍照发图的事件推送 
  129.       case "pic_sysphoto"
  130.         $content = "系统拍照"
  131.         break
  132.       // 弹出微信相册发图器的事件推送 
  133.       case "pic_weixin"
  134.         $content = "相册发图:数量 ".$object->SendPicsInfo->Count
  135.         break
  136.       // 弹出拍照或者相册发图的事件推送 
  137.       case "pic_photo_or_album"
  138.         $content = "拍照或者相册:数量 ".$object->SendPicsInfo->Count
  139.         break
  140.       // 弹出地理位置选择器的事件推送 
  141.       case "location_select"
  142.         $content = "发送位置:标签 ".$object->SendLocationInfo->Label; 
  143.         break
  144.       default
  145.         $content = "receive a new event: ".$object->Event; 
  146.         break
  147.     } 
  148.     if(is_array($content)){ 
  149.       if (isset($content[0]['PicUrl'])){ 
  150.         $result = $this->transmitNews($object$content); 
  151.       }else if (isset($content['MusicUrl'])){ 
  152.         $result = $this->transmitMusic($object$content); 
  153.       } 
  154.     }else
  155.       $result = $this->transmitText($object$content); 
  156.     } 
  157.     return $result
  158.   } 
  159.   /** 
  160.    * 接收文本消息 
  161.    */ 
  162.   private function receiveText($object
  163.   { 
  164.     $keyword = trim($object->Content); 
  165.     //多客服人工回复模式 
  166.     if (strstr($keyword"请问在吗") || strstr($keyword"在线客服")){ 
  167.       $result = $this->transmitService($object); 
  168.       return $result
  169.     } 
  170.     //自动回复模式 
  171.     if (strstr($keyword"文本")){ 
  172.       $content = "这是个文本消息"
  173.     }else if (strstr($keyword"表情")){ 
  174.       $content = "中国:".$this->bytes_to_emoji(0x1F1E8).$this->bytes_to_emoji(0x1F1F3)."\n仙人掌:".$this->bytes_to_emoji(0x1F335); 
  175.     }else if (strstr($keyword"单图文")){ 
  176.       $content = array(); 
  177.       $content[] = array("Title"=>"单图文标题""Description"=>"单图文内容""PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg";, "Url" =>"http://m.cnblogs.com/?u=txw1958";); 
  178.     }else if (strstr($keyword"图文") || strstr($keyword"多图文")){ 
  179.       $content = array(); 
  180.       $content[] = array("Title"=>"多图文1标题""Description"=>"""PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg";, "Url" =>"http://m.cnblogs.com/?u=txw1958";); 
  181.       $content[] = array("Title"=>"多图文2标题""Description"=>"""PicUrl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg";, "Url" =>"http://m.cnblogs.com/?u=txw1958";); 
  182.       $content[] = array("Title"=>"多图文3标题""Description"=>"""PicUrl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg";, "Url" =>"http://m.cnblogs.com/?u=txw1958";); 
  183.     }else if (strstr($keyword"音乐")){ 
  184.       $content = array(); 
  185.       $content = array("Title"=>"最炫民族风""Description"=>"歌手:凤凰传奇""MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3";, "HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3";); 
  186.     }else
  187.       $content = date("Y-m-d H:i:s",time())."\nOpenID:".$object->FromUserName."\n技术支持 方倍工作室"
  188.     } 
  189.     if(is_array($content)){ 
  190.       if (isset($content[0])){ 
  191.         $result = $this->transmitNews($object$content); 
  192.       }else if (isset($content['MusicUrl'])){ 
  193.         $result = $this->transmitMusic($object$content); 
  194.       } 
  195.     }else
  196.       $result = $this->transmitText($object$content); 
  197.     } 
  198.     return $result
  199.   } 
  200.   /** 
  201.    * 接收图片消息 
  202.    */ 
  203.   private function receiveImage($object
  204.   { 
  205.     $content = array("MediaId"=>$object->MediaId); 
  206.     $result = $this->transmitImage($object$content); 
  207.     return $result
  208.   } 
  209.   /** 
  210.    * 接收位置消息 
  211.    */ 
  212.   private function receiveLocation($object
  213.   { 
  214.     $content = "你发送的是位置,经度为:".$object->Location_Y.";纬度为:".$object->Location_X.";缩放级别为:".$object->Scale.";位置为:".$object->Label; 
  215.     $result = $this->transmitText($object$content); 
  216.     return $result
  217.   } 
  218.   /** 
  219.    * 接收语音消息 
  220.    */ 
  221.   private function receiveVoice($object
  222.   { 
  223.     if (isset($object->Recognition) && !emptyempty($object->Recognition)){ 
  224.       $content = "你刚才说的是:".$object->Recognition; 
  225.       $result = $this->transmitText($object$content); 
  226.     }else
  227.       $content = array("MediaId"=>$object->MediaId); 
  228.       $result = $this->transmitVoice($object$content); 
  229.     } 
  230.     return $result
  231.   } 
  232.   /** 
  233.    * 接收视频消息 
  234.    */ 
  235.   private function receiveVideo($object
  236.   { 
  237.     $content = array("MediaId"=>$object->MediaId, "ThumbMediaId"=>$object->ThumbMediaId, "Title"=>"""Description"=>""); 
  238.     $result = $this->transmitVideo($object$content); 
  239.     return $result
  240.   } 
  241.   /** 
  242.    * 接收链接消息 
  243.    */ 
  244.   private function receiveLink($object
  245.   { 
  246.     $content = "你发送的是链接,标题为:".$object->Title.";内容为:".$object->Description.";链接地址为:".$object->Url; 
  247.     $result = $this->transmitText($object$content); 
  248.     return $result
  249.   } 
  250.   /* ----------------------------------回复----------------------------- */ 
  251.   /** 
  252.    * 回复文本消息 
  253.    */ 
  254.   private function transmitText($object$content
  255.   { 
  256.     if (!isset($content) || emptyempty($content)){ 
  257.       return ""
  258.     } 
  259.     $xmlTpl =  "<xml> 
  260.             <tousername><!--[CDATA[%s]]--></tousername> 
  261.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  262.             <createtime>%s</createtime> 
  263.             <msgtype><!--[CDATA[text]]--></msgtype> 
  264.             <content><!--[CDATA[%s]]--></content> 
  265.           </xml>"; 
  266.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time(), $content); 
  267.     return $result
  268.   } 
  269.   /** 
  270.    * 回复多客服消息 
  271.    */ 
  272.   private function transmitService($object
  273.   { 
  274.     $xmlTpl =  "<xml> 
  275.             <tousername><!--[CDATA[%s]]--></tousername> 
  276.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  277.             <createtime>%s</createtime> 
  278.             <msgtype><!--[CDATA[transfer_customer_service]]--></msgtype> 
  279.           </xml>"; 
  280.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time()); 
  281.     return $result
  282.   } 
  283.   /** 
  284.    * 回复图文消息 
  285.    */ 
  286.   private function transmitNews($object$newsArray
  287.   { 
  288.     if(!is_array($newsArray)){ 
  289.       return ""
  290.     } 
  291.     $itemTpl = "<item> 
  292.             <title><![CDATA[%s]]></title> 
  293.             <description><!--[CDATA[%s]]--></description> 
  294.             <picurl><!--[CDATA[%s]]--></picurl> 
  295.             <url><!--[CDATA[%s]]--></url> 
  296.           </item>"; 
  297.     $item_str = ""
  298.     foreach ($newsArray as $item){ 
  299.       $item_str .= sprintf($itemTpl$item['Title'], $item['Description'], $item['PicUrl'], $item['Url']); 
  300.     } 
  301.     $xmlTpl =  "<xml> 
  302.             <tousername><!--[CDATA[%s]]--></tousername> 
  303.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  304.             <createtime>%s</createtime> 
  305.             <msgtype><!--[CDATA[news]]--></msgtype> 
  306.             <articlecount>%s</articlecount> 
  307.             <articles>$item_str</articles> 
  308.           </xml>"; 
  309.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time(), count($newsArray)); 
  310.     return $result
  311.   } 
  312.   /** 
  313.    * 回复音乐消息 
  314.    */ 
  315.   private function transmitMusic($object$musicArray
  316.   { 
  317.     if(!is_array($musicArray)){ 
  318.       return ""
  319.     } 
  320.     $itemTpl = "<music> 
  321.             <title><![CDATA[%s]]></title> 
  322.             <description><!--[CDATA[%s]]--></description> 
  323.             <musicurl><!--[CDATA[%s]]--></musicurl> 
  324.             <hqmusicurl><!--[CDATA[%s]]--></hqmusicurl> 
  325.           </music>"; 
  326.     $item_str = sprintf($itemTpl$musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']); 
  327.     $xmlTpl =  "<xml> 
  328.             <tousername><!--[CDATA[%s]]--></tousername> 
  329.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  330.             <createtime>%s</createtime> 
  331.             <msgtype><!--[CDATA[music]]--></msgtype> 
  332.             $item_str 
  333.           </xml>"; 
  334.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time()); 
  335.     return $result
  336.   } 
  337.   /** 
  338.    * 回复图片消息 
  339.    */ 
  340.   private function transmitImage($object$imageArray
  341.   { 
  342.     $itemTpl = "<img> 
  343.             <mediaid><!--[CDATA[%s]]--></mediaid> 
  344.           "; 
  345.     $item_str = sprintf($itemTpl$imageArray['MediaId']); 
  346.     $xmlTpl =  "<xml> 
  347.             <tousername><!--[CDATA[%s]]--></tousername> 
  348.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  349.             <createtime>%s</createtime> 
  350.             <msgtype><!--[CDATA[image]]--></msgtype> 
  351.             $item_str 
  352.           </xml>"; 
  353.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time()); 
  354.     return $result
  355.   } 
  356.   /** 
  357.    * 回复语音消息 
  358.    */ 
  359.   private function transmitVoice($object$voiceArray
  360.   { 
  361.     $itemTpl = "<voice> 
  362.             <mediaid><!--[CDATA[%s]]--></mediaid> 
  363.           </voice>"; 
  364.     $item_str = sprintf($itemTpl$voiceArray['MediaId']); 
  365.     $xmlTpl =  "<xml> 
  366.             <tousername><!--[CDATA[%s]]--></tousername> 
  367.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  368.             <createtime>%s</createtime> 
  369.             <msgtype><!--[CDATA[voice]]--></msgtype> 
  370.             $item_str 
  371.           </xml>"; 
  372.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time()); 
  373.     return $result
  374.   } 
  375.   /** 
  376.    * 回复视频消息 
  377.    */ 
  378.   private function transmitVideo($object$videoArray
  379.   { 
  380.     $itemTpl = "<video> 
  381.             <mediaid><!--[CDATA[%s]]--></mediaid> 
  382.             <thumbmediaid><!--[CDATA[%s]]--></thumbmediaid> 
  383.             <title><![CDATA[%s]]></title> 
  384.             <description><!--[CDATA[%s]]--></description> 
  385.           </video>"; 
  386.     $item_str = sprintf($itemTpl$videoArray['MediaId'], $videoArray['ThumbMediaId'], $videoArray['Title'], $videoArray['Description']); 
  387.     $xmlTpl =  "<xml> 
  388.             <tousername><!--[CDATA[%s]]--></tousername> 
  389.             <fromusername><!--[CDATA[%s]]--></fromusername> 
  390.             <createtime>%s</createtime> 
  391.             <msgtype><!--[CDATA[video]]--></msgtype> 
  392.             $item_str 
  393.           </xml>"; 
  394.     $result = sprintf($xmlTpl$object->FromUserName, $object->ToUserName, time()); 
  395.     return $result
  396.   } 
  397.   /* ----------------------------------通用----------------------------- */ 
  398.   /** 
  399.    * 回复第三方接口消息 
  400.    */ 
  401.   private function relayPart3($url$rawData
  402.   { 
  403.     $headers = array("Content-Type: text/xml; charset=utf-8"); 
  404.     $ch = curl_init(); 
  405.     curl_setopt($ch, CURLOPT_URL, $url); 
  406.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  407.     curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
  408.     curl_setopt($ch, CURLOPT_POST, 1); 
  409.     curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData); 
  410.     $output = curl_exec($ch); 
  411.     curl_close($ch); 
  412.     return $output
  413.   } 
  414.   /** 
  415.    * 字节转Emoji表情 
  416.    */ 
  417.   function bytes_to_emoji($cp
  418.   { 
  419.     if ($cp > 0x10000){    # 4 bytes 
  420.       return chr(0xF0 | (($cp & 0x1C0000) >> 18)).chr(0x80 | (($cp & 0x3F000) >> 12)).chr(0x80 | (($cp & 0xFC0) >> 6)).chr(0x80 | ($cp & 0x3F)); 
  421.     }else if ($cp > 0x800){  # 3 bytes 
  422.       return chr(0xE0 | (($cp & 0xF000) >> 12)).chr(0x80 | (($cp & 0xFC0) >> 6)).chr(0x80 | ($cp & 0x3F)); 
  423.     }else if ($cp > 0x80){  # 2 bytes 
  424.       return chr(0xC0 | (($cp & 0x7C0) >> 6)).chr(0x80 | ($cp & 0x3F)); 
  425.     }else{          # 1 byte 
  426.       return chr($cp); 
  427.     } 
  428.   } 
  429.   /** 
  430.    * 日志记录 
  431.    */ 
  432.   private function logger($log_content
  433.   { 
  434.     if (isset($_SERVER['HTTP_APPNAME'])) {  //SAE 
  435.       sae_set_display_errors(false); 
  436.       sae_debug($log_content); 
  437.       sae_set_display_errors(true); 
  438.     } else if ($_SERVER['REMOTE_ADDR'] != "127.0.0.1") { //LOCAL 
  439.       $max_size = 1000000; 
  440.       $log_filename = "mpweixin.log.xml"
  441.       if (file_exists($log_filenameand (abs(filesize($log_filename)) > $max_size)) { 
  442.         unlink($log_filename); 
  443.       } 
  444.       file_put_contents($log_filenamedate('Y-m-d H:i:s')." ".$log_content."\r\n", FILE_APPEND); 
  445.     } 
  446.   } 
  447.   /** 
  448.    * 获取access_token 
  449.    */ 
  450.   private function getAccessToken() 
  451.   { 
  452.     $token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="; . $this->appid . "&secret=" . $this->secret; 
  453.     $response = $this->get_contents($token_url); 
  454.     $params = array(); 
  455.     $params = json_decode($response,true); 
  456.     if (isset($params['errcode'])) 
  457.     { 
  458.       echo "<h3>error:</h3>" . $params['errcode']; 
  459.       echo "<h3>msg :</h3>" . $params['errmsg']; 
  460.       exit
  461.     } 
  462.     return $params['access_token']; 
  463.   } 
  464.   public function get_contents($url){ 
  465.     $ch = curl_init(); 
  466.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
  467.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
  468.     curl_setopt($ch, CURLOPT_URL, $url); 
  469.     $response = curl_exec($ch); 
  470.     curl_close($ch); //phpfensi.com 
  471.     //-------请求为空 
  472.     if(emptyempty($response)){ 
  473.       exit("50001"); 
  474.     } 
  475.     return $response
  476.   } 
  477. ?> 

Tags: PHP封装 微信公众平台接口

分享到: