basePath . "/utils/Alipay/alipaySdk/aop/AopClient.php";; class AuthForm extends \app\modules\alliance\models\ApiModel { public $store_id; public $authCode; public $isv_appid; public $response; public $mini_id; public $share_user_id; /** * @var SocialiteManager $socialite */ public $socialite; public function rules() { return [ [['store_id', 'share_user_id','mini_id'], 'integer'], [['authCode', 'response'], 'required'], [['authCode', 'response'], 'trim'], [['authCode', 'response','isv_appid'], 'string'] ]; } /** * */ public function codeAnalysis() { $user = $this->socialite->create('alipay')->tokenFromCode($this->authCode); \Yii::warning($user); } /** * 用户登录注册 * @return array|mixed|null */ public function analysisPhone() { \Yii::getLogger()->log("支付宝配置",Logger::LEVEL_ERROR); if (!$this->validate()) { return [ 'code' => 1, 'msg' => $this->getErrorSummary(false)[0] ]; } $response = Json::decode($this->response); if (empty($response['response'])) { return [ 'code' => 1, 'msg' => 'response 不能为空' ]; } // 获取user_id $token = $this->socialite->create('alipay')->tokenFromCode($this->authCode); \Yii::getLogger()->log($token,Logger::LEVEL_ERROR); if (empty($token['user_id'])) { return [ 'code' => 1, 'msg' => '获取user_id失败' ]; } $alipay_config = self::getAlipayConfig(); if (empty($alipay_config) && !is_isv()) { return [ 'code' => 1, 'msg' => '支付宝配置信息不能为空' ]; } $aes_key = $alipay_config['aes_key']; $result = openssl_decrypt(base64_decode($response['response']), 'AES-128-CBC', base64_decode($aes_key), OPENSSL_RAW_DATA); // 获取手机号解密 if (!$result) { return [ 'code' => 1, 'msg' => '解密失败' ]; } $res = Json::decode($result); if ($res['code'] != '10000') { return $res; } $mobile = $res['mobile']; // 创建平台会员saas_user $saas_user = SaasUser::find()->where(['mobile' => $mobile, 'is_delete' => SaasUser::DELETE_STATUS_FALSE])->one(); if (!$saas_user) { $saas_user = new SaasUser(); $saas_user->price = '0.00'; $saas_user->access_token = \Yii::$app->security->generateRandomString(); $saas_user->avatar = \Yii::$app->request->hostInfo . \Yii::$app->request->baseUrl . '/web/v1/statics/images/avatar.png'; $saas_user->mobile = $mobile; $saas_user->name = substr_replace($mobile, '******', 3, 6); $saas_user->store_id = $this->store_id; } if (!empty($token['user_id'])) { $saas_user->ali_user_id = $token['user_id']; } $saas_user->save(); $user = User::findOne(['store_id' => $this->store_id, 'binding' => $mobile]); if (!$user) { $user = new User(); $user->type = User::USER_TYPE_NORMAL; $user->binding = $mobile; $user->avatar_url = \Yii::$app->request->hostInfo . '/web/v1/statics/images/avatar.png'; $user->username = \Yii::$app->security->generateRandomString(); $user->nickname = substr_replace($mobile, '******', 3, 6); $user->password = \Yii::$app->security->generatePasswordHash(\Yii::$app->security->generateRandomString(), 5); $user->auth_key = \Yii::$app->security->generateRandomString(); $user->access_token = \Yii::$app->security->generateRandomString(); $user->is_delete = User::USER_NOT_DELETE; $user->alipay_open_id = $token['user_id']; $user->store_id = $this->store_id; $user->platform = User::USER_FROM_ALIPAY; // 支付宝 if (!$user->save()) { return [ 'code' => 1, 'msg' => '登录失败', 'data' => $user->getErrorSummary(false)[0] ]; } } else { if (empty($user->alipay_open_id)) { $user->alipay_open_id = $token['user_id']; $user->save(); } } if ($user->blacklist == '1') { return [ 'code' => 1, 'msg' => '您的账号已被限制登录!', ]; } $share = $share_user = null; if ($this->share_user_id > 0) { // 绑定上下级 $bindForm = new BindForm(); $bindForm->store_id = $this->store_id; $bindForm->user_id = $user->id; $bindForm->parent_id = $this->share_user_id; $bindForm->condition = 0; $bindForm->save(); } if ($user->parent_id > 0) { $share = Share::findOne(['user_id' => $user->parent_id]); $share_user = User::findOne(['id' => $share->user_id]); } $data = [ 'nickname' => $saas_user->name, 'binding' => $saas_user->mobile, 'id' => $user->id, 'is_distributor' => $user->is_distributor ? $user->is_distributor : 0, 'avatar_url' => $saas_user->avatar, 'errCode' => 0, 'parent' => $share ? ($share->name ? $share->name : $share_user->nickname) : '总店', 'money' => $user->money ? $user->money : 0, 'blacklist' => $user->blacklist ? $user->blacklist : 0, 'access_token' => $saas_user->access_token, 'level' => $user->level ? $user->level : -1, 'is_clerk' => $user->is_clerk === null ? 0 : $user->is_clerk, 'integral' => $user->integral === null ? 0 : $user->integral, 'is_saas_clerk' => (int)$user->is_saas_clerk, ]; return [ 'code' => 0, 'msg' => '登录成功', 'data' => $data, ]; } }