微信公众平台DEMO(PHP)_php技巧

本人在SAE环境下搭建了CI框架(其实这个小东西用不着用框架的),直接把代码写在了控制器里面

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//define your token
define("TOKEN", "109");

class Welcome extends CI_Controller {

  public function index()
  {
    /*
    $this->load->helper('url');
    $this->load->view('welcome_message');
    */

    // use chat response
    $this->responseMsg();

  }

  // chat response
  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;
      $MsgType = $postObj->MsgType;
      $time = time();

      switch($MsgType){
        case('text'):
          $keyword = trim($postObj->Content);
          $textTpl = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <Content><![CDATA[%s]]></Content>
                </xml>";
          switch($keyword){
            case(1):
              // Need to optimize
              // random read data from jokes
              $sql = 'SELECT * FROM jokes';
              $query = $this->db->query($sql);
              $res = $query->result_array();
              $num_rows = $query->num_rows();
              $key = rand(0, $num_rows - 1); // Notice: The value of key is from 0.
              //$contentStr = $key.'#'.$res[$key ]['content']; // debug
              $contentStr = $res[$key ]['content'];
              break;
            case(2):
              $contentStr = 'Your fromUsername is: '.$fromUsername;
              break;
            case(3):
              $newsTpl = "<xml>
                    <ToUserName><![CDATA[%s]]></ToUserName>
                    <FromUserName><![CDATA[%s]]></FromUserName>
                    <CreateTime>%s</CreateTime>
                    <MsgType><![CDATA[%s]]></MsgType>
                    <ArticleCount>2</ArticleCount>

                    <Articles>
                      <item>
                        <Title><![CDATA[%s]]></Title>
                        <Description><![CDATA[%s]]></Description>
                        <PicUrl><![CDATA[%s]]></PicUrl>
                        <Url><![CDATA[%s]]></Url>
                      </item>
                      <item>
                        <Title><![CDATA[%s]]></Title>
                        <Description><![CDATA[%s]]></Description>
                        <PicUrl><![CDATA[%s]]></PicUrl>
                        <Url><![CDATA[%s]]></Url>
                      </item>
                    </Articles>

                    </xml> ";

              $resultStr = sprintf($newsTpl, $fromUsername, $toUsername, $time,'news',
                '百度','', 'yun_qi_img/bdlogo.gif', 'http://www.baidu.com',
                'Google','', '', 'http://www.google.com'); // Notice: Google's logo is not suitable.
              echo $resultStr;
              exit; // Notice: It's exit, not break.
            case(4):
              $contentStr = "该功能正在开发中,敬请期待...";
              break;

            /* others */

            default:
              $contentStr = "回复数字 选择服务\n";
              $contentStr .= "1 笑话精选\n";
              $contentStr .= "2 获取您的Username...\n";
              $contentStr .= "3 图文消息示例\n";
              $contentStr .= "4 开发中...\n";
              break;
          }
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);
          break;

        case('image'):

          $media_id = $postObj->MediaId;
          $imgTpl = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <Image>
                  <MediaId><![CDATA[%s]]></MediaId>
                </Image>
                </xml>";
          $resultStr = sprintf($imgTpl, $fromUsername, $toUsername, $time, 'image', $media_id);
          break;

          // try get the id of the receive image and analyse
          /*
          $media_id = $postObj->MediaId;
          $textTpl = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <Content><![CDATA[%s]]></Content>
                </xml>";
          $length = strlen($media_id);
          $contentStr = "I have received the image message you sent, the id of this image is # $media_id #, and the length of media_id is # $length #";
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);
          break;
          */

        case('voice'):
          $textTpl = "<xml>
                <ToUserName><![CDATA[%s]]></ToUserName>
                <FromUserName><![CDATA[%s]]></FromUserName>
                <CreateTime>%s</CreateTime>
                <MsgType><![CDATA[%s]]></MsgType>
                <Content><![CDATA[%s]]></Content>
                </xml>";
          $contentStr = '你说啥?俺听不见...';
          $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, 'text', $contentStr);
          break;

        /* others */

        default:
          $resultStr = "Input something...";
          break;
      }
      echo $resultStr;

    }else {
      echo "";
      exit;
    }
  }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
微信
微信公众平台php demo、微信公众平台demo下载、微信公众平台开发demo、微信公众平台demo、微信公众平台支付demo,以便于您获取更多的相关知识。

时间: 2024-10-29 12:44:24

微信公众平台DEMO(PHP)_php技巧的相关文章

吐血狂荐:微信公众平台营销推广精选技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 闲来无事总想写点什么,刷点存在感,自前段时间连续爆发了几篇微信运营心得后有不少小朋友加我微信,叽叽喳喳问这问那,还好美女不少,否则手机都不想开了,各种令人抓狂的问题都有,自身也是半桶水,为了保持点高人的姿态,不断的偷偷啃噬灌输各种微营销知识,最近发现很多有意思还很有用的小技巧,所以捂胸忍痛给大家发出来,我的微信好友应该都看过了,这里只写几条不

