public function run()
 {
     if (Yii::app()->user->isGuest) {
         if (Assist::isWeixin()) {
             $code = Yii::app()->request->getParam('code');
             $state = Yii::app()->request->getParam('state');
             if (empty($code)) {
                 throw new CException(Yii::t('yii', '授权码缺失'));
             } else {
                 $wechat = Yii::app()->params['partner']['wechat'];
                 $params = array('appid' => $wechat['appid'], 'secret' => $wechat['appsecret'], 'code' => $code, 'grant_type' => 'authorization_code');
                 try {
                     $output = Yii::app()->curl->get($wechat['oauth2']['token'], $params);
                     $value = json_decode($output, true);
                     if (Yii::app()->curl->getStatus() == 200 && isset($value['access_token'])) {
                         $userinfo = json_decode(Yii::app()->curl->get($wechat['oauth2']['userinfo'], array('access_token' => $value['access_token'], 'openid' => $value['openid'], 'lang' => 'zh_CN')), true);
                         if (Yii::app()->curl->getStatus() == 200 && isset($userinfo['unionid'])) {
                             $_identity = new UserIdentity();
                             $_identity->authWechat($userinfo, $value['openid']);
                             if ($_identity->errorCode === UserIdentity::ERROR_NONE) {
                                 $duration = 86400;
                                 Yii::app()->user->login($_identity, $duration);
                                 $this->controller->redirect(Assist::getAccessURL());
                                 // $this->controller->redirect(Yii::app()->user->getReturnUrl(Assist::getDefaultURL()));
                             } elseif ($_identity->errorCode === UserIdentity::ERROR_NO_BIND) {
                                 Yii::app()->session['wechat'] = null;
                                 $this->controller->render('index');
                             }
                         } else {
                             throw new CException(Yii::t('yii', '密钥错误或丢失。'));
                         }
                     } else {
                         Yii::log(print_r($value, true), CLogger::LEVEL_ERROR, 'user.wx.auth');
                         throw new CException(Yii::t('yii', '获取有效凭证失败'));
                     }
                 } catch (Exception $e) {
                     $this->controller->render('index');
                     // throw new CException(Yii::t('yii', $e->getMessage() ?: '内部服务错误'));
                 }
             }
         } else {
             throw new CHttpException(403, Yii::t('yii', '仅支持微信访问'));
         }
     } else {
         $this->controller->redirect(Assist::getDefaultURL());
     }
 }
Exemple #2
0
 /**
  * 
  * 获取jsapi支付的参数
  * @param array $UnifiedOrderResult 统一支付接口返回的数据
  * @throws WxPayException
  * 
  * @return json数据,可直接填入js函数作为参数
  */
 public function GetJsApiParameters($UnifiedOrderResult)
 {
     if (!array_key_exists("appid", $UnifiedOrderResult) || !array_key_exists("prepay_id", $UnifiedOrderResult) || $UnifiedOrderResult['prepay_id'] == "") {
         // throw new WxPayException("参数错误");
         Yii::log('WxJsPayHelper 71line', CLogger::LEVEL_ERROR, 'WxJsPayHelper');
         Yii::app()->request->redirect(Assist::getDefaultURL());
     }
     $jsapi = new WxPayJsApiPay();
     $jsapi->SetAppid($UnifiedOrderResult["appid"]);
     $timeStamp = time();
     $jsapi->SetTimeStamp($timeStamp);
     $jsapi->SetNonceStr(WxPayApi::getNonceStr());
     $jsapi->SetPackage("prepay_id=" . $UnifiedOrderResult['prepay_id']);
     $jsapi->SetSignType("MD5");
     $jsapi->SetPaySign($jsapi->MakeSign());
     $parameters = json_encode($jsapi->GetValues());
     return $parameters;
 }
 public function run()
 {
     if (Yii::app()->user->isGuest) {
         if (Assist::isWeixin()) {
             //login valid for ajax request
             $returnurl = Yii::app()->request->getParam('returnurl');
             //->encodeURIComponent
             if (!empty($returnurl)) {
                 Yii::app()->user->setReturnUrl($returnurl);
                 //urldecode($returnurl)
             }
             $wechat = Yii::app()->params['partner']['wechat'];
             $params = array('appid' => $wechat['appid'], 'redirect_uri' => 'http://hubapp.livenaked.com' . $wechat['oauth2']['callback'], 'response_type' => 'code', 'scope' => $wechat['oauth2']['scope'][1], 'state' => 1);
             $url = $wechat['oauth2']['authorize'] . http_build_query($params) . '#wechat_redirect';
             $this->controller->redirect($url);
         } else {
             // throw new CException(Yii::t('yii', '请在微信客户端打开链接'));
             throw new CHttpException(403, Yii::t('yii', '请在微信客户端打开链接'));
         }
     } else {
         $this->controller->redirect(Assist::getDefaultURL());
     }
 }
