Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform
Commits
ffd3fcf2
Commit
ffd3fcf2
authored
Oct 15, 2019
by
libin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master-auto-pay' into master-auto-pay
parents
66b35a52
6c23d541
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
447 additions
and
9 deletions
+447
-9
AppUserAlipay.java
...m/github/wxiaoqi/security/admin/entity/AppUserAlipay.java
+5
-4
AppUserAlipayBiz.java
...m/github/wxiaoqi/security/admin/biz/AppUserAlipayBiz.java
+62
-5
AppUserAliPayController.java
.../wxiaoqi/security/admin/rest/AppUserAliPayController.java
+6
-0
Base64.java
...c/main/java/com/xxfc/platform/universal/utils/Base64.java
+268
-0
SignUtils.java
...ain/java/com/xxfc/platform/universal/utils/SignUtils.java
+44
-0
OrderPayBiz.java
...ain/java/com/xxfc/platform/universal/biz/OrderPayBiz.java
+46
-0
UserInfoController.java
...xfc/platform/universal/controller/UserInfoController.java
+16
-0
No files found.
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/entity/AppUserAlipay.java
View file @
ffd3fcf2
...
...
@@ -2,10 +2,8 @@ package com.github.wxiaoqi.security.admin.entity;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
javax.persistence.*
;
/**
* 支付宝账号表
...
...
@@ -40,6 +38,9 @@ public class AppUserAlipay {
@ApiModelProperty
(
"昵称"
)
private
String
nickname
;
//类型 1、支付宝,2、微信
@Transient
private
Integer
type
;
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserAlipayBiz.java
View file @
ffd3fcf2
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
biz
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.admin.entity.AppUserAlipay
;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
...
...
@@ -20,6 +22,7 @@ import org.springframework.stereotype.Service;
import
tk.mybatis.mapper.entity.Example
;
import
javax.servlet.http.HttpServletRequest
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
...
...
@@ -42,6 +45,7 @@ public class AppUserAlipayBiz extends BaseBiz<AppUserAlipayMapper, AppUserAlipay
@Autowired
AppUserLoginBiz
appUserLoginBiz
;
@Autowired
ThirdFeign
thirdFeign
;
...
...
@@ -68,6 +72,54 @@ public class AppUserAlipayBiz extends BaseBiz<AppUserAlipayMapper, AppUserAlipay
return
selectByExample
(
example
);
}
//获取支付宝用户信息
public
List
<
AppUserAlipay
>
getByUserId
(
HttpServletRequest
request
){
Example
example
=
new
Example
(
AppUserAlipay
.
class
);
Integer
userId
=
null
;
try
{
String
username
=
userAuthUtil
.
getInfoFromToken
(
userAuthConfig
.
getToken
(
request
)).
getId
();
if
(
StringUtils
.
isNotBlank
(
username
))
{
userId
=
Integer
.
parseInt
(
username
);
example
.
createCriteria
().
andEqualTo
(
"userId"
,
userId
).
andEqualTo
(
"isDel"
,
0
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
example
.
setOrderByClause
(
"is_default desc"
);
AppUserAlipay
appUserAlipay
=
mapper
.
selectOneByExample
(
example
);
List
<
AppUserAlipay
>
appUserAlipays
=
new
ArrayList
<>();
//支付宝
if
(
appUserAlipay
!=
null
)
{
appUserAlipay
.
setType
(
1
);
appUserAlipays
.
add
(
appUserAlipay
);
}
//微信
AppUserLogin
appUserLogin
=
appUserLoginBiz
.
getUserById
(
userId
);
if
(
appUserLogin
!=
null
&&
StringUtils
.
isNotBlank
(
appUserLogin
.
getWxOpenid
()))
{
AppUserAlipay
wxAppUser
=
new
AppUserAlipay
();
wxAppUser
.
setType
(
2
);
wxAppUser
.
setUserId
(
userId
);
wxAppUser
.
setTxAlipay
(
appUserLogin
.
getWxOpenid
());
appUserAlipays
.
add
(
wxAppUser
);
}
return
appUserAlipays
;
}
public
void
save
(
AppUserAlipay
appUserAlipay
)
{
Example
example
=
new
Example
(
AppUserAlipay
.
class
);
example
.
createCriteria
().
andEqualTo
(
"userId"
,
appUserAlipay
.
getUserId
()).
andEqualTo
(
"isDel"
,
0
);
example
.
setOrderByClause
(
"is_default desc"
);
AppUserAlipay
oldValue
=
mapper
.
selectOneByExample
(
example
);
if
(
oldValue
!=
null
)
{
BeanUtil
.
copyProperties
(
appUserAlipay
,
oldValue
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
updateByIdRe
(
oldValue
);
}
else
{
insertSelectiveRe
(
appUserAlipay
);
}
}
/**
* 支付宝授权获取用户信息
* @param code
...
...
@@ -86,25 +138,30 @@ public class AppUserAlipayBiz extends BaseBiz<AppUserAlipayMapper, AppUserAlipay
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
StringUtils
.
isBlank
(
code
))
{
return
ObjectRestResponse
.
paramIsEmpty
();
}
String
result
=
thirdFeign
.
getAliPayUserInfo
(
code
).
getData
();
if
(
StringUtils
.
isNotBlank
(
result
))
{
log
.
info
(
"【支付宝】用户授权获取用户token, {}"
,
result
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
);
if
(
jsonObject
!=
null
&&
jsonObject
.
getString
(
"code"
).
equals
(
"10000"
))
{
String
account
=
jsonObject
.
getString
(
"userId"
);
if
(
jsonObject
.
getJSONObject
(
"error_response"
)
==
null
&&
jsonObject
.
getJSONObject
(
"alipay_user_info_share_response"
)
!=
null
)
{
JSONObject
responseObject
=
jsonObject
.
getJSONObject
(
"alipay_user_info_share_response"
);
String
account
=
responseObject
.
getString
(
"user_id"
);
if
(
account
!=
null
)
{
appUserAlipay
.
setTxAlipay
(
account
);
appUserAlipay
.
setCrtTime
(
new
Date
().
getTime
());
appUserAlipay
.
setIsDel
(
0
);
}
String
nickname
=
jsonObject
.
getString
(
"nickN
ame"
);
String
nickname
=
responseObject
.
getString
(
"nick_n
ame"
);
if
(
nickname
!=
null
)
{
appUserAlipay
.
setNickname
(
nickname
);
}
log
.
info
(
"用户支付宝信息: {}"
,
appUserAlipay
.
toString
());
insertSelectiveR
e
(
appUserAlipay
);
sav
e
(
appUserAlipay
);
return
ObjectRestResponse
.
succ
();
}
else
{
return
ObjectRestResponse
.
createFailedResult
(
Integer
.
parseInt
(
jsonObject
.
get
String
(
"code"
)),
jsonObject
.
getString
(
"sub_msg"
));
return
ObjectRestResponse
.
createFailedResult
(
Integer
.
parseInt
(
jsonObject
.
get
JSONObject
(
"error_response"
).
getString
(
"code"
)),
jsonObject
.
getJSONObject
(
"error_response"
)
.
getString
(
"sub_msg"
));
}
}
return
ObjectRestResponse
.
createDefaultFail
();
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserAliPayController.java
View file @
ffd3fcf2
...
...
@@ -20,4 +20,10 @@ public class AppUserAliPayController {
public
ObjectRestResponse
getUserInfo
(
String
code
,
HttpServletRequest
request
)
{
return
appUserAlipayBiz
.
getUserInfo
(
code
,
request
);
}
@GetMapping
(
"/get"
)
public
ObjectRestResponse
get
(
HttpServletRequest
request
)
{
return
ObjectRestResponse
.
succ
(
appUserAlipayBiz
.
getByUserId
(
request
));
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/Base64.java
0 → 100644
View file @
ffd3fcf2
package
com
.
xxfc
.
platform
.
universal
.
utils
;
public
final
class
Base64
{
private
static
final
int
BASELENGTH
=
128
;
private
static
final
int
LOOKUPLENGTH
=
64
;
private
static
final
int
TWENTYFOURBITGROUP
=
24
;
private
static
final
int
EIGHTBIT
=
8
;
private
static
final
int
SIXTEENBIT
=
16
;
private
static
final
int
FOURBYTE
=
4
;
private
static
final
int
SIGN
=
-
128
;
private
static
char
PAD
=
'='
;
private
static
byte
[]
base64Alphabet
=
new
byte
[
BASELENGTH
];
private
static
char
[]
lookUpBase64Alphabet
=
new
char
[
LOOKUPLENGTH
];
static
{
for
(
int
i
=
0
;
i
<
BASELENGTH
;
++
i
)
{
base64Alphabet
[
i
]
=
-
1
;
}
for
(
int
i
=
'Z'
;
i
>=
'A'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'A'
);
}
for
(
int
i
=
'z'
;
i
>=
'a'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'a'
+
26
);
}
for
(
int
i
=
'9'
;
i
>=
'0'
;
i
--)
{
base64Alphabet
[
i
]
=
(
byte
)
(
i
-
'0'
+
52
);
}
base64Alphabet
[
'+'
]
=
62
;
base64Alphabet
[
'/'
]
=
63
;
for
(
int
i
=
0
;
i
<=
25
;
i
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'A'
+
i
);
}
for
(
int
i
=
26
,
j
=
0
;
i
<=
51
;
i
++,
j
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'a'
+
j
);
}
for
(
int
i
=
52
,
j
=
0
;
i
<=
61
;
i
++,
j
++)
{
lookUpBase64Alphabet
[
i
]
=
(
char
)
(
'0'
+
j
);
}
lookUpBase64Alphabet
[
62
]
=
(
char
)
'+'
;
lookUpBase64Alphabet
[
63
]
=
(
char
)
'/'
;
}
private
static
boolean
isWhiteSpace
(
char
octect
)
{
return
(
octect
==
0x20
||
octect
==
0xd
||
octect
==
0xa
||
octect
==
0x9
);
}
private
static
boolean
isPad
(
char
octect
)
{
return
(
octect
==
PAD
);
}
private
static
boolean
isData
(
char
octect
)
{
return
(
octect
<
BASELENGTH
&&
base64Alphabet
[
octect
]
!=
-
1
);
}
/**
* Encodes hex octects into Base64
*
* @param binaryData
* Array containing binaryData
* @return Encoded Base64 array
*/
public
static
String
encode
(
byte
[]
binaryData
)
{
if
(
binaryData
==
null
)
{
return
null
;
}
int
lengthDataBits
=
binaryData
.
length
*
EIGHTBIT
;
if
(
lengthDataBits
==
0
)
{
return
""
;
}
int
fewerThan24bits
=
lengthDataBits
%
TWENTYFOURBITGROUP
;
int
numberTriplets
=
lengthDataBits
/
TWENTYFOURBITGROUP
;
int
numberQuartet
=
fewerThan24bits
!=
0
?
numberTriplets
+
1
:
numberTriplets
;
char
encodedData
[]
=
null
;
encodedData
=
new
char
[
numberQuartet
*
4
];
byte
k
=
0
,
l
=
0
,
b1
=
0
,
b2
=
0
,
b3
=
0
;
int
encodedIndex
=
0
;
int
dataIndex
=
0
;
for
(
int
i
=
0
;
i
<
numberTriplets
;
i
++)
{
b1
=
binaryData
[
dataIndex
++];
b2
=
binaryData
[
dataIndex
++];
b3
=
binaryData
[
dataIndex
++];
l
=
(
byte
)
(
b2
&
0x0f
);
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
byte
val2
=
((
b2
&
SIGN
)
==
0
)
?
(
byte
)
(
b2
>>
4
)
:
(
byte
)
((
b2
)
>>
4
^
0xf0
);
byte
val3
=
((
b3
&
SIGN
)
==
0
)
?
(
byte
)
(
b3
>>
6
)
:
(
byte
)
((
b3
)
>>
6
^
0xfc
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val2
|
(
k
<<
4
)];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[(
l
<<
2
)
|
val3
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
b3
&
0x3f
];
}
// form integral number of 6-bit groups
if
(
fewerThan24bits
==
EIGHTBIT
)
{
b1
=
binaryData
[
dataIndex
];
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
k
<<
4
];
encodedData
[
encodedIndex
++]
=
PAD
;
encodedData
[
encodedIndex
++]
=
PAD
;
}
else
if
(
fewerThan24bits
==
SIXTEENBIT
)
{
b1
=
binaryData
[
dataIndex
];
b2
=
binaryData
[
dataIndex
+
1
];
l
=
(
byte
)
(
b2
&
0x0f
);
k
=
(
byte
)
(
b1
&
0x03
);
byte
val1
=
((
b1
&
SIGN
)
==
0
)
?
(
byte
)
(
b1
>>
2
)
:
(
byte
)
((
b1
)
>>
2
^
0xc0
);
byte
val2
=
((
b2
&
SIGN
)
==
0
)
?
(
byte
)
(
b2
>>
4
)
:
(
byte
)
((
b2
)
>>
4
^
0xf0
);
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val1
];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
val2
|
(
k
<<
4
)];
encodedData
[
encodedIndex
++]
=
lookUpBase64Alphabet
[
l
<<
2
];
encodedData
[
encodedIndex
++]
=
PAD
;
}
return
new
String
(
encodedData
);
}
/**
* Decodes Base64 data into octects
*
* @param encoded
* string containing Base64 data
* @return Array containind decoded data.
*/
public
static
byte
[]
decode
(
String
encoded
)
{
if
(
encoded
==
null
)
{
return
null
;
}
char
[]
base64Data
=
encoded
.
toCharArray
();
// remove white spaces
int
len
=
removeWhiteSpace
(
base64Data
);
if
(
len
%
FOURBYTE
!=
0
)
{
return
null
;
// should be divisible by four
}
int
numberQuadruple
=
(
len
/
FOURBYTE
);
if
(
numberQuadruple
==
0
)
{
return
new
byte
[
0
];
}
byte
decodedData
[]
=
null
;
byte
b1
=
0
,
b2
=
0
,
b3
=
0
,
b4
=
0
;
char
d1
=
0
,
d2
=
0
,
d3
=
0
,
d4
=
0
;
int
i
=
0
;
int
encodedIndex
=
0
;
int
dataIndex
=
0
;
decodedData
=
new
byte
[(
numberQuadruple
)
*
3
];
for
(;
i
<
numberQuadruple
-
1
;
i
++)
{
if
(!
isData
((
d1
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d2
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d3
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d4
=
base64Data
[
dataIndex
++])))
{
return
null
;
}
// if found "no data" just return null
b1
=
base64Alphabet
[
d1
];
b2
=
base64Alphabet
[
d2
];
b3
=
base64Alphabet
[
d3
];
b4
=
base64Alphabet
[
d4
];
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
decodedData
[
encodedIndex
++]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b3
<<
6
|
b4
);
}
if
(!
isData
((
d1
=
base64Data
[
dataIndex
++]))
||
!
isData
((
d2
=
base64Data
[
dataIndex
++])))
{
return
null
;
// if found "no data" just return null
}
b1
=
base64Alphabet
[
d1
];
b2
=
base64Alphabet
[
d2
];
d3
=
base64Data
[
dataIndex
++];
d4
=
base64Data
[
dataIndex
++];
if
(!
isData
((
d3
))
||
!
isData
((
d4
)))
{
// Check if they are PAD characters
if
(
isPad
(
d3
)
&&
isPad
(
d4
))
{
if
((
b2
&
0xf
)
!=
0
)
// last 4 bits should be zero
{
return
null
;
}
byte
[]
tmp
=
new
byte
[
i
*
3
+
1
];
System
.
arraycopy
(
decodedData
,
0
,
tmp
,
0
,
i
*
3
);
tmp
[
encodedIndex
]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
return
tmp
;
}
else
if
(!
isPad
(
d3
)
&&
isPad
(
d4
))
{
b3
=
base64Alphabet
[
d3
];
if
((
b3
&
0x3
)
!=
0
)
// last 2 bits should be zero
{
return
null
;
}
byte
[]
tmp
=
new
byte
[
i
*
3
+
2
];
System
.
arraycopy
(
decodedData
,
0
,
tmp
,
0
,
i
*
3
);
tmp
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
tmp
[
encodedIndex
]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
return
tmp
;
}
else
{
return
null
;
}
}
else
{
// No PAD e.g 3cQl
b3
=
base64Alphabet
[
d3
];
b4
=
base64Alphabet
[
d4
];
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b1
<<
2
|
b2
>>
4
);
decodedData
[
encodedIndex
++]
=
(
byte
)
(((
b2
&
0xf
)
<<
4
)
|
((
b3
>>
2
)
&
0xf
));
decodedData
[
encodedIndex
++]
=
(
byte
)
(
b3
<<
6
|
b4
);
}
return
decodedData
;
}
/**
* remove WhiteSpace from MIME containing encoded Base64 data.
*
* @param data
* the byte array of base64 data (with WS)
* @return the new length
*/
private
static
int
removeWhiteSpace
(
char
[]
data
)
{
if
(
data
==
null
)
{
return
0
;
}
// count characters that's not whitespace
int
newSize
=
0
;
int
len
=
data
.
length
;
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
if
(!
isWhiteSpace
(
data
[
i
]))
{
data
[
newSize
++]
=
data
[
i
];
}
}
return
newSize
;
}
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/utils/SignUtils.java
0 → 100644
View file @
ffd3fcf2
package
com
.
xxfc
.
platform
.
universal
.
utils
;
import
java.security.KeyFactory
;
import
java.security.PrivateKey
;
import
java.security.spec.PKCS8EncodedKeySpec
;
public
class
SignUtils
{
private
static
final
String
ALGORITHM
=
"RSA"
;
private
static
final
String
SIGN_ALGORITHMS
=
"SHA1WithRSA"
;
private
static
final
String
SIGN_SHA256RSA_ALGORITHMS
=
"SHA256WithRSA"
;
private
static
final
String
DEFAULT_CHARSET
=
"UTF-8"
;
private
static
String
getAlgorithms
(
boolean
rsa2
)
{
return
rsa2
?
SIGN_SHA256RSA_ALGORITHMS
:
SIGN_ALGORITHMS
;
}
public
static
String
sign
(
String
content
,
String
privateKey
,
boolean
rsa2
)
{
try
{
PKCS8EncodedKeySpec
priPKCS8
=
new
PKCS8EncodedKeySpec
(
Base64
.
decode
(
privateKey
));
KeyFactory
keyf
=
KeyFactory
.
getInstance
(
ALGORITHM
);
PrivateKey
priKey
=
keyf
.
generatePrivate
(
priPKCS8
);
java
.
security
.
Signature
signature
=
java
.
security
.
Signature
.
getInstance
(
getAlgorithms
(
rsa2
));
signature
.
initSign
(
priKey
);
signature
.
update
(
content
.
getBytes
(
DEFAULT_CHARSET
));
byte
[]
signed
=
signature
.
sign
();
return
Base64
.
encode
(
signed
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/biz/OrderPayBiz.java
View file @
ffd3fcf2
...
...
@@ -16,12 +16,14 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.util.HTTPSUtils
;
import
com.github.wxiaoqi.security.common.util.OrderUtil
;
import
com.github.wxiaoqi.security.common.util.UUIDUtils
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.util.process.SystemConfig
;
import
com.github.wxiaoqi.security.common.util.result.JsonResultUtil
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.OrderPay
;
import
com.xxfc.platform.universal.mapper.OrderPayMapper
;
import
com.xxfc.platform.universal.utils.SignUtils
;
import
com.xxfc.platform.universal.vo.FundPayVo
;
import
com.xxfc.platform.universal.vo.OrderPayVo
;
import
com.xxfc.platform.universal.weixin.api.*
;
...
...
@@ -478,6 +480,50 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> implements In
}
public
String
generateAliPayInfo
(
String
apiName
,
String
appName
)
{
//apiname=com.alipay.account.auth&app_id=xxxxx&app_name=mc&auth_type=AUTHACCOUNT&biz_type=openservice&method=alipay.open.auth.sdk.code.get&pid=xxxxx&product_id=APP_FAST_LOGIN&scope=kuaijie&sign_type=RSA2&target_id=20141225xxxx&sign=fMcp4GtiM6rxSIeFnJCVePJKV43eXrUP86CQgiLhDHH2u%2FdN75eEvmywc2ulkm7qKRetkU9fbVZtJIqFdMJcJ9Yp%2BJI%2FF%2FpESafFR6rB2fRjiQQLGXvxmDGVMjPSxHxVtIqpZy5FDoKUSjQ2%2FILDKpu3%2F%2BtAtm2jRw1rUoMhgt0%3D
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
"apiname="
);
stringBuilder
.
append
(
apiName
);
stringBuilder
.
append
(
"&app_id="
);
stringBuilder
.
append
(
SystemConfig
.
ALIPAY_APPID
);
stringBuilder
.
append
(
"&app_name="
);
stringBuilder
.
append
(
appName
);
stringBuilder
.
append
(
"&auth_type=AUTHACCOUNT"
);
stringBuilder
.
append
(
"&biz_type=openservice"
);
stringBuilder
.
append
(
"&method=alipay.open.auth.sdk.code.get"
);
stringBuilder
.
append
(
"&pid="
);
stringBuilder
.
append
(
SystemConfig
.
ALIPAY_PID
);
stringBuilder
.
append
(
"&product_id=APP_FAST_LOGIN"
);
stringBuilder
.
append
(
"&scope=kuaijie"
);
stringBuilder
.
append
(
"&sign_type=RSA2"
);
stringBuilder
.
append
(
"&target_id="
);
stringBuilder
.
append
(
UUIDUtils
.
generateShortUuid
());
String
sign
=
SignUtils
.
sign
(
stringBuilder
.
toString
(),
SystemConfig
.
ALIPAY_PRIVATE_KEY
,
true
);
stringBuilder
.
append
(
"&sign="
);
stringBuilder
.
append
(
sign
);
return
stringBuilder
.
toString
();
}
public
String
alipayUserAuth
()
throws
AlipayApiException
{
AlipayClient
alipayClient
=
getAlipayClient
();
AlipayUserInfoAuthRequest
request
=
new
AlipayUserInfoAuthRequest
();
request
.
setBizContent
(
"{"
+
" \"scopes\":["
+
" \"auth_base\""
+
" ],"
+
"\"state\":\"init\","
+
"\"is_mobile\":\"true\""
+
" }"
);
AlipayUserInfoAuthResponse
response
=
alipayClient
.
execute
(
request
);
if
(
response
.
isSuccess
()){
System
.
out
.
println
(
"调用成功"
);
}
else
{
System
.
out
.
println
(
"调用失败"
);
}
return
response
.
getBody
();
}
//解冻预授权
public
void
fundAuthOrderUnFreeze
(
AlipayClient
alipayClient
)
throws
AlipayApiException
{
...
...
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/UserInfoController.java
View file @
ffd3fcf2
...
...
@@ -66,5 +66,21 @@ public class UserInfoController {
return
ObjectRestResponse
.
createDefaultFail
();
}
@GetMapping
(
"/app/unauth/alipayUserAuth"
)
public
ObjectRestResponse
<
String
>
alipayUserAuth
()
{
try
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
orderPayBiz
.
alipayUserAuth
());
return
ObjectRestResponse
.
succ
(
jsonObject
);
}
catch
(
AlipayApiException
e
)
{
e
.
printStackTrace
();
}
return
ObjectRestResponse
.
createDefaultFail
();
}
@GetMapping
(
"/app/unauth/getParam"
)
public
ObjectRestResponse
<
String
>
getParam
(
String
apiName
,
String
appName
)
{
return
ObjectRestResponse
.
succ
(
orderPayBiz
.
generateAliPayInfo
(
apiName
,
appName
));
}
}
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