Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
ac92cb80
Commit
ac92cb80
authored
Apr 11, 2017
by
zhouqian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wechat-pay
parent
6b7ba5aa
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
94 deletions
+11
-94
WeChatController.java
...group/xyqb/controller/external/user/WeChatController.java
+11
-94
No files found.
src/main/java/cn/quantgroup/xyqb/controller/external/user/WeChatController.java
View file @
ac92cb80
...
...
@@ -60,9 +60,6 @@ public class WeChatController implements IBaseController {
@Autowired
private
IUserService
userService
;
@Autowired
private
IPageService
pageService
;
// https://passport.xyqb.com/landing?key=xxx&target=cashTarget5®isterFrom=198&channelId=%d
@Value
(
"${xyqb-user.ui}"
)
private
String
userUIAddr
;
...
...
@@ -83,30 +80,6 @@ public class WeChatController implements IBaseController {
return
""
;
}
/**
* 微信登录
*
* @param name 姓名
* @param idNo 身份证号
* @param phoneNo 手机号
* @param registerFrom ${registerFrom}
* @param channelId ${channelId}
* @param appChannel ${appChanel}
* @param key "xyqb"
* @return
*/
public
JsonResult
webChatLogin
(
String
name
,
String
idNo
,
String
phoneNo
,
String
registerFrom
,
String
channelId
,
String
appChannel
,
String
key
)
{
if
(
StringUtils
.
isBlank
(
name
)
||
StringUtils
.
isBlank
(
idNo
)
||
StringUtils
.
isBlank
(
phoneNo
))
{
return
JsonResult
.
buildErrorStateResult
(
"请填写完整的用户信息."
,
null
);
}
if
(
StringUtils
.
isBlank
(
key
))
{
return
JsonResult
.
buildErrorStateResult
(
"无效的商户信息."
,
null
);
}
return
null
;
}
/**
* 验签:步骤
* 1.获取signature, timestamp, nonce三个参数
...
...
@@ -121,8 +94,7 @@ public class WeChatController implements IBaseController {
String
signature
=
request
.
getParameter
(
"signature"
);
String
timestamp
=
request
.
getParameter
(
"timestamp"
);
String
nonce
=
request
.
getParameter
(
"nonce"
);
String
token
=
TOKEN
;
String
[]
arrs
=
new
String
[]{
token
,
timestamp
,
nonce
};
String
[]
arrs
=
new
String
[]{
TOKEN
,
timestamp
,
nonce
};
Arrays
.
sort
(
arrs
);
String
joinStr
=
joinArray
(
arrs
);
joinStr
=
sha1
(
joinStr
);
...
...
@@ -135,16 +107,16 @@ public class WeChatController implements IBaseController {
* @param decript
* @return 返回40位16进制字符串
*/
p
ublic
String
sha1
(
String
decript
)
{
p
rivate
String
sha1
(
String
decript
)
{
try
{
MessageDigest
digest
=
java
.
security
.
MessageDigest
.
getInstance
(
"SHA-1"
);
digest
.
update
(
decript
.
getBytes
());
byte
messageDigest
[]
=
digest
.
digest
();
StringBu
ffer
hexString
=
new
StringBuff
er
();
StringBu
ilder
hexString
=
new
StringBuild
er
();
// 字节数组转换为十六进制数
for
(
int
i
=
0
;
i
<
messageDigest
.
length
;
i
++
)
{
String
shaHex
=
Integer
.
toHexString
(
messageDigest
[
i
]
&
0xFF
);
for
(
byte
aMessageDigest
:
messageDigest
)
{
String
shaHex
=
Integer
.
toHexString
(
aMessageDigest
&
0xFF
);
if
(
shaHex
.
length
()
<
2
)
{
hexString
.
append
(
0
);
}
...
...
@@ -172,65 +144,6 @@ public class WeChatController implements IBaseController {
return
builder
.
toString
();
}
/**
* 通过redirect_url获取code
*
* @param response
* @return
*/
@RequestMapping
(
"/receiveCode/{key}/{redirect}"
)
public
void
receiveCode
(
String
code
,
@PathVariable
(
value
=
"key"
)
String
systemKey
,
@PathVariable
String
redirect
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
String
schema
=
request
.
getScheme
();
LOGGER
.
info
(
"HTTP协议:"
+
schema
);
// 从code获取token
Merchant
merchant
=
merchantService
.
findMerchantByName
(
systemKey
);
AccessTokenResponse
token
=
wechatService
.
getToken
(
code
);
if
(
token
==
null
)
{
// 让用户登录,不关联微信, 构造不关联微信的url
redirectNormalUrl
(
response
,
merchant
,
Constants
.
Channel
.
WECHAT
);
return
;
}
WechatUserInfo
userInfo
=
wechatService
.
getWechatUserInfoFromWechatServer
(
token
.
getAccessToken
(),
token
.
getOpenId
());
if
(
userInfo
==
null
||
StringUtils
.
isEmpty
(
userInfo
.
getOpenId
()))
{
// 让用户登录,不关联微信, 构造不关联微信的url
redirectNormalUrl
(
response
,
merchant
,
Constants
.
Channel
.
WECHAT
);
return
;
}
WechatUserInfo
userInfoInDb
=
wechatService
.
findWechatUserInfoFromDb
(
userInfo
.
getOpenId
());
// welcome 首次登录
if
(
userInfoInDb
==
null
)
{
// 微信用户首次登录界面, 首先保存userInfo, 跳入到微信注册登录界面
if
(
StringUtils
.
isNotBlank
(
userInfo
.
getNickName
()))
{
String
nickName
=
EmojiUtil
.
filter
(
userInfo
.
getNickName
());
userInfo
.
setNickName
(
nickName
);
}
userInfo
=
wechatService
.
saveWechatUserInfo
(
userInfo
);
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfo
,
Constants
.
Channel
.
WECHAT
);
return
;
}
if
(
userInfoInDb
.
getUserId
()
==
null
)
{
// 用户已经微信登录了,但是没有关联信用钱包,跳转到注册页面
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfoInDb
,
Constants
.
Channel
.
WECHAT
);
return
;
}
User
user
=
userService
.
findById
(
userInfoInDb
.
getUserId
());
if
(
user
==
null
)
{
redirectWechatLoginUrlWithoutLogin
(
response
,
merchant
,
userInfoInDb
,
Constants
.
Channel
.
WECHAT
);
return
;
}
// 已经关联了用户
// create session, 登进去,该怎么玩怎么玩。
String
redirectUrl
=
createUserSession
(
user
,
merchant
,
redirect
,
schema
,
Constants
.
Channel
.
WECHAT
);
response
.
setHeader
(
"Location"
,
redirectUrl
);
response
.
setStatus
(
301
);
}
/**
* 前端微信跳转页面,通过extdata
*
...
...
@@ -239,8 +152,8 @@ public class WeChatController implements IBaseController {
*/
@RequestMapping
(
"/receiveCode/extdata/{key}/{extdata}"
)
public
void
receiveCodeWithExtData
(
String
code
,
@PathVariable
(
value
=
"key"
)
String
systemKey
,
@PathVariable
(
value
=
"extdata"
)
String
extData
,
HttpServletRequest
request
,
HttpServletResponse
response
String
code
,
@PathVariable
(
value
=
"key"
)
String
systemKey
,
@PathVariable
(
value
=
"extdata"
)
String
extData
,
HttpServletResponse
response
)
{
try
{
String
schema
=
getProtocol
();
...
...
@@ -511,6 +424,8 @@ public class WeChatController implements IBaseController {
private
String
assembleNormalRedirectUrl
(
Merchant
merchant
,
Long
registerFrom
)
{
if
(
"baitiao"
.
equals
(
merchant
.
getName
()))
{
return
userUIAddr
+
"/landing?key=baitiao&target=cashTarget5&channelId=222®isterFrom=198"
;
}
else
if
(
"wechat-pay"
.
equals
(
merchant
.
getName
()))
{
return
userUIAddr
+
"/landing?key=wechat-pay&target=cashTarget4&channelId=1®isterFrom"
+
registerFrom
;
}
else
{
return
userUIAddr
+
"/landing?key=xyqb&target=cashTarget4&channelId=1®isterFrom="
+
registerFrom
;
}
...
...
@@ -519,6 +434,8 @@ public class WeChatController implements IBaseController {
private
String
assembleWechatRedirectUrl
(
Merchant
merchant
,
WechatUserInfo
userInfo
,
Long
registerFrom
)
{
if
(
"baitiao"
.
equals
(
merchant
.
getName
()))
{
return
userUIAddr
+
"/landing?key=baitiao&target=cashTarget5®isterFrom=198&channelId=222&isWechat=true&openId="
+
userInfo
.
getOpenId
();
}
else
if
(
"wechat-pay"
.
equals
(
merchant
.
getName
()))
{
return
userUIAddr
+
"/landing?key=wechat-pay&target=cashTarget4®isterFrom= "
+
registerFrom
+
"&channelId=1&isWechat=true&openId="
+
userInfo
.
getOpenId
();
}
else
{
return
userUIAddr
+
"/landing?key=xyqb&target=cashTarget4®isterFrom= "
+
registerFrom
+
"&channelId=1&isWechat=true&openId="
+
userInfo
.
getOpenId
();
}
...
...
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