getAlipayUserId($code); //记录日志 platformLog(['code' => $code], $result, 'alipaysdk_mpalipay_get_user_id_by_code_' . UID); if (!empty($result['code'])) { return sendErrorMessage($result['code'], $result['sub_msg']); } //更新小程序用户信息表 $user_info = [ 'uid' => UID, 'openid' => isset($result['user_id']) ? $result['user_id'] : '', 'access_token' => isset($result['access_token']) ? $result['access_token'] : '', 'access_token_time' => time(), ]; $res = $mpalipay_user_model->updateUser($user_info); if(!$res){ return sendErrorMessage(4001, '更新小程序用户信息失败'); } //获取用户信息 $mpalipay_user = $mpalipay_user_model->getOneData([ ['openid', '=', $user_info['openid']] ], 'id,user_id,openid'); //获取token $info = [ 'uid' => UID, 'openid' => $mpalipay_user['openid'], 'mpalipay_user_id' => $mpalipay_user['id'], 'user_id' => $mpalipay_user['user_id'], ]; $res_token = $jwt_class->signToken($info); $r_data = $info; $r_data['access_token'] = $res_token['token']; $r_data['access_token_expire_time'] = $res_token['exp']; return sendSuccessMessage($r_data); } /** * 支付宝小程序 授权获取手机号 * @date 2021-12-30 */ public function getPhoneNumber() { $param = input('post.'); $param['last_user_id'] = input('post.last_user_id', ''); $ali_pay_param = get_mp_alipay_config(); $user_logic = new \app\base\logic\User(); $jwt_class = new \jwt\Jwt(); $user_class = new \ali\alipay\mpalipay\User($ali_pay_param); //换取用户手机号 $result = $user_class->getPhoneNumber($param['encrypted_data']); //记录三方日志 platformLog(['encrypted_data' => $param['encrypted_data']], $result, 'alipaysdk_mpalipay_get_phone_number_' . UID); if ($result['code'] != 10000) { return sendErrorMessage($result['code'], $result['subMsg']); } $mobile_phone = $result['mobile']; Db::startTrans(); //根据不同平台组合info参数 $info = TOKEN_DATA; $info['user_agent'] = USER_AGENT; //登录并更新相关信息(用户表和平台用户表) $res = $user_logic->login($mobile_phone, $info, $param['last_user_id']); if ($res['code'] != 0) { Db::rollback(); return json($res); } $user_id = $res['data']['user_id']; Db::commit(); //绑定三方平台 // 签发token $arr = TOKEN_DATA; $arr['user_id'] = $user_id; $res_token = $jwt_class->signToken($arr); $r_data = [ 'user_id' => $user_id, 'access_token' => $res_token['token'], 'access_token_expire_time' => $res_token['exp'] ]; return sendSuccessMessage($r_data); } }