get('https://api.weixin.qq.com/sns/jscode2session', [ 'appid' => $appId, 'secret' => $secret, 'js_code' => $code, 'grant_type' => 'authorization_code', ]); $payload = $response->json(); if (! is_array($payload)) { throw new RuntimeException('微信登录响应异常'); } if (! empty($payload['errcode'])) { throw new RuntimeException((string) ($payload['errmsg'] ?? '微信登录失败')); } if (empty($payload['openid'])) { throw new RuntimeException('微信登录未返回 openid'); } return [ 'openid' => (string) $payload['openid'], 'unionid' => isset($payload['unionid']) ? (string) $payload['unionid'] : null, 'session_key' => (string) ($payload['session_key'] ?? ''), ]; } }