Exemple #4
0
 public function run()
 {
     if (Yii::app()->user->isGuest) {
         $user = Yii::app()->session['user'];
         $identity = new UserIdentity($user);
         $identity->registAuth($user);
         $duration = Yii::app()->getComponent('session')->getTimeout();
         Yii::app()->user->login($identity, $duration);
         // Yii::log(print_r($user,1), CLogger::LEVEL_ERROR,'222');
         $tuser = User::model()->findByAttributes(array('id' => $user['id']));
         $tuser->status = 1;
         $tuser->save();
         $this->controller->redirect('/user/updateProfile');
     } else {
         $tem = User::model()->findByAttributes(array('id' => Yii::app()->user->id));
         $status = $tem->status;
         $type = $tem->type;
         if ($type == 1) {
             switch ($status) {
                 case 1:
                     $this->controller->redirect('/user/updateProfile');
                     break;
                 default:
                     $user = User::model()->findByAttributes(array('id' => Yii::app()->user->id));
                     Yii::app()->user->setState('portrait', $user->portrait);
                     $this->controller->redirect(Assist::getDefaultURL());
                     break;
             }
         } else {
             if ($type == 2) {
                 switch ($status) {
                     case 1:
                         $this->controller->redirect('/user/updateProfile');
                         break;
                     default:
                         $user = User::model()->findByAttributes(array('id' => Yii::app()->user->id));
                         Yii::app()->user->setState('portrait', $user->portrait);
                         $this->controller->redirect(Assist::getDefaultURL());
                         break;
                 }
             } else {
                 if ($type == 3) {
                     switch ($status) {
                         case 1:
                             $this->controller->redirect('/user/updateProfile');
                             break;
                         case 2:
                             $this->controller->redirect('/company/updateProfile');
                             break;
                         case 3:
                             $this->controller->redirect('/registered/code');
                             break;
                         default:
                             $user = User::model()->findByAttributes(array('id' => Yii::app()->user->id));
                             Yii::app()->user->setState('portrait', $user->portrait);
                             $this->controller->redirect(Assist::getDefaultURL());
                             break;
                     }
                 }
             }
         }
         // Yii::log($status, CLogger::LEVEL_ERROR,'status');
         // switch ($status) {
         // 	case 1:
         // 		$this->controller->redirect('/user/updateProfile');
         // 		break;
         // 	case 2:
         // 		$this->controller->redirect('/company/updateProfile');
         // 	case 21:
         // 		$this->controller->redirect('/user/updateProfile');
         // 	case 22:
         // 		$this->controller->redirect('/user/updatecompany');
         // 	default:
         // 		$user= User::model()->findByAttributes(array('id'=>Yii::app()->user->id));
         // 		Yii::app()->user->setState('portrait',$user->portrait);
         // 		$this->controller->redirect(Assist::getDefaultURL());
         // 		break;
         // }
     }
 }