/** * 通过用户传递的信息进行处理 * @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; } }
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']); } }