Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
backend
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
亲子游项目
backend
Commits
7d616c62
Commit
7d616c62
authored
Jan 03, 2019
by
LiuJunYi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of git.jqlink.tech:qz-tour/backend
parents
df21421b
9a47c722
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
152 additions
and
2 deletions
+152
-2
application/api/controller/User.php
+150
-1
vendor/aesphp/wxBizDataCrypt.php
+2
-1
No files found.
application/api/controller/User.php
View file @
7d616c62
...
@@ -99,6 +99,34 @@ class User extends Base
...
@@ -99,6 +99,34 @@ class User extends Base
}
}
}
}
// 获取session key
public
function
getSessionKey
()
{
$jscode
=
input
(
"post.code"
);
if
(
!
$jscode
)
{
return
[
"code"
=>
1
,
"msg"
=>
"参数错误"
];
}
if
(
!
$this
->
userinfo
)
{
return
[
"code"
=>
1
,
"msg"
=>
"未登录"
];
}
// 获取session_key
$appId
=
config
(
"wxapp.appKey"
);
$appSecret
=
config
(
"wxapp.appSecret"
);
$wxurl
=
"https://api.weixin.qq.com/sns/jscode2session?appid="
.
$appId
.
"&secret="
.
$appSecret
.
"&js_code="
.
$jscode
.
"&grant_type=authorization_code"
;
$response
=
http_get
(
$wxurl
);
// session_key 和 openid
// 过期时间2小时 7200s
$session_key
=
$response
->
session_key
;
if
(
$session_key
)
{
return
[
"code"
=>
0
,
"msg"
=>
"succeed"
,
'data'
=>
$session_key
];
}
return
[
"code"
=>
1
,
"msg"
=>
"获取session_key失败"
];
}
/**
/**
* 微信手机授权
* 微信手机授权
* @url /api/User/getPhoneNumber
* @url /api/User/getPhoneNumber
...
@@ -112,6 +140,7 @@ class User extends Base
...
@@ -112,6 +140,7 @@ class User extends Base
$jscode
=
input
(
"post.code"
);
$jscode
=
input
(
"post.code"
);
$encryptedData
=
input
(
"post.encryptedData"
);
$encryptedData
=
input
(
"post.encryptedData"
);
$iv
=
input
(
'post.iv'
);
$iv
=
input
(
'post.iv'
);
$version
=
input
(
'post.version'
,
''
);
if
(
!
$jscode
||
!
$encryptedData
||
!
$iv
)
{
if
(
!
$jscode
||
!
$encryptedData
||
!
$iv
)
{
return
[
"code"
=>
1
,
"msg"
=>
"参数错误"
];
return
[
"code"
=>
1
,
"msg"
=>
"参数错误"
];
...
@@ -135,10 +164,67 @@ class User extends Base
...
@@ -135,10 +164,67 @@ class User extends Base
// 解密加密数据
// 解密加密数据
include_once
VENDOR_PATH
.
'aesphp/wxBizDataCrypt.php'
;
include_once
VENDOR_PATH
.
'aesphp/wxBizDataCrypt.php'
;
$pc
=
new
\WXBizDataCrypt
(
$appId
,
$session_key
);
$pc
=
new
\WXBizDataCrypt
(
$appId
,
$session_key
);
if
(
$version
==
'1.1'
)
{
$iv
=
urldecode
(
$iv
);
$errCode
=
$pc
->
decryptData
(
$encryptedData
,
$iv
,
$data
);
}
else
{
$errCode
=
$pc
->
decryptData
(
$encryptedData
,
$iv
,
$data
);
}
if
(
$errCode
==
0
)
{
$data
=
json_decode
(
$data
);
$phone
=
$data
->
purePhoneNumber
;
$hidephone
=
substr_replace
(
$phone
,
'****'
,
3
,
4
);
$user
=
UserModel
::
get
(
$this
->
userinfo
[
0
]);
$onlyPhone
=
UserModel
::
get
([
'id'
=>
[
'neq'
,
$this
->
userinfo
[
0
]],
'phone'
=>
$phone
]);
if
(
$onlyPhone
)
{
return
[
"code"
=>
1
,
"msg"
=>
"该手机号已注册"
];
}
$user
->
phone
=
$phone
;
$user
->
save
();
$result
=
[
'phone'
=>
$phone
,
'hidephone'
=>
$hidephone
];
//关联VIP
$is_relation
=
$this
->
vipRelation
(
$phone
);
return
[
"code"
=>
0
,
"msg"
=>
"获取成功"
,
'data'
=>
$result
,
'is_relation'
=>
$is_relation
];
}
else
{
return
[
"code"
=>
1
,
"msg"
=>
"微信授权失败:"
.
$errCode
.
' - '
.
$iv
];
}
}
/**
* 微信手机授权
* @url /api/User/getPhoneNumber
* @params code
* @params encryptedData
* @params iv
* return json
*/
public
function
getPhoneNumber2
()
{
$sessionId
=
input
(
"post.sessionId"
);
$encryptedData
=
input
(
"post.encryptedData"
);
$iv
=
input
(
'post.iv'
);
if
(
!
$sessionId
||
!
$encryptedData
||
!
$iv
)
{
return
[
"code"
=>
1
,
"msg"
=>
"参数错误"
];
}
if
(
!
$this
->
userinfo
)
{
return
[
"code"
=>
1
,
"msg"
=>
"未登录"
];
}
// 解密加密数据
$appId
=
config
(
"wxapp.appKey"
);
include_once
VENDOR_PATH
.
'aesphp/wxBizDataCrypt.php'
;
$pc
=
new
\WXBizDataCrypt
(
$appId
,
$sessionId
);
$iv
=
urldecode
(
$iv
);
$errCode
=
$pc
->
decryptData
(
$encryptedData
,
$iv
,
$data
);
$errCode
=
$pc
->
decryptData
(
$encryptedData
,
$iv
,
$data
);
if
(
$errCode
==
0
)
{
if
(
$errCode
==
0
)
{
$data
=
json_decode
(
$data
);
$data
=
json_decode
(
$data
);
$phone
=
$data
->
purePhoneNumber
;
$phone
=
$data
->
purePhoneNumber
;
// echo "string";exit;
$hidephone
=
substr_replace
(
$phone
,
'****'
,
3
,
4
);
$hidephone
=
substr_replace
(
$phone
,
'****'
,
3
,
4
);
$user
=
UserModel
::
get
(
$this
->
userinfo
[
0
]);
$user
=
UserModel
::
get
(
$this
->
userinfo
[
0
]);
...
@@ -154,7 +240,70 @@ class User extends Base
...
@@ -154,7 +240,70 @@ class User extends Base
$is_relation
=
$this
->
vipRelation
(
$phone
);
$is_relation
=
$this
->
vipRelation
(
$phone
);
return
[
"code"
=>
0
,
"msg"
=>
"获取成功"
,
'data'
=>
$result
,
'is_relation'
=>
$is_relation
];
return
[
"code"
=>
0
,
"msg"
=>
"获取成功"
,
'data'
=>
$result
,
'is_relation'
=>
$is_relation
];
}
else
{
}
else
{
return
[
"code"
=>
1
,
"msg"
=>
"微信数据解密失败,请重试!"
];
return
[
"code"
=>
1
,
"msg"
=>
"微信授权失败:"
.
$errCode
.
' - '
.
$iv
];
}
}
/**
* 用户小程序授权
* @url /api/User/login
* @params code
* @params encryptedData
* @params iv
* return json
*/
public
function
login2
()
{
$sessionId
=
input
(
"post.sessionId"
);
$encryptedData
=
input
(
"post.encryptedData"
);
$iv
=
input
(
'post.iv'
);
// 解密加密数据
$appId
=
config
(
"wxapp.appKey"
);
include_once
VENDOR_PATH
.
'aesphp/wxBizDataCrypt.php'
;
$pc
=
new
\WXBizDataCrypt
(
$appId
,
$sessionId
);
$iv
=
urldecode
(
$iv
);
$errCode
=
$pc
->
decryptData
(
$encryptedData
,
$iv
,
$data
);
if
(
$errCode
==
0
)
{
$data
=
json_decode
(
$data
);
$user
=
UserModel
::
where
([
'openid'
=>
$data
->
openId
])
->
find
();
if
(
$user
)
{
//更新
// 省份和城市
$user
->
city
=
$data
->
city
;
$user
->
province
=
$data
->
province
;
//ip
$user
->
ip
=
request
()
->
ip
();
$user
->
save
();
// 登录成功
$token
=
$this
->
usertoken
(
$user
);
return
[
"code"
=>
0
,
"msg"
=>
"登录成功"
,
"token"
=>
$token
,
"user"
=>
$user
];
}
else
{
//第一次注册
$user
=
new
UserModel
;
$user
->
openid
=
$data
->
openId
;
$user
->
nickname
=
$data
->
nickName
;
// 用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
$user
->
gender
=
intval
(
$data
->
gender
);
$user
->
avatar
=
$data
->
avatarUrl
;
$user
->
is_vip
=
0
;
// 0非会员 1会员 默认为非会员
// 省份和城市
$user
->
city
=
$data
->
city
;
$user
->
province
=
$data
->
province
;
//ip
$user
->
ip
=
request
()
->
ip
();
if
(
$user
->
save
())
{
// 注册成功
$token
=
$this
->
usertoken
(
$user
);
return
[
"code"
=>
0
,
"msg"
=>
"注册成功"
,
"token"
=>
$token
,
"user"
=>
$user
];
}
else
{
return
[
"code"
=>
1
,
"msg"
=>
"注册失败"
];
}
}
}
else
{
return
[
"code"
=>
1
,
"msg"
=>
"注册失败,请重试!"
];
}
}
}
}
...
...
vendor/aesphp/wxBizDataCrypt.php
View file @
7d616c62
...
@@ -59,6 +59,7 @@ class WXBizDataCrypt
...
@@ -59,6 +59,7 @@ class WXBizDataCrypt
$dataObj
=
json_decode
(
$result
[
1
]
);
$dataObj
=
json_decode
(
$result
[
1
]
);
if
(
$dataObj
==
NULL
)
if
(
$dataObj
==
NULL
)
{
{
// echo $result[1]; exit;
return
ErrorCode
::
$IllegalBuffer
;
return
ErrorCode
::
$IllegalBuffer
;
}
}
if
(
$dataObj
->
watermark
->
appid
!=
$this
->
appid
)
if
(
$dataObj
->
watermark
->
appid
!=
$this
->
appid
)
...
@@ -70,4 +71,3 @@ class WXBizDataCrypt
...
@@ -70,4 +71,3 @@ class WXBizDataCrypt
}
}
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment