Example #1
0
 public function setApiSignature()
 {
     $this->timestamp = time();
     $pathInfo = Yii::app()->request->getUrl();
     $this->request_url = Yii::app()->request->getHostInfo() . $pathInfo;
     $ticket = WeixinApi::getJSApiTk();
     $str = sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s", $ticket, $this->nonceStr, $this->timestamp, $this->request_url);
     $this->signature = sha1($str);
 }
Example #2
0
 /**
  * 检测微信用户是否在这个广告主的账户下
  * @param $openID 用户的微信原始ID
  * @return void
  */
 static function checkUser($openID, $aUser = array())
 {
     if (empty($openID)) {
         $openID = $aUser['openid'];
         $_aUser = WeixinApi::getUserInfo($openID);
         $aUser['subscribe'] = $_aUser['subscribe'];
     } else {
         $aUser = WeixinApi::getUserInfo($openID);
     }
     //用 unionid取数据,和微信登录统一用户
     $unionID = $aUser['unionid'];
     $user = User::model()->findByAttributes(array('unionid' => $unionID));
     if ($user) {
         if ($aUser['nickname'] !== '' && $user->NickName == $user->UserName && !User::checkUserName($aUser['nickname'])) {
             $user->UserName = $aUser['nickname'];
         }
         $user->NickName = $aUser['nickname'];
         $user->Icon = $aUser['headimgurl'];
         $user->IsFollow = $aUser['subscribe'];
         //微信登录的用户,这个字段为空
         $user->Openid = $openID;
         if ($user->save()) {
             //更新redis
             CommonFunc::setRedis('user_' . $user->ID, 'userHeadUrl', $aUser['headimgurl']);
             CommonFunc::setRedis('user_' . $user->ID, 'userName', $user->UserName);
             return $user->ID;
         } else {
             Yii::log(__FILE__ . __LINE__ . 'insert fans error', 'error', 'system.api.weixin');
         }
     } else {
         $model_user = new User();
         if ($aUser['nickname'] === '') {
             $aUser['nickname'] = 'name_' . time();
         }
         $model_user->Account = $aUser['nickname'];
         $model_user->NickName = $aUser['nickname'];
         $model_user->UserName = $aUser['nickname'];
         if (User::checkUserName($aUser['nickname'])) {
             $model_user->UserName = $aUser['nickname'] . '_' . time();
         }
         $model_user->Openid = $openID;
         $model_user->Icon = $aUser['headimgurl'];
         $model_user->unionid = $aUser['unionid'];
         $model_user->CreateTime = date('Y-m-d H:i:s');
         $model_user->Status = 0;
         $model_user->LastLoginTime = date('Y-m-d H:i:s');
         $model_user->IsFollow = $aUser['subscribe'];
         if ($model_user->save()) {
             CommonFunc::setRedis('user_' . $model_user->ID, 'userHeadUrl', $aUser['headimgurl']);
             CommonFunc::setRedis('user_' . $model_user->ID, 'userName', $model_user->UserName);
             return $model_user->ID;
         } else {
             Yii::log(__FILE__ . __LINE__ . 'insert fans error', 'error', 'system.api.weixin');
         }
     }
     Yii::app()->end();
 }
Example #3
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']);
     }
 }
Example #4
0
 static function getJSApiTk()
 {
     $ticket = Yii::app()->cache->get('wx_jsapi_ticket');
     if ($ticket) {
         $ticket = unserialize($ticket);
         return $ticket['ticket'];
     }
     $url = str_replace('[TOKEN]', WeixinApi::getAccessToken(), WX_GET_JSAPI_URL);
     $request = Yii::app()->curl->run($url);
     $aResponse = WeixinApi::parseResponse($request, __FILE__, __LINE__);
     $ticket = array('ticket' => $aResponse['ticket'], 'expire' => time() + $aResponse['expires_in']);
     Yii::app()->cache->set('wx_jsapi_ticket', serialize($ticket), $aResponse['expires_in']);
     return $ticket['ticket'];
 }
Example #5
0
    public function actionSetMenu()
    {
        $menu = '
{
     "button":[
     {
          "name":"最新应用",
          "type":"click",
          "key":"APP_NEW_LIST"
      },
      {
          "name":"进入网站",
          "type":"view",
          "url":"http://appgrub.com"
      },
      {
          "type":"view",
          "name":"下载客户端",
          "url":"http://appgrub.com/client/down"
     }]
 }
';
        WeixinApi::setMenu($menu);
    }