You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
3.7 KiB
125 lines
3.7 KiB
<?php
|
|
|
|
namespace app\base\controller\mpalipay\api;
|
|
|
|
use app\base\model\mpalipay\MpalipayUser;
|
|
use think\App;
|
|
use think\facade\Db;
|
|
|
|
class Auth extends Base
|
|
{
|
|
|
|
/**
|
|
* 支付宝小程序 授权登录
|
|
* @date 2020-11-30
|
|
*/
|
|
public function getAlipayUserId()
|
|
{
|
|
$code = input('post.code');
|
|
$ali_pay_param = get_mp_alipay_config();
|
|
|
|
$mpalipay_user_model = new MpalipayUser();
|
|
$jwt_class = new \jwt\Jwt();
|
|
$user_class = new \ali\alipay\mpalipay\User($ali_pay_param);
|
|
|
|
//获取支付宝小程序用户信息
|
|
$result = $user_class->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);
|
|
}
|
|
}
|