• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 分享一个完整的微信开发php代码

分享一个完整的微信开发php代码

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了php,微信开发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文章主要为大家分享一个完整的微信开发php代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了微信开发php代码,供大家参考,具体内容如下


<?php
  //封装成一个微信接口类
 
  class WeixinApi
  {
    private $appid;
    private $appsecret; 
 
    //构造方法 初始化赋值
    public function construct($appid="",$appsecret="")
    {
      $this->appid = $appid;
      $this->appsecret = $appsecret;
    }
 
    //验证服务器地址有效性
    public function valid()
    {
      if($this->checkSignature())
      {
        $echostr = $_GET['echostr'];//随机的字符串
        return $echostr;
      }
      else
      {
        return "Error";
      }
    }
 
    //检查签名
    private function checkSignature()
    {
      //一、接收微信服务器GET方式提交过来的4个参数数据
 
      $signature = $_GET['signature'];//微信加密签名
 
      $timestamp = $_GET['timestamp'];//时间戳
 
      $nonce = $_GET['nonce'];//随机数
 
      //二、加密/校验过程
      // 1. 将token、timestamp、nonce三个参数进行字典序排序;
      // bool sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) 对数组排序 
       
      $tmpArr = array(TOKEN,$timestamp,$nonce);//将上面三个参数放到一个数组里面
      sort($tmpArr,SORT_STRING);
 
      // 2. 将三个参数字符串拼接成一个字符串进行sha1加密;
      $tmpStr = implode($tmpArr); //将数组转化成字符串
 
      $signatureStr = sha1($tmpStr);
 
      // 3. 开发者获得加密后的字符串与signature对比。
      if($signatureStr == $signature)
      {
        return true;
      }
      else
      {
        return false;
      }
    }
 
    //响应消息
    public function responseMsg()
    {
      //接收微信服务器发送POST请求到开发者服务器,携带的XML数据包
      $postData = $GLOBALS['HTTP_RAW_POST_DATA'];
 
      //处理xml数据包
      $xmlObj = simplexml_load_string($postData,"SimpleXMLElement",LIBXML_NOCDATA);
 
      if(!$xmlObj)
      {
        echo "";
        exit;
      }
 
      //获取接收消息中的参数内容
      $toUserName = $xmlObj->ToUserName;//开发者微信号
      $fromUserName = $xmlObj->FromUserName;//发送方的微信号(openid)
      $msgType = $xmlObj->MsgType;//消息类型
      switch ($msgType) {
        //接收文本消息
        case 'text':
          //获取文本消息的关键字
          $keyword = $this->receiveText($xmlObj); 
          //进行关键字回复
          switch($keyword)
          {
            case "w001":
            case "W001":
              return $this->replyText($xmlObj,"Hi~你好");
              break;
            case "w002":
            case "W002":
              return $this->replyText($xmlObj,"Hi~尴尬了");
              break;
            case "笑话":
              $key = "dee9ebc68fd5a61f67286063932afe56";
              return $this->replyNews($xmlObj,$this->joke_text($key));
              break;
            default:
              $key = "dee9ebc68fd5a61f67286063932afe56";
              return $this->replyNews($xmlObj,$this->joke_text($key));
              break;
          }    
          break;
        //接收图片消息
        case 'image':
          return $this->receiveImage($xmlObj);
          break;
        //接收事件推送
        case 'event':
          return $this->receiveEvent($xmlObj);
          break;
      }      
    }
 
    //接收事件推送
    public function receiveEvent($obj)
    {
      //接收事件类型
      $event = $obj->Event;
      switch ($event)
      {
        //关注事件
        case 'subscribe':
          //下发欢迎消息
          $newsArr = array(
                  array(
                    "Title"=>"做有价值的头条资讯!",
                    "Description"=>"把握价值头条资讯,日常更加有谈资呢!",
                    "PicUrl"=>"http://jober.applinzi.com/news/img/news.png",
                    "Url"=>"http://jober.applinzi.com/news/index.php"
                  )                
                );
          //回复图文消息
          return $this->replyNews($obj,$newsArr); 
          break;
        //取消关注事件
        case 'unsubscribe':
          //账号的解绑操作等等
          break;
        //自定义菜单推送CLICK事件
        case 'CLICK':
          $eventKey = $obj->EventKey;//获取事件KEY值,与自定义菜单接口中KEY值对应
          switch ($eventKey) 
          {
            case 'old':
   
              $weixinArr = $this->history("da675ebc6a0d72920dca3f676122a693");
              $weixinArr = array_slice($weixinArr, 0,5);
              $newsArr = array();
 
              foreach ($weixinArr as $item) 
              {
                $newsArr = array(array(
                          "Title" => $item['Description'],
                          "Description" => $item['Title'],
                          "PicUrl" => "http://1.jober.applinzi.com/news/img/2.jpg",
                          "Url" => "http://www.todayonhistory.com/"                          
                        ));
              }
              return $this->replyNews($obj,$newsArr);
              break;
          }
        break;
      }
    }
 
    //接收文本消息
    public function receiveText($obj)
    {
      $content = trim($obj->Content);//文本消息的内容
      return $content;
    }
 
    //接收图片消息
    public function receiveImage($obj)
    {
      $picUrl = $obj->PicUrl;//图片的链接
      $mediaId = $obj->MediaId;//图片消息媒体id
      return $this->replyImage($obj,$mediaId);
    }
 
    //回复图片消息
    public function replyImage($obj,$mediaId)
    {
      $replyXml = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[image]]></MsgType>
              <Image>
                <MediaId><![CDATA[%s]]></MediaId>
              </Image>
            </xml>";
      return sprintf($replyXml,$obj->FromUserName,$obj->ToUserName,time(),$mediaId);
           
    }
 
    //回复文本消息
    public function replyText($obj,$content)
    {
      $replyXml = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[text]]></MsgType>
              <Content><![CDATA[%s]]></Content>
            </xml>";
      return sprintf($replyXml,$obj->FromUserName,$obj->ToUserName,time(),$content);
    }
     
    //回复图文消息
    public function replyNews($obj,$newsArr)
    {
      //判断是否为数组类型
      if(!is_array($newsArr))
      {
        return;
      }
      // 判断数组是否为空数组
      if(!$newsArr)
      {
        return;
      }
      $itemStr = "";
      //定义item模板
      $itemXml = "<item>
              <Title><![CDATA[%s]]></Title> 
              <Description><![CDATA[%s]]></Description>
              <PicUrl><![CDATA[%s]]></PicUrl>
              <Url><![CDATA[%s]]></Url>
            </item>";
      foreach($newsArr as $item)



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信支付统一下单,用PHP怎么实现?(代码全)
  • 还是代码好用,几步就能判断用户是否已关注公众号
  • 终于整理出来了,用微信第三方平台授权小程序业务
  • php 实现微信开发获取用户信息
  • PHP实现微信扫码支付功能
  • php实现微信sdk分享接口
  • 通过PHP来实现APP微信支付的实例分析
  • php实现微信跳一跳小游戏
  • Thinkphp整合微信支付功能详解
  • 检索kintone记录信息的方法

相关文章

  • 详解微信个性化菜单开发模式
  • 实战项目编译后不在根目录怎么办
  • 有关UI组件的课程推荐10篇
  • 详解微信开发中视图层(xx.xml)和逻辑层(xx.js)
  • 微信公众平台开发--公交换乘
  • php微信公众号开发(3)php实现简单微信文本通讯
  • 微信开发之个性化菜单
  • 微信公众号开发系列教程一(调试环境部署)
  • php微信公众平台开发回复功能实例代码
  • 微信开发中snsapi_base和snsapi_userinfo及静默授权的实现方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 总结关于页面路由实例教程
    • C#开发微信门户及应用微信小店商品管理接口的封装和测试
    • php版微信小店API二次开发及使用示例
    • 微信小程序开发之websocket实例详解
    • 5 分钟实现微信支付接入教程
    • C#开发微信门户及应用-微信门户应用管理系统功能介绍
    • Python开发微信支付的注意事项
    • ASP.NET实现微信抢红包代码实例
    • 使用php开发微信公众平台配置接口程序
    • Force.com微信开发系列OAuth2.0网页授权

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有