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()); } }
/** * * 获取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()); } }
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; // } } }