替换这个方法
public function mpAuth()
{
list($code, $post_cache_key) = $this->request->params([
‘code’,
‘cache_key’,
], true);
$session_key = Cache::get(‘eb_api_code_’ .
p
o
s
t
c
a
c
h
e
k
e
y
)
;
i
f
(
!
post_cache_key); if (!
postcachekey);if(!code && !$session_key)
return app(‘json’)->fail(‘授权失败,参数有误’);
m
i
n
i
P
r
o
g
r
a
m
S
e
r
v
i
c
e
=
M
i
n
i
P
r
o
g
r
a
m
S
e
r
v
i
c
e
:
:
c
r
e
a
t
e
(
)
;
i
f
(
miniProgramService = MiniProgramService::create(); if (
miniProgramService=MiniProgramService::create();if(code && !$session_key) {
try {
$userInfoCong =
m
i
n
i
P
r
o
g
r
a
m
S
e
r
v
i
c
e
−
>
g
e
t
U
s
e
r
I
n
f
o
(
miniProgramService->getUserInfo(
miniProgramService−>getUserInfo(code);
$session_key = $userInfoCong[‘session_key’];
$cache_key = md5(time() . $code);
Cache::set(‘eb_api_code_’ . $cache_key, $session_key, 86400);
} catch (Exception $e) {
return app(‘json’)->fail(‘获取session_key失败,请检查您的配置!’, [‘line’ => $e->getLine(), ‘message’ => $e->getMessage()]);
}
}
$data = $this->request->params([
['spread_spid', 0],
['spread_code', ''],
['iv', ''],
['encryptedData', ''],
]);
try {
//解密获取用户信息
$userInfo = $miniProgramService->encryptor($session_key, $data['iv'], $data['encryptedData']);
} catch (Exception $e) {
if ($e->getCode() == '-41003') return app('json')->fail('获取会话密匙失败', ['line' => $e->getLine(), 'message' => $e->getMessage()]);
throw $e;
}
if (!$userInfo) return app('json')->fail('openid获取失败');
if (!isset($userInfo['openId'])) $userInfo['openId'] = $userInfoCong['openid'] ?? '';
$userInfo['unionId'] = $userInfoCong['unionid'] ?? $userInfo['unionId'] ?? '';
if (!$userInfo['openId']) return app('json')->fail('openid获取失败');
/** @var WechatUserRepository $make */
$make = app()->make(WechatUserRepository::class);
$user = $make->syncRoutineUser($userInfo['openId'], $userInfo);
if (!$user)
return app('json')->fail('授权失败');
/** @var UserRepository $make */
$userRepository = app()->make(UserRepository::class);
$user[1] = $userRepository->mainUser($user[1]);
$code = intval($data['spread_code']['id'] ?? $data['spread_code']);
//获取是否有扫码进小程序
if ($code && ($info = app()->make(RoutineQrcodeRepository::class)->getRoutineQrcodeFindType($code))) {
$data['spread_spid'] = $info['third_id'];
}
$userRepository->bindSpread($user[1], intval($data['spread_spid']));
$tokenInfo = $userRepository->createToken($user[1]);
$userRepository->loginAfter($user[1]);
return app('json')->success($userRepository->returnToken($user[1], $tokenInfo));
}