Example #1
0
 /**
  * 通过用户传递的信息进行处理
  * @param $obj 微信穿过来的XML数据
  * @return void
  */
 public function doProcess($obj)
 {
     $this->userName = strval($obj->FromUserName);
     $this->accountName = strval($obj->ToUserName);
     $this->openID = strval($obj->FromUserName);
     //检查用户是否已经在这个账户下,如果没有则插入到库里,返回库里的ID
     $this->userID = CommonFunc::checkUser($this->openID);
     //判断用户发过来的信息类型
     //不同的类型放到不同的数据表里
     switch (strtolower($obj->MsgType)) {
         case 'text':
             $this->processResponse($obj->Content, 'text');
             break;
         case 'image':
             break;
         case 'link':
             break;
         case 'voice':
             break;
         case 'location':
             break;
         case 'event':
             $event = strtolower($obj->Event);
             if ($event == 'click' || $event == 'view') {
                 //自定义菜单的事件太多,需要单独存放,以后有了自定义菜单完善这里
                 $model = new MsgReceiveEventMenu();
             } else {
                 //
                 $model = new MsgReceiveEvent();
             }
             $model->type = $event;
             if (isset($obj->EventKey)) {
                 $_a = explode('_', $obj->EventKey);
                 if (count($_a) > 1) {
                     $model->eventKey = intval($_a[1]);
                 } else {
                     $model->eventKey = $obj->EventKey;
                 }
             }
             $model->opt_id = Yii::app()->user->opt_id;
             $model->userID = $this->userID;
             $model->createTime = date('Y-m-d H:i:s', intval($obj->CreateTime));
             $model->save();
             //对用户做响应
             $this->processResponse($model, strtolower($obj->MsgType));
             break;
         default:
             return;
     }
 }
Example #2
0
 public function actionResponse()
 {
     if (isset($_GET["code"])) {
         //response后 sessionid会被修改,这里重新赋值
         session_id($_GET["state"]);
         $code = $_GET["code"];
         $aUser = WeixinApi::getResonseUserInfo($code);
         CommonFunc::checkUser('', $aUser);
         //login
         //表示从微信登录,在 framework里判断这个变量不重新生成sessionid
         $_SESSION['from_wx'] = 1;
         $identity = new UserIdentity($aUser['openid'], '');
         $identity->authenticate();
         $user = Yii::app()->user;
         $user->login($identity, 3600 * 24 * 30);
         $this->redirect($_GET['bk']);
     }
 }