Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
______--______
ShopXO
提交
bebe8429
ShopXO
项目概览
______--______
/
ShopXO
与 Fork 源项目一致
Fork自
纵之格 / ShopXO
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ShopXO
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
bebe8429
编写于
11月 16, 2021
作者:
G
gongfuxiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
小程序登陆接口优化
上级
eb317cbf
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
586 addition
and
472 deletion
+586
-472
app/api/controller/User.php
app/api/controller/User.php
+18
-472
app/service/AppMiniUserService.php
app/service/AppMiniUserService.php
+568
-0
未找到文件。
app/api/controller/User.php
浏览文件 @
bebe8429
...
...
@@ -21,6 +21,7 @@ use app\service\BuyService;
use
app\service\GoodsFavorService
;
use
app\service\GoodsBrowseService
;
use
app\service\IntegralService
;
use
app\service\AppMiniUserService
;
/**
* 用户
...
...
@@ -168,498 +169,43 @@ class User extends Common
}
/**
*
支付宝
用户授权
*
小程序
用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-04
* @desc description
*/
public
function
AlipayUserAuth
()
{
// 参数
if
(
!
empty
(
$this
->
data_post
[
'authcode'
]))
{
// 授权
$result
=
(
new
\
base\Alipay
())
->
GetAuthSessionKey
(
MyC
(
'common_app_mini_alipay_appid'
),
$this
->
data_post
[
'authcode'
]);
if
(
$result
[
'status'
]
==
0
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'alipay_openid'
,
$result
[
'data'
][
'user_id'
]);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
][
'user_id'
]]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
100
);
}
}
else
{
$ret
=
DataReturn
(
'授权码为空'
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 支付宝小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
*/
public
function
AlipayUserInfo
()
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
];
$ret
=
ParamsChecked
(
$this
->
data_post
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'alipay_openid'
,
$this
->
data_post
[
'openid'
]);
if
(
empty
(
$user
))
{
$this
->
data_post
[
'nickname'
]
=
isset
(
$this
->
data_post
[
'nickName'
])
?
$this
->
data_post
[
'nickName'
]
:
''
;
$this
->
data_post
[
'gender'
]
=
empty
(
$this
->
data_post
[
'gender'
])
?
0
:
((
$this
->
data_post
[
'gender'
]
==
'f'
)
?
1
:
2
);
$ret
=
UserService
::
AuthUserProgram
(
$this
->
data_post
,
'alipay_openid'
);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 微信小程序获取用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
*/
public
function
WechatUserAuth
()
{
// 授权
$result
=
(
new
\
base\Wechat
(
MyC
(
'common_app_mini_weixin_appid'
),
MyC
(
'common_app_mini_weixin_appsecret'
)))
->
GetAuthSessionKey
(
$this
->
data_post
);
if
(
$result
[
'status'
]
==
0
)
{
// unionid
$unionid
=
empty
(
$result
[
'data'
][
'unionid'
])
?
''
:
$result
[
'data'
][
'unionid'
];
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_openid'
,
$result
[
'data'
][
'openid'
]);
if
(
empty
(
$user
)
&&
!
empty
(
$unionid
))
{
// 根据unionid获取数据
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_unionid'
,
$unionid
);
}
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
][
'openid'
],
'unionid'
=>
$unionid
]);
}
else
{
// 如果用户openid为空则绑定到用户下面
if
(
empty
(
$user
[
'weixin_openid'
]))
{
if
(
UserService
::
UserOpenidBind
(
$user
[
'id'
],
$result
[
'data'
][
'openid'
],
'weixin_openid'
))
{
// 登录数据更新
$user
=
UserService
::
AppUserInfoHandle
(
$user
[
'id'
]);
}
}
}
// 用户状态
if
(
!
empty
(
$user
))
{
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 微信小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @date 2021-11-15
* @desc description
*/
public
function
WechatUserInfo
()
public
function
AppMiniUserAuth
()
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
],
];
$ret
=
ParamsChecked
(
$this
->
data_post
,
$p
);
if
(
$ret
===
true
)
$module
=
'\app\service\AppMiniUserService'
;
$action
=
ucfirst
(
APPLICATION_CLIENT_TYPE
)
.
'UserAuth'
;
if
(
method_exists
(
$module
,
$action
))
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_openid'
,
$this
->
data_post
[
'openid'
]);
if
(
empty
(
$user
))
{
// 字段名称不一样参数处理
$auth_data
=
is_array
(
$this
->
data_post
[
'auth_data'
])
?
$this
->
data_post
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$this
->
data_post
[
'auth_data'
]),
true
);
$auth_data
[
'nickname'
]
=
isset
(
$auth_data
[
'nickName'
])
?
$auth_data
[
'nickName'
]
:
''
;
$auth_data
[
'avatar'
]
=
isset
(
$auth_data
[
'avatarUrl'
])
?
$auth_data
[
'avatarUrl'
]
:
''
;
$auth_data
[
'gender'
]
=
empty
(
$auth_data
[
'gender'
])
?
0
:
((
$auth_data
[
'gender'
]
==
2
)
?
1
:
2
);
// 公共参数处理
$auth_data
[
'weixin_unionid'
]
=
isset
(
$this
->
data_post
[
'unionid'
])
?
$this
->
data_post
[
'unionid'
]
:
''
;
$auth_data
[
'openid'
]
=
$this
->
data_post
[
'openid'
];
$auth_data
[
'referrer'
]
=
isset
(
$this
->
data_post
[
'referrer'
])
?
$this
->
data_post
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$auth_data
,
'weixin_openid'
);
$ret
=
AppMiniUserService
::
$action
(
$this
->
data_post
);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
$ret
=
DataReturn
(
'方法未定义['
.
$action
.
']'
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
*
百度小程序获取
用户信息
*
小程序
用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 20
18-11-06
* @date 20
21-11-15
* @desc description
*/
public
function
BaiduUserAuth
()
public
function
AppMiniUserInfo
()
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_baidu_appid'
),
'key'
=>
MyC
(
'common_app_mini_baidu_appkey'
),
'secret'
=>
MyC
(
'common_app_mini_baidu_appsecret'
),
];
$result
=
(
new
\
base\Baidu
(
$config
))
->
GetAuthSessionKey
(
$this
->
data_post
);
if
(
$result
[
'status'
]
==
0
)
$module
=
'\app\service\AppMiniUserService'
;
$action
=
ucfirst
(
APPLICATION_CLIENT_TYPE
)
.
'UserInfo'
;
if
(
method_exists
(
$module
,
$action
))
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'baidu_openid'
,
$result
);
if
(
!
empty
(
$user
))
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
else
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
]]);
}
$ret
=
AppMiniUserService
::
$action
(
$this
->
data_post
);
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 百度小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
*/
public
function
BaiduUserInfo
()
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'encrypted_data'
,
'error_msg'
=>
'解密数据为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'iv'
,
'error_msg'
=>
'iv为空,请重试'
,
]
];
$ret
=
ParamsChecked
(
$this
->
data_post
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'baidu_openid'
,
$this
->
data_post
[
'openid'
]);
if
(
empty
(
$user
))
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_baidu_appid'
),
'key'
=>
MyC
(
'common_app_mini_baidu_appkey'
),
'secret'
=>
MyC
(
'common_app_mini_baidu_appsecret'
),
];
$result
=
(
new
\
base\Baidu
(
$config
))
->
DecryptData
(
$this
->
data_post
[
'encrypted_data'
],
$this
->
data_post
[
'iv'
],
$this
->
data_post
[
'openid'
]);
if
(
$result
[
'status'
]
==
0
&&
!
empty
(
$result
[
'data'
]))
{
$result
[
'nickname'
]
=
isset
(
$result
[
'data'
][
'nickname'
])
?
$result
[
'data'
][
'nickname'
]
:
''
;
$result
[
'avatar'
]
=
isset
(
$result
[
'data'
][
'headimgurl'
])
?
$result
[
'data'
][
'headimgurl'
]
:
''
;
$result
[
'gender'
]
=
empty
(
$result
[
'data'
][
'sex'
])
?
0
:
((
$result
[
'data'
][
'sex'
]
==
2
)
?
1
:
2
);
$result
[
'openid'
]
=
$result
[
'data'
][
'openid'
];
$result
[
'referrer'
]
=
isset
(
$this
->
data_post
[
'referrer'
])
?
$this
->
data_post
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$result
,
'baidu_openid'
);
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
1
);
}
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 头条小程序用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-27
* @desc description
*/
public
function
ToutiaoUserAuth
()
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_toutiao_appid'
),
'secret'
=>
MyC
(
'common_app_mini_toutiao_appsecret'
),
];
$result
=
(
new
\
base\Toutiao
(
$config
))
->
GetAuthSessionKey
(
$this
->
data_post
);
if
(
$result
[
'status'
]
==
0
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'toutiao_openid'
,
$result
);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
]]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* 头条小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-27
* @desc description
*/
public
function
ToutiaoUserInfo
()
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'userinfo'
,
'error_msg'
=>
'用户信息为空'
,
],
];
$ret
=
ParamsChecked
(
$this
->
data_post
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'toutiao_openid'
,
$this
->
data_post
[
'openid'
]);
if
(
empty
(
$user
))
{
$result
=
json_decode
(
htmlspecialchars_decode
(
$this
->
data_post
[
'userinfo'
]),
true
);
if
(
is_array
(
$result
))
{
$result
[
'nickname'
]
=
isset
(
$result
[
'nickName'
])
?
$result
[
'nickName'
]
:
''
;
$result
[
'avatar'
]
=
isset
(
$result
[
'avatarUrl'
])
?
$result
[
'avatarUrl'
]
:
''
;
$result
[
'gender'
]
=
empty
(
$result
[
'gender'
])
?
0
:
((
$result
[
'gender'
]
==
2
)
?
1
:
2
);
$result
[
'openid'
]
=
$this
->
data_post
[
'openid'
];
$result
[
'referrer'
]
=
isset
(
$this
->
data_post
[
'referrer'
])
?
$this
->
data_post
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$result
,
'toutiao_openid'
);
}
else
{
$ret
=
DataReturn
(
empty
(
$result
)
?
'获取用户信息失败'
:
$result
,
-
1
);
}
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* QQ小程序获取用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-31
* @desc description
*/
public
function
QQUserAuth
()
{
// 参数
if
(
!
empty
(
$this
->
data_post
[
'authcode'
]))
{
// 授权
$result
=
(
new
\
base\QQ
(
MyC
(
'common_app_mini_qq_appid'
),
MyC
(
'common_app_mini_qq_appsecret'
)))
->
GetAuthSessionKey
(
$this
->
data_post
[
'authcode'
]);
if
(
$result
!==
false
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'qq_openid'
,
$result
);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
'授权登录失败'
,
-
100
);
}
}
else
{
$ret
=
DataReturn
(
'授权码为空'
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
/**
* QQ小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-31
* @desc description
*/
public
function
QQUserInfo
()
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'encrypted_data'
,
'error_msg'
=>
'解密数据为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'iv'
,
'error_msg'
=>
'iv为空,请重试'
,
]
];
$ret
=
ParamsChecked
(
$this
->
data_post
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'qq_openid'
,
$this
->
data_post
[
'openid'
]);
if
(
empty
(
$user
))
{
$result
=
(
new
\
base\QQ
(
MyC
(
'common_app_mini_qq_appid'
),
MyC
(
'common_app_mini_qq_appsecret'
)))
->
DecryptData
(
$this
->
data_post
[
'encrypted_data'
],
$this
->
data_post
[
'iv'
],
$this
->
data_post
[
'openid'
]);
if
(
is_array
(
$result
))
{
$result
[
'nickname'
]
=
isset
(
$result
[
'nickName'
])
?
$result
[
'nickName'
]
:
''
;
$result
[
'avatar'
]
=
isset
(
$result
[
'avatarUrl'
])
?
$result
[
'avatarUrl'
]
:
''
;
$result
[
'gender'
]
=
empty
(
$result
[
'gender'
])
?
0
:
((
$result
[
'gender'
]
==
2
)
?
1
:
2
);
$result
[
'qq_unionid'
]
=
isset
(
$result
[
'unionId'
])
?
$result
[
'unionId'
]
:
''
;
$result
[
'openid'
]
=
$result
[
'openId'
];
$result
[
'referrer'
]
=
isset
(
$this
->
data_post
[
'referrer'
])
?
$this
->
data_post
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$result
,
'qq_openid'
);
}
else
{
$ret
=
DataReturn
(
empty
(
$result
)
?
'获取用户信息失败'
:
$result
,
-
1
);
}
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
$ret
=
DataReturn
(
'方法未定义['
.
$action
.
']'
,
-
1
);
}
return
ApiService
::
ApiDataReturn
(
$ret
);
}
...
...
app/service/AppMiniUserService.php
0 → 100644
浏览文件 @
bebe8429
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2099 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( https://opensource.org/licenses/mit-license.php )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace
app\service
;
use
app\service\UserService
;
/**
* 小程序用户服务层
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class
AppMiniUserService
{
/**
* 支付宝用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2021-03-04
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
AlipayUserAuth
(
$params
=
[])
{
// 参数
if
(
!
empty
(
$params
[
'authcode'
]))
{
// 授权
$result
=
(
new
\
base\Alipay
())
->
GetAuthSessionKey
(
MyC
(
'common_app_mini_alipay_appid'
),
$params
[
'authcode'
]);
if
(
$result
[
'status'
]
==
0
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'alipay_openid'
,
$result
[
'data'
][
'user_id'
]);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
][
'user_id'
]]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
100
);
}
}
else
{
$ret
=
DataReturn
(
'授权码为空'
,
-
1
);
}
return
$ret
;
}
/**
* 支付宝小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
AlipayUserInfo
(
$params
=
[])
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'alipay_openid'
,
$params
[
'openid'
]);
if
(
empty
(
$user
))
{
// 字段名称不一样参数处理
$auth_data
=
is_array
(
$params
[
'auth_data'
])
?
$params
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'auth_data'
]),
true
);
$auth_data
[
'nickname'
]
=
isset
(
$auth_data
[
'nickName'
])
?
$auth_data
[
'nickName'
]
:
''
;
$auth_data
[
'gender'
]
=
empty
(
$auth_data
[
'gender'
])
?
0
:
((
$auth_data
[
'gender'
]
==
'f'
)
?
1
:
2
);
// 公共参数处理
$auth_data
[
'weixin_unionid'
]
=
isset
(
$params
[
'unionid'
])
?
$params
[
'unionid'
]
:
''
;
$auth_data
[
'openid'
]
=
$params
[
'openid'
];
$auth_data
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
$params
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$auth_data
,
'alipay_openid'
);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
$ret
;
}
/**
* 微信小程序获取用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WeixinUserAuth
(
$params
=
[])
{
// 授权
$result
=
(
new
\
base\Wechat
(
MyC
(
'common_app_mini_weixin_appid'
),
MyC
(
'common_app_mini_weixin_appsecret'
)))
->
GetAuthSessionKey
(
$params
);
if
(
$result
[
'status'
]
==
0
)
{
// unionid
$unionid
=
empty
(
$result
[
'data'
][
'unionid'
])
?
''
:
$result
[
'data'
][
'unionid'
];
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_openid'
,
$result
[
'data'
][
'openid'
]);
if
(
empty
(
$user
)
&&
!
empty
(
$unionid
))
{
// 根据unionid获取数据
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_unionid'
,
$unionid
);
}
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
][
'openid'
],
'unionid'
=>
$unionid
]);
}
else
{
// 如果用户openid为空则绑定到用户下面
if
(
empty
(
$user
[
'weixin_openid'
]))
{
if
(
UserService
::
UserOpenidBind
(
$user
[
'id'
],
$result
[
'data'
][
'openid'
],
'weixin_openid'
))
{
// 登录数据更新
$user
=
UserService
::
AppUserInfoHandle
(
$user
[
'id'
]);
}
}
}
// 用户状态
if
(
!
empty
(
$user
))
{
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
$ret
;
}
/**
* 微信小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
WeixinUserInfo
(
$params
=
[])
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'weixin_openid'
,
$params
[
'openid'
]);
if
(
empty
(
$user
))
{
// 字段名称不一样参数处理
$auth_data
=
is_array
(
$params
[
'auth_data'
])
?
$params
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'auth_data'
]),
true
);
$auth_data
[
'nickname'
]
=
isset
(
$auth_data
[
'nickName'
])
?
$auth_data
[
'nickName'
]
:
''
;
$auth_data
[
'avatar'
]
=
isset
(
$auth_data
[
'avatarUrl'
])
?
$auth_data
[
'avatarUrl'
]
:
''
;
$auth_data
[
'gender'
]
=
empty
(
$auth_data
[
'gender'
])
?
0
:
((
$auth_data
[
'gender'
]
==
2
)
?
1
:
2
);
// 公共参数处理
$auth_data
[
'weixin_unionid'
]
=
isset
(
$params
[
'unionid'
])
?
$params
[
'unionid'
]
:
''
;
$auth_data
[
'openid'
]
=
$params
[
'openid'
];
$auth_data
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
$params
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$auth_data
,
'weixin_openid'
);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
$ret
;
}
/**
* 百度小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
BaiduUserAuth
(
$params
=
[])
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_baidu_appid'
),
'key'
=>
MyC
(
'common_app_mini_baidu_appkey'
),
'secret'
=>
MyC
(
'common_app_mini_baidu_appsecret'
),
];
$result
=
(
new
\
base\Baidu
(
$config
))
->
GetAuthSessionKey
(
$params
);
if
(
$result
[
'status'
]
==
0
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'baidu_openid'
,
$result
);
if
(
!
empty
(
$user
))
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
else
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
]]);
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
$ret
;
}
/**
* 百度小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2018-11-06
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
BaiduUserInfo
(
$params
=
[])
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'baidu_openid'
,
$params
[
'openid'
]);
if
(
empty
(
$user
))
{
$auth_data
=
is_array
(
$params
[
'auth_data'
])
?
$params
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'auth_data'
]),
true
);
// 加密数据
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'encrypted_data'
,
'error_msg'
=>
'解密数据为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'iv'
,
'error_msg'
=>
'iv为空,请重试'
,
]
];
$ret
=
ParamsChecked
(
$auth_data
,
$p
);
if
(
$ret
===
true
)
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_baidu_appid'
),
'key'
=>
MyC
(
'common_app_mini_baidu_appkey'
),
'secret'
=>
MyC
(
'common_app_mini_baidu_appsecret'
),
];
$result
=
(
new
\
base\Baidu
(
$config
))
->
DecryptData
(
$auth_data
[
'encrypted_data'
],
$auth_data
[
'iv'
],
$params
[
'openid'
]);
if
(
$result
[
'status'
]
==
0
&&
!
empty
(
$result
[
'data'
]))
{
$result
[
'nickname'
]
=
isset
(
$result
[
'data'
][
'nickname'
])
?
$result
[
'data'
][
'nickname'
]
:
''
;
$result
[
'avatar'
]
=
isset
(
$result
[
'data'
][
'headimgurl'
])
?
$result
[
'data'
][
'headimgurl'
]
:
''
;
$result
[
'gender'
]
=
empty
(
$result
[
'data'
][
'sex'
])
?
0
:
((
$result
[
'data'
][
'sex'
]
==
2
)
?
1
:
2
);
$result
[
'openid'
]
=
$result
[
'data'
][
'openid'
];
$result
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
$params
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$result
,
'baidu_openid'
);
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
1
);
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
$ret
;
}
/**
* 头条小程序用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-27
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
ToutiaoUserAuth
(
$params
=
[])
{
$config
=
[
'appid'
=>
MyC
(
'common_app_mini_toutiao_appid'
),
'secret'
=>
MyC
(
'common_app_mini_toutiao_appsecret'
),
];
$result
=
(
new
\
base\Toutiao
(
$config
))
->
GetAuthSessionKey
(
$params
);
if
(
$result
[
'status'
]
==
0
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'toutiao_openid'
,
$result
);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
[
'data'
]]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$result
[
'msg'
],
-
10
);
}
return
$ret
;
}
/**
* 头条小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-27
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
ToutiaoUserInfo
(
$params
=
[])
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'toutiao_openid'
,
$params
[
'openid'
]);
if
(
empty
(
$user
))
{
$auth_data
=
is_array
(
$params
[
'auth_data'
])
?
$params
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'auth_data'
]),
true
);
$auth_data
[
'nickname'
]
=
isset
(
$auth_data
[
'nickName'
])
?
$auth_data
[
'nickName'
]
:
''
;
$auth_data
[
'avatar'
]
=
isset
(
$auth_data
[
'avatarUrl'
])
?
$auth_data
[
'avatarUrl'
]
:
''
;
$auth_data
[
'gender'
]
=
empty
(
$auth_data
[
'gender'
])
?
0
:
((
$auth_data
[
'gender'
]
==
2
)
?
1
:
2
);
$auth_data
[
'openid'
]
=
$params
[
'openid'
];
$auth_data
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
$params
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$auth_data
,
'toutiao_openid'
);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
$ret
;
}
/**
* QQ小程序获取用户授权
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-31
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
QQUserAuth
(
$params
=
[])
{
// 参数
if
(
!
empty
(
$params
[
'authcode'
]))
{
// 授权
$result
=
(
new
\
base\QQ
(
MyC
(
'common_app_mini_qq_appid'
),
MyC
(
'common_app_mini_qq_appsecret'
)))
->
GetAuthSessionKey
(
$params
[
'authcode'
]);
if
(
$result
!==
false
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'qq_openid'
,
$result
);
if
(
empty
(
$user
))
{
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
[
'is_user_exist'
=>
0
,
'openid'
=>
$result
]);
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
// 标记用户存在
$user
[
'is_user_exist'
]
=
1
;
$ret
=
DataReturn
(
'授权登录成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
'授权登录失败'
,
-
100
);
}
}
else
{
$ret
=
DataReturn
(
'授权码为空'
,
-
1
);
}
return
$ret
;
}
/**
* QQ小程序获取用户信息
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @date 2019-10-31
* @desc description
* @param [array] $params [输入参数]
*/
public
static
function
QQUserInfo
(
$params
=
[])
{
// 参数校验
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'openid'
,
'error_msg'
=>
'openid为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'auth_data'
,
'error_msg'
=>
'授权数据为空'
,
]
];
$ret
=
ParamsChecked
(
$params
,
$p
);
if
(
$ret
===
true
)
{
// 先从数据库获取用户信息
$user
=
UserService
::
AppUserInfoHandle
(
null
,
'qq_openid'
,
$params
[
'openid'
]);
if
(
empty
(
$user
))
{
$auth_data
=
is_array
(
$params
[
'auth_data'
])
?
$params
[
'auth_data'
]
:
json_decode
(
htmlspecialchars_decode
(
$params
[
'auth_data'
]),
true
);
// 加密数据
$p
=
[
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'encrypted_data'
,
'error_msg'
=>
'解密数据为空'
,
],
[
'checked_type'
=>
'empty'
,
'key_name'
=>
'iv'
,
'error_msg'
=>
'iv为空,请重试'
,
]
];
$ret
=
ParamsChecked
(
$auth_data
,
$p
);
if
(
$ret
===
true
)
{
$result
=
(
new
\
base\QQ
(
MyC
(
'common_app_mini_qq_appid'
),
MyC
(
'common_app_mini_qq_appsecret'
)))
->
DecryptData
(
$auth_data
[
'encrypted_data'
],
$auth_data
[
'iv'
],
$params
[
'openid'
]);
if
(
is_array
(
$result
))
{
$result
[
'nickname'
]
=
isset
(
$result
[
'nickName'
])
?
$result
[
'nickName'
]
:
''
;
$result
[
'avatar'
]
=
isset
(
$result
[
'avatarUrl'
])
?
$result
[
'avatarUrl'
]
:
''
;
$result
[
'gender'
]
=
empty
(
$result
[
'gender'
])
?
0
:
((
$result
[
'gender'
]
==
2
)
?
1
:
2
);
$result
[
'qq_unionid'
]
=
isset
(
$result
[
'unionId'
])
?
$result
[
'unionId'
]
:
''
;
$result
[
'openid'
]
=
$result
[
'openId'
];
$result
[
'referrer'
]
=
isset
(
$params
[
'referrer'
])
?
$params
[
'referrer'
]
:
0
;
$ret
=
UserService
::
AuthUserProgram
(
$result
,
'qq_openid'
);
}
else
{
$ret
=
DataReturn
(
empty
(
$result
)
?
'获取用户信息失败'
:
$result
,
-
1
);
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
}
else
{
// 用户状态
$ret
=
UserService
::
UserStatusCheck
(
'id'
,
$user
[
'id'
]);
if
(
$ret
[
'code'
]
==
0
)
{
$ret
=
DataReturn
(
'授权成功'
,
0
,
$user
);
}
}
}
else
{
$ret
=
DataReturn
(
$ret
,
-
1
);
}
return
$ret
;
}
}
?>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录