123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use app\common\model\UserRelation;
- use app\common\model\User;
- use liuniu\MiniProgramService;
- use liuniu\UtilService;
- use think\Hook;
- use think\Request;
- class MiniProgram extends Api
- {
- /**
- * 小程序授权登录
- * @param Request $request
- * @return mixed
- * @throws \Psr\SimpleCache\InvalidArgumentException
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function mp_auth(Request $request)
- {
- $cache_key = '';
- list($code, $post_cache_key, $login_type) = UtilService::postMore([
- ['code', ''],
- ['cache_key', ''],
- ['login_type', '']
- ], $request, true);
- $session_key = cache('post_cache_key',$post_cache_key);
- if (!$code && !$session_key)
- $this->error('授权失败,参数有误');
- if ($code && !$session_key) {
- try {
- $userInfoCong = MiniProgramService::getUserInfo($this->cid,$code);
- $session_key = $userInfoCong['session_key'];
- $cache_key = md5(time() . $code);
- cache('post_cache_key', $session_key, 86400);
- } catch (\Exception $e) {
- $this->error('',['message' => $e->getMessage(), 'line' => $e->getLine()]);
- }
- }
- $data = UtilService::postMore([
- ['spread_spid', 0],
- ['spread_code', ''],
- ['iv', ''],
- ['encryptedData', ''],
- ]);//获取前台传的code
- try {
- //解密获取用户信息
- $userInfo = MiniProgramService::encryptor($session_key, $data['iv'], $data['encryptedData']);
- } catch (\Exception $e) {
- if ($e->getCode() == '-41003') $this->error('获取会话密匙失败');
- }
- if (!isset($userInfoCong['openid'])) $this->error('openid获取失败');
- if (!isset($userInfo['unionId'])) $userInfo['unionId'] = '';
- $userInfo['openId'] = $userInfoCong['openid'];
- $userInfo['spid'] = $data['spread_spid'];
- $userInfo['code'] = $data['spread_code'];
- $userInfo['session_key'] = $session_key;
- $userInfo['login_type'] = $login_type;
- @file_put_contents("user.txt",json_encode($userInfo).'--'.json_encode($userInfoCong));
- $user = User::where('id', UserRelation::openidToUid($userInfo['openId'], 'routine_openid'))->find();
- if (!$user)
- $this->error('获取用户失败');
- $this->auth->direct($user['id']);
- return $this->success('登录成功', $this->auth->getUserinfo());
- }
- /**
- * 小程序支付回调
- */
- public function notify()
- {
- MiniProgramService::handleNotify();
- }
- /**
- * 获取小程序订阅消息id
- * @return mixed
- */
- public function teml_ids()
- {
- $temlIdsName = SubscribeTemplateService::getConstants();
- $temlIdsList = CacheService::get('TEML_IDS_LIST', function () use ($temlIdsName) {
- $temlId = [];
- foreach ($temlIdsName as $key => $item) {
- $temlId[strtolower($key)] = SubscribeTemplateService::setTemplateId($item);
- }
- return $temlId;
- });
- return app('json')->success($temlIdsList);
- }
- }
|