1.6
parent
fac8a4b68e
commit
3c7481a52c
|
|
@ -97,28 +97,6 @@ class User extends Common
|
||||||
return DataReturn('授权登录成功', 0, $result['data']['user_id']);
|
return DataReturn('授权登录成功', 0, $result['data']['user_id']);
|
||||||
}
|
}
|
||||||
return DataReturn($result['msg'], -100);
|
return DataReturn($result['msg'], -100);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// // 参数
|
|
||||||
// if(empty($this->data_post['authcode']))
|
|
||||||
// {
|
|
||||||
// return DataReturn('授权码不能为空', -1);
|
|
||||||
// }
|
|
||||||
|
|
||||||
// // 授权
|
|
||||||
// $ret = (new \base\AlipayAuth())->GetAuthCode($this->data_post['authcode'], MyC('common_app_mini_alipay_appid'));
|
|
||||||
// if($ret['status'] != 0)
|
|
||||||
// {
|
|
||||||
// return DataReturn($ret['msg'], -10);
|
|
||||||
// } else {
|
|
||||||
// $data = $ret['data'];
|
|
||||||
// $data['gender'] = empty($data['gender']) ? 0 : ($data['gender'] == 'm') ? 2 : 1;
|
|
||||||
// $data['openid'] = $data['user_id'];
|
|
||||||
// $data['referrer']= isset($this->data_post['referrer']) ? $this->data_post['referrer'] : 0;
|
|
||||||
// return UserService::AuthUserProgram($data, 'alipay_openid');
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -138,11 +116,6 @@ class User extends Common
|
||||||
'key_name' => 'openid',
|
'key_name' => 'openid',
|
||||||
'error_msg' => 'openid为空',
|
'error_msg' => 'openid为空',
|
||||||
],
|
],
|
||||||
// [
|
|
||||||
// 'checked_type' => 'empty',
|
|
||||||
// 'key_name' => 'userinfo',
|
|
||||||
// 'error_msg' => '用户数据为空',
|
|
||||||
// ],
|
|
||||||
];
|
];
|
||||||
$ret = ParamsChecked($this->data_post, $p);
|
$ret = ParamsChecked($this->data_post, $p);
|
||||||
if($ret !== true)
|
if($ret !== true)
|
||||||
|
|
@ -154,15 +127,14 @@ class User extends Common
|
||||||
$user = UserService::UserInfo('alipay_openid', $this->data_post['openid']);
|
$user = UserService::UserInfo('alipay_openid', $this->data_post['openid']);
|
||||||
if(empty($user))
|
if(empty($user))
|
||||||
{
|
{
|
||||||
$result = $this->data_post;
|
$result['nick_name'] = isset($this->data_post['nickName']) ? $this->data_post['nickName'] : '';
|
||||||
$result['nick_name'] = isset($result['nickName']) ? $result['nickName'] : '';
|
$this->data_post['gender'] = empty($this->data_post['gender']) ? 0 : ($this->data_post['gender'] == 'f') ? 1 : 2;
|
||||||
$result['gender'] = empty($result['gender']) ? 0 : ($result['gender'] == 'f') ? 1 : 2;
|
return UserService::AuthUserProgram($this->data_post, 'alipay_openid');
|
||||||
return UserService::AuthUserProgram($result, 'alipay_openid');
|
|
||||||
} else {
|
} else {
|
||||||
$user['is_mandatory_bind_mobile'] = intval(MyC('common_user_is_mandatory_bind_mobile'));
|
$user['is_mandatory_bind_mobile'] = intval(MyC('common_user_is_mandatory_bind_mobile'));
|
||||||
return DataReturn('授权成功', 0, $user);
|
return DataReturn('授权成功', 0, $user);
|
||||||
}
|
}
|
||||||
return DataReturn(empty($result) ? '获取用户信息失败' : $result, -100);
|
return DataReturn(empty($this->data_post) ? '获取用户信息失败' : $result, -100);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1293,74 +1293,6 @@ function Authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* [SS 设置缓存]
|
|
||||||
* @author Devil
|
|
||||||
* @blog http://gong.gg/
|
|
||||||
* @version 1.0.0
|
|
||||||
* @datetime 2017-09-24T19:01:00+0800
|
|
||||||
* @param [string] $key [缓存key]
|
|
||||||
* @param [mixed] $data [需要存储的数据]
|
|
||||||
* @return [boolean] [成功true, 失败false]
|
|
||||||
*/
|
|
||||||
function SS($key, $data)
|
|
||||||
{
|
|
||||||
if(empty($key) || empty($data))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
$data['cache_time'] = time();
|
|
||||||
return cache($key, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [GS 获取缓存]
|
|
||||||
* @author Devil
|
|
||||||
* @blog http://gong.gg/
|
|
||||||
* @version 1.0.0
|
|
||||||
* @datetime 2017-09-24T18:54:54+0800
|
|
||||||
* @param [string] $key [缓存key]
|
|
||||||
* @param [integer] $expires_time [默认过期时间0长期有效(单位秒)]
|
|
||||||
* @param [boolean] $is_filem_time [是否返回文件上一次更新时间]
|
|
||||||
* @return [boolean|mixed] [没数据false, 则数据]
|
|
||||||
*/
|
|
||||||
function GS($key, $expires_time = 0, $is_filem_time = false)
|
|
||||||
{
|
|
||||||
if(empty($key))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$data = cache($key);
|
|
||||||
if($data !== null)
|
|
||||||
{
|
|
||||||
$expires_time = intval($expires_time);
|
|
||||||
if($expires_time > 0)
|
|
||||||
{
|
|
||||||
if($data['cache_time']+$expires_time < time())
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [DS 删除缓存]
|
|
||||||
* @author Devil
|
|
||||||
* @blog http://gong.gg/
|
|
||||||
* @version 1.0.0
|
|
||||||
* @datetime 2017-09-24T19:01:00+0800
|
|
||||||
* @param [string] $key [缓存key]
|
|
||||||
* @return [boolean] [成功true, 失败false]
|
|
||||||
*/
|
|
||||||
function DS($key)
|
|
||||||
{
|
|
||||||
return cache($key, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [ParamsChecked 参数校验方法]
|
* [ParamsChecked 参数校验方法]
|
||||||
* @author Devil
|
* @author Devil
|
||||||
|
|
|
||||||
|
|
@ -1093,7 +1093,6 @@ class UserService
|
||||||
// 用户数据
|
// 用户数据
|
||||||
$salt = GetNumberCode(6);
|
$salt = GetNumberCode(6);
|
||||||
$data = [
|
$data = [
|
||||||
'add_time' => time(),
|
|
||||||
'upd_time' => time(),
|
'upd_time' => time(),
|
||||||
'salt' => $salt,
|
'salt' => $salt,
|
||||||
'pwd' => LoginPwdEncryption($params['pwd'], $salt),
|
'pwd' => LoginPwdEncryption($params['pwd'], $salt),
|
||||||
|
|
@ -1676,6 +1675,7 @@ class UserService
|
||||||
$data['referrer'] = self::UserReferrerDecrypt($params);
|
$data['referrer'] = self::UserReferrerDecrypt($params);
|
||||||
|
|
||||||
// 添加用户
|
// 添加用户
|
||||||
|
$data['add_time'] = time();
|
||||||
$user_id = Db::name('User')->insertGetId($data);
|
$user_id = Db::name('User')->insertGetId($data);
|
||||||
if($user_id > 0)
|
if($user_id > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -1819,7 +1819,6 @@ class UserService
|
||||||
// 不存在添加/则更新
|
// 不存在添加/则更新
|
||||||
if(empty($temp_user))
|
if(empty($temp_user))
|
||||||
{
|
{
|
||||||
$data['add_time'] = time();
|
|
||||||
$user_ret = self::UserInsert($data, $params);
|
$user_ret = self::UserInsert($data, $params);
|
||||||
if($user_ret['code'] == 0)
|
if($user_ret['code'] == 0)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -17,137 +17,6 @@ namespace base;
|
||||||
*/
|
*/
|
||||||
class AlipayAuth
|
class AlipayAuth
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* [__construct 构造方法]
|
|
||||||
*/
|
|
||||||
public function __construct(){}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [GetParamSign 生成参数和签名]
|
|
||||||
* @param [array] $data [待生成的参数]
|
|
||||||
* @param [array] $config [配置信息]
|
|
||||||
* @return [array] [生成好的参数和签名]
|
|
||||||
*/
|
|
||||||
private function GetParamSign($data, $config = [])
|
|
||||||
{
|
|
||||||
$param = '';
|
|
||||||
$sign = '';
|
|
||||||
ksort($data);
|
|
||||||
|
|
||||||
foreach($data AS $key => $val)
|
|
||||||
{
|
|
||||||
$param .= "$key=" .urlencode($val). "&";
|
|
||||||
$sign .= "$key=$val&";
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = array(
|
|
||||||
'param' => substr($param, 0, -1),
|
|
||||||
'value' => substr($sign, 0, -1),
|
|
||||||
);
|
|
||||||
if(!empty($config['key']))
|
|
||||||
{
|
|
||||||
$result['sign'] = $result['value'].$config['key'];
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [GetAlipayUserInfo 支付宝小程序获取用户信息]
|
|
||||||
* @author Devil
|
|
||||||
* @blog http://gong.gg/
|
|
||||||
* @version 1.0.0
|
|
||||||
* @datetime 2017-09-23T22:30:43+0800
|
|
||||||
* @param [string] $authcode [用户授权码]
|
|
||||||
* @param [string] $app_id [应用appid]
|
|
||||||
* @return [array|boolean] [成功返回用户数据, 则false]
|
|
||||||
*/
|
|
||||||
public function GetAlipayUserInfo($authcode, $app_id)
|
|
||||||
{
|
|
||||||
// 从缓存获取用户信息
|
|
||||||
$key = 'alipay_userinfo_'.$authcode;
|
|
||||||
$result = GS($key);
|
|
||||||
if($result !== false)
|
|
||||||
{
|
|
||||||
return ['status'=>0, 'msg'=>'success', 'data'=>$result];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取授权信息并且获取用户信息
|
|
||||||
$auth = $this->GetAuthAccessToken($authcode, $app_id);
|
|
||||||
if($auth['status'] == 0)
|
|
||||||
{
|
|
||||||
// 请求参数
|
|
||||||
$param = [
|
|
||||||
'app_id' => $app_id,
|
|
||||||
'method' => 'alipay.user.info.share',
|
|
||||||
'charset' => 'utf-8',
|
|
||||||
'format' => 'JSON',
|
|
||||||
'sign_type' => 'RSA2',
|
|
||||||
'timestamp' => date('Y-m-d H:i:s'),
|
|
||||||
'version' => '1.0',
|
|
||||||
'auth_token' => $auth['data']['access_token'],
|
|
||||||
];
|
|
||||||
|
|
||||||
// 生成签名参数+签名
|
|
||||||
$p = $this->GetParamSign($param);
|
|
||||||
$param['sign'] = $this->MyRsaSign($p['value']);
|
|
||||||
|
|
||||||
// 执行请求
|
|
||||||
$result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $param);
|
|
||||||
if(!empty($result['alipay_user_info_share_response']['code']) && $result['alipay_user_info_share_response']['code'] == 10000)
|
|
||||||
{
|
|
||||||
// 验证签名正确则存储缓存返回数据
|
|
||||||
if(!$this->SyncRsaVerify($result, 'alipay_user_info_share_response'))
|
|
||||||
{
|
|
||||||
return ['status'=>-1, 'msg'=>'签名验证失败'];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 存储缓存
|
|
||||||
SS($key, $result['alipay_user_info_share_response']);
|
|
||||||
|
|
||||||
// 返回用户数据
|
|
||||||
return ['status'=>0, 'msg'=>'success', 'data'=>$result['alipay_user_info_share_response']];
|
|
||||||
}
|
|
||||||
|
|
||||||
$msg = empty($result['error_response']['sub_msg']) ? '授权失败' : $result['error_response']['sub_msg'];
|
|
||||||
if(!empty($result['alipay_user_info_share_response']['sub_msg']))
|
|
||||||
{
|
|
||||||
$msg = $result['alipay_user_info_share_response']['sub_msg'];
|
|
||||||
}
|
|
||||||
return ['status'=>-1, 'msg'=>$msg];
|
|
||||||
} else {
|
|
||||||
return $auth;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* [GetAuthAccessToken 根据用户授权换取授权访问令牌]
|
|
||||||
* @author Devil
|
|
||||||
* @blog http://gong.gg/
|
|
||||||
* @version 1.0.0
|
|
||||||
* @datetime 2017-09-23T22:36:26+0800
|
|
||||||
* @param [string] $authcode [用户授权码]
|
|
||||||
* @param [string] $app_id [应用appid]
|
|
||||||
* @return [array|boolean] [失败false, 用户授权信息]
|
|
||||||
*/
|
|
||||||
public function GetAuthAccessToken($authcode, $app_id)
|
|
||||||
{
|
|
||||||
// 获取用户授权信息
|
|
||||||
$key = 'alipay_authcode_'.$authcode;
|
|
||||||
$result = GS($key, 0, true);
|
|
||||||
|
|
||||||
// 过期判断
|
|
||||||
if($result == false || $result['filemtime']+$result['re_expires_in'] < time())
|
|
||||||
{
|
|
||||||
$result = $this->GetAuthCode($app_id, $key, $authcode);
|
|
||||||
} else {
|
|
||||||
if($result['filemtime']+$result['expires_in'] < time())
|
|
||||||
{
|
|
||||||
$result = $this->GetAuthCode($app_id, $key, '', $result['refresh_token']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [GetAuthCode 获取用户授权信息]
|
* [GetAuthCode 获取用户授权信息]
|
||||||
* @author Devil
|
* @author Devil
|
||||||
|
|
@ -201,6 +70,40 @@ class AlipayAuth
|
||||||
return ['status'=>-1, 'msg'=>$msg];
|
return ['status'=>-1, 'msg'=>$msg];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [__construct 构造方法]
|
||||||
|
*/
|
||||||
|
public function __construct(){}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* [GetParamSign 生成参数和签名]
|
||||||
|
* @param [array] $data [待生成的参数]
|
||||||
|
* @param [array] $config [配置信息]
|
||||||
|
* @return [array] [生成好的参数和签名]
|
||||||
|
*/
|
||||||
|
private function GetParamSign($data, $config = [])
|
||||||
|
{
|
||||||
|
$param = '';
|
||||||
|
$sign = '';
|
||||||
|
ksort($data);
|
||||||
|
|
||||||
|
foreach($data AS $key => $val)
|
||||||
|
{
|
||||||
|
$param .= "$key=" .urlencode($val). "&";
|
||||||
|
$sign .= "$key=$val&";
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = array(
|
||||||
|
'param' => substr($param, 0, -1),
|
||||||
|
'value' => substr($sign, 0, -1),
|
||||||
|
);
|
||||||
|
if(!empty($config['key']))
|
||||||
|
{
|
||||||
|
$result['sign'] = $result['value'].$config['key'];
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [MyRsaSign 签名字符串]
|
* [MyRsaSign 签名字符串]
|
||||||
* @author Devil
|
* @author Devil
|
||||||
|
|
|
||||||
|
|
@ -293,11 +293,11 @@ App({
|
||||||
*/
|
*/
|
||||||
user_auth_login(object, method, auth_data) {
|
user_auth_login(object, method, auth_data) {
|
||||||
var openid = my.getStorageSync({key: this.data.cache_user_login_key});
|
var openid = my.getStorageSync({key: this.data.cache_user_login_key});
|
||||||
if ((openid || null) == null)
|
if ((openid.data || null) == null)
|
||||||
{
|
{
|
||||||
this.user_login(object, method, auth_data);
|
this.user_login(object, method, auth_data);
|
||||||
} else {
|
} else {
|
||||||
this.get_user_login_info(object, method, openid, auth_data);
|
this.get_user_login_info(object, method, openid.data, auth_data);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ Page({
|
||||||
*/
|
*/
|
||||||
onLoad(option) {
|
onLoad(option) {
|
||||||
// 标题设置
|
// 标题设置
|
||||||
my.setNavigationBar({title: '手机绑定'});
|
my.setNavigationBar({title: (this.data.user == null) ? '授权用户信息' : '手机绑定'});
|
||||||
|
|
||||||
// 设置用户信息
|
// 设置用户信息
|
||||||
this.setData({params: option, user: app.get_user_cache_info() || null});
|
this.setData({params: option, user: app.get_user_cache_info() || null});
|
||||||
|
|
@ -39,17 +39,11 @@ Page({
|
||||||
user_auth_code(object, method, auth_data) {
|
user_auth_code(object, method, auth_data) {
|
||||||
my.getOpenUserInfo({
|
my.getOpenUserInfo({
|
||||||
success: (userinfo) => {
|
success: (userinfo) => {
|
||||||
// my.alert({
|
|
||||||
// title: '亲',
|
|
||||||
// content: userinfo,
|
|
||||||
// buttonText: '我知道了',
|
|
||||||
// });
|
|
||||||
|
|
||||||
// 字符串则转为json对象(兼容支付宝框架bug)
|
// 字符串则转为json对象(兼容支付宝框架bug)
|
||||||
// if(typeof(userinfo) == 'string')
|
if(typeof(userinfo.response) == 'string')
|
||||||
// {
|
{
|
||||||
userinfo = JSON.parse(userinfo.response);
|
userinfo = JSON.parse(userinfo.response);
|
||||||
//}
|
}
|
||||||
console.log(userinfo.response)
|
console.log(userinfo.response)
|
||||||
app.user_auth_login(this, 'user_auth_back_event', userinfo.response);
|
app.user_auth_login(this, 'user_auth_back_event', userinfo.response);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue