123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229 |
- <?php
- /**
- * OauthController.php UTF-8
- * 第三方用户登录
- *
- * @date : 2018/8/9 14:02
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : Huosdk 8.0
- */
- namespace mini\sdk\controller;
- use ban\Ban;
- use huo\controller\common\HuoCookie;
- use huo\controller\common\HuoSession;
- use huo\controller\game\GameCache;
- use huo\controller\pay\PayShow;
- use huo\controller\pay\PaySwitch;
- use huo\model\member\MemoauthModel;
- use huolib\constant\CommonConst;
- use huolib\constant\GameConst;
- use huolib\constant\OauthConst;
- use huolib\constant\OrderConst;
- use huolib\status\CommonStatus;
- use huolib\status\MemberStatus;
- use huolib\tool\SimpleSec;
- use huomp\controller\member\MemberOut;
- use huomp\controller\member\OauthOut;
- use huomp\controller\order\OrderOut;
- use huomp\model\game\GameMiniModel;
- use mini\common\controller\V2ApiBaseController;
- use think\Log;
- use wxapp\aes\ErrorCode;
- use wxapp\aes\WXBizDataCrypt;
- class OauthController extends V2ApiBaseController {
- function _initialize() {
- parent::_initialize();
- // Log::write(
- // $this->request->scheme().'://'.$this->request->server('HTTP_HOST').$this->request->server('REQUEST_URI').'?'
- // .$this->request->getContent(),
- // Log::LOG
- // );
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4378
- * 小程序登陆
- * 【域名】/mp/wx/login
- */
- public function callbackWeixin() {
- $_code = get_val($this->rq_data, 'code');
- $_state = get_val($this->rq_data, 'state');
- $_game_rq = $this->setGameData();
- $_channel_rq = $this->setChannelData();
- $_device_rq = $this->setDeviceData();
- $_mem_rq = $this->setMemData();
- $_rs = (new OauthOut())->oauthLogin(
- $_code, $_state, $_game_rq, $_channel_rq, $_device_rq, $_mem_rq
- );
- if (MemberStatus::NO_ERROR != $_rs['code']) {
- $this->error($_rs['msg']);
- }
- $_mem_data = $_rs['data'];
- //$_mg_mem_id = (new HuoSession($this->mem_id, $_game_rq->getHAppId()))->getMgMemId();
- $_mg_mem_id = (new MemberOut())->getMgMemId($_game_rq->getHAppId(), $_mem_data['mem_id']);
- $_token = HuoCookie::getMemToken();
- $_image = (new OrderOut())->getMemAppQrCode($_mem_data['mem_id'], $_game_rq->getHAppId());
- if (empty($_image)) {
- $_image = '';
- }
- $_data = [
- 'mg_mem_id' => $_mg_mem_id,
- 'mem_id' => $_mem_data['mem_id'],
- 'agentgame' => $_mem_data['agent_game'],
- 'cp_user_token' => SimpleSec::encode($_token, config('CPAUTHCODE')),
- 'user_token' => $_token,
- 'image' => $_image,
- ];
- $_is_ban = (new Ban())->checkMemEnv($_mem_data['mem_id'], $_device_rq->getIp());
- if ($_is_ban != CommonStatus::NO_ERROR) {
- $_error_code = MemberStatus::MEM_ACCOUNT_ANOMALY;
- $this->error($_is_ban, [], $_error_code);
- }
- $_code = CommonStatus::NO_ERROR;
- $this->success(CommonStatus::getMsg($_code), $_data, $_code);
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4379
- * 小程序上传用户信息
- * 【域名】/mp/wx/updateinfo
- */
- public function upMemInfo() {
- $this->checkLogin();
- $_mem_id = $this->mem_id;
- $_game_rq = $this->setGameData();
- /* 加解密数据 */
- $_encrypted_data = $this->request->param('encrypted_data/s', '');
- $_iv = $this->request->param('iv/s', '');
- $_wx_id = (new GameMiniModel())->getMpIdByAppId($_game_rq->getHAppId());
- $_oauth_data = (new MemoauthModel())->getInfoByAppMemId($_game_rq->getHAppId(), $this->mem_id);
- if (empty($_oauth_data) || empty($_oauth_data['access_token'])) {
- Log::write(
- "func=".__FUNCTION__."&class=".__CLASS__."&mem_id=".$this->mem_id."&wi_id=".$_wx_id."&oauth_data="
- .json_encode($_oauth_data)
- ."¶m="
- .$this->request->getContent(),
- LOG::ERROR
- );
- $_error_code = CommonStatus::INVALID_PARAMS;
- $this->error(CommonStatus::getMsg($_error_code).'1', [], $_error_code);
- }
- $_session_key = $_oauth_data['access_token'];
- $_pc = new WXBizDataCrypt($_wx_id, $_session_key);
- $_err_code = $_pc->decryptData($_encrypted_data, $_iv, $_wx_data);
- if (ErrorCode::$OK != $_err_code) {
- $_type = OauthConst::OAUTH_MP;
- $_app_id = $_game_rq->getHAppId();
- $_oauth_data = (new MemoauthModel())->getInfoByAppMemId($_app_id, $this->mem_id);
- $_open_id = $_oauth_data['openid'];
- $_rdata = (new MemberOut())->getMemInfo($_mem_id, $_open_id, $_type, $this->token, $_app_id);
- $this->returnData($_rdata);
- // Log::write(
- // "func=".__FUNCTION__."&class=".__CLASS__."&wx_id=".$_wx_id."&session_key=".$_session_key."&err_code="
- // .$_err_code."¶m="
- // .$this->request->getContent(),
- // LOG::ERROR
- // );
- // $_error_code = CommonStatus::INVALID_PARAMS;
- // $this->error(CommonStatus::getMsg($_error_code).'2', [], $_error_code);
- }
- $_wx_data = json_decode($_wx_data, true);
- $_type = OauthConst::OAUTH_MP;
- $_rdata = (new MemberOut())->upMemInfo(
- $_mem_id, $_oauth_data['openid'], $_wx_data, $_type, $this->device_type, $_game_rq->getHAppId()
- );
- if (CommonStatus::NO_ERROR != $_rdata['code']) {
- $this->returnData($_rdata);
- }
- $this->mem_id = $_rdata['data']['mem_id'];
- $_token = HuoCookie::getMemToken();
- HuoSession::setAppId($_token, $_game_rq->getHAppId());
- //$_mg_mem_id = (new HuoSession($this->mem_id, $_game_rq->getHAppId()))->getMgMemId();
- $_mg_mem_id = (new MemberOut())->getMgMemId($_game_rq->getHAppId(), $this->mem_id);
- $_rdata['data']['mg_mem_id'] = $_mg_mem_id;
- $_image = (new OrderOut())->getMemAppQrCode($_mem_id, $_game_rq->getHAppId());
- if (empty($_image)) {
- $_image = '';
- }
- $_rdata['data']['image'] = $_image;
- $this->returnData($_rdata);
- }
- /**
- * http://doc.1tsdk.com/159?page_id=4380
- * 小程序获取用户信息
- * 【域名】/mp/wx/getuserinfo
- */
- public function getMemInfo() {
- $this->checkLogin();
- $_channel_rq = $this->setChannelData();
- $_mem_rq = $this->setMemData();
- $_role_rq = $this->setRoleData();
- $_order_rq = $this->setOrderData();
- $_device_rq = $this->setDeviceData();
- $_game_rq = $this->setGameData();
- $_app_id = $_game_rq->getHAppId();
- $_oauth_data = (new MemoauthModel())->getInfoByAppMemId($_app_id, $this->mem_id);
- $_open_id = $_oauth_data['openid'];
- $_mem_id = $this->mem_id;
- $_is_ban = (new Ban())->checkMemEnv($this->mem_id, $_device_rq->getIp());
- if ($_is_ban != CommonStatus::NO_ERROR) {
- $_rdata['code'] = MemberStatus::MEM_ACCOUNT_ANOMALY;
- $_rdata['msg'] = $_is_ban;
- $_rdata['data'] = [];
- $this->returnData($_rdata);
- exit;
- }
- $_type = OauthConst::OAUTH_MP;
- $_rdata = (new MemberOut())->getMemInfo($_mem_id, $_open_id, $_type, $this->token, $_app_id);
- //$_mg_mem_id = (new HuoSession($this->mem_id, $_app_id))->getMgMemId();
- $_mg_mem_id = (new MemberOut())->getMgMemId($_game_rq->getHAppId(), $_mem_id);
- $_rdata['data']['mg_mem_id'] = $_mg_mem_id;
- HuoSession::setAppId($this->token, $_app_id);
- $_image = (new OrderOut())->getMemAppQrCode($_mem_id, $_app_id);
- if (empty($_image)) {
- $_image = '';
- }
- $_rdata['data']['image'] = $_image;
- $_pay_check = OrderConst::PAY_SWITCH_NO;
- /* 判断系统是否切换支付 */
- /* 判断支付切换 */
- if (GameConst::GAME_MP_GAME == $_game_rq->getPkgName()) {
- $_pay_switch = new PaySwitch();
- $_pay_check = $_pay_switch->getPaySwitch(
- $_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq
- );
- $_pay_check = $_pay_switch->checkShowPay($_pay_check, $_device_rq);
- if ($this->request->ip() == '120.236.141.221') {
- $_pay_show = new PayShow();
- $_show_status = $_pay_show->getPayShow(
- $_order_rq, $_role_rq, $_mem_rq, $_game_rq, $_channel_rq, $_device_rq
- );
- if (CommonConst::STATUS_NO == $_show_status) {
- $_pay_check = OrderConst::PAY_SWITCH_IOS_NO;
- }
- }
- }
- if (OrderConst::PAY_SWITCH_NO == $_pay_check
- && in_array(
- $_game_rq->getHAppId(), ['81234712', '81234716', '81234715']
- )) {
- $_pay_check = OrderConst::PAY_SWITCH_IOS_NO;
- }
- /* ip屏蔽处理 */
- if ($this->request->ip() == '221.229.173.156') {
- $_pay_check = OrderConst::PAY_SWITCH_IOS_NO;
- }
- $_rdata['data']['check'] = $_pay_check;
- /* IOS 充值提示 */
- $_game_data = GameCache::ins()->getInfoByAppId($_app_id);
- $_rdata['data']['ios_text'] = empty($_game_data['ext_info']['ios_text']) ? ''
- : $_game_data['ext_info']['ios_text'];
- $this->returnData($_rdata);
- }
- }
|