Thinkphp微信公众号支付接口_php技巧

本文实例为大家分享了Thinkphp微信公众号支付接口,供大家参考,具体内容如下 第一步  先把文件夹的那两个图片 配置成一样的路径 除了域名要改 其他保持一致. 第二步  把 Weixinpay 这个文件夹放在 \ThinkPHP\Library\Vendor  将Weixinpay文件夹放置到这个Vendor文件夹中 第三步  把  WxJsAPIController.class.php 这个php文件  \Home\Controller  这里面 第四步  把 WxJsAPI这个文件夹 

weiphp微信公众平台授权设置_php实例

weiphp后台使用设置 实现在用户授权时候显示公众号的名字以及分享使用该服务号 使用步骤 1:在weiphp后台打开公众号管理-新增 2:输入公众号名字,原始ID,微信号 3:在这里公众号能查找到 4: 输入完成之后下一步,他会提供URL和token令牌.然后就要在微信公众号后台配置 6输入完成之后我,记录下key,appid和appSecret,输入在这里 7:按保存了之后, 在右上角选中你刚填写的服务号信息切换为当前公众号 8:打开基础插件-自定义菜单-新增 如果新增成功, 则保存成功,如

PHP实现微信公众平台音乐点播_php实例

1.构造微信提供的XML格式的音乐消息音乐的XML格式是这样的: 复制代码 代码如下: <xml>    <ToUserName><![CDATA[toUser]]></ToUserName>    <FromUserName><![CDATA[fromUser]]></FromUserName>    <CreateTime>12345678</CreateTime>    <MsgType

微信公众平台消息管理与群发图文教程

好!我们用之前注册好的帐号登录一下微信公众平台,进入到平台的欢迎页: 欢迎页左边的曲线图,可以方便你查看最近7天新增用户订阅数,也会看到取消订阅的数量,具体查看蓝色曲线图上的蓝点,鼠标移动到蓝色曲线图的蓝点上面会显示当天增加数量和减少数量.下面绿色曲线图是查看最近7天接收信息数量.右边可以看到系统最新公告,这里很重要一定要留意这里公告变化,否则你可能会错过申请自定义接口功能等机会,错过微信新功能或重大通知等信息,导致影响你的营销计划. 接下来开始讲解公众平台的功能: 一.实时消息管理 这里就是公

微信公众平台登录初级使用教程分享

给各位微信软件的使用者们来详细的解析分享一下微信公众平台登录初级使用的教程. 教程分享: 1.私人号与公众号的关系: 微信公众平台不能直接使用个人已有的微信私人号登录.需要另外使用未注册过微信号的QQ号才能注册. 为什么微信要把私人号和公众号分开? 可能,许多人会有这种疑问:为什么公众号不能使用已有私人号登录?为什么公众号不能在手机客户端上登录?其实,早期的时候,微信并未区分私人号和公众号.公众号也是可以在手机上登录的.但是,公众号在手机登录使用的时候会遇到许多问题.比如信息的过于频繁会导致手机

微信公众平台快速上手教程Part2 消息管理与群发

中介交易 SEO诊断 淘宝客 云主机 技术大厅 这部分主要讲解微信公众平台的消息管理技巧和群发注意事项,我会结合一些营销要数加入到本篇教程里面,希望能帮助大家在营销和使用上更加得心应手.如果对本篇教程有任何疑问或错漏之处欢迎留言或直接联系我进行更正修改. 好!我们用之前注册好的帐号登录一下微信公众平台,进入到平台的欢迎页: 欢迎页左边的曲线图,可以方便你查看最近7天新增用户订阅数,也会看到取消订阅的数量,具体查看蓝色曲线图上的蓝点,鼠标移动到蓝色曲线图的蓝点上面会显示当天增加数量和减少数量.下面

php实现基于微信公众平台开发SDK(demo)扩展的方法_php技巧

本文实例讲述了php实现基于微信公众平台开发SDK(demo)扩展的方法.分享给大家供大家参考.具体分析如下: 该扩展基于官方的微信公众平台SDK,这里只做了简单地封装,实现了一些基本的功能(如天气查询,翻译,自动聊天机器人,自定义菜单接口)仅供学习之用.代码如下: 复制代码 代码如下: define("TOKEN", "xingans"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->respo

php版微信公众平台回复中文出现乱码问题的解决方法_php技巧

本文实例分析了php版微信公众平台回复中文出现乱码问题的解决方法.分享给大家供大家参考,具体如下: 微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看. 很多微信公众平台的自动回复程序都是 ThinkWechat.class.php 这个类开发的,今天碰到一个莫名其妙的乱码问题,查问题发现是GB2312编码导致,所以要修改源码. 先增加一个方法: /** * 检测是否UTF-8 * @param $str * @return boo