Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qa-platform
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
QA
qa-platform
Commits
65dd2bf8
Commit
65dd2bf8
authored
Mar 18, 2021
by
黎博
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into automation
parents
88e47805
bf1c946b
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
286 additions
and
66 deletions
+286
-66
MockController.java
...java/cn/qg/qaplatform/mock/controller/MockController.java
+2
-5
PayInterceptor.java
...ava/cn/qg/qaplatform/mock/interceptor/PayInterceptor.java
+42
-16
BankCardUtils.java
src/main/java/cn/qg/qaplatform/mock/utils/BankCardUtils.java
+197
-0
Xyqb.java
src/test/java/cn/qg/qaplatform/test/Xyqb.java
+45
-45
No files found.
src/main/java/cn/qg/qaplatform/mock/controller/MockController.java
View file @
65dd2bf8
package
cn
.
qg
.
qaplatform
.
mock
.
controller
;
import
cn.qg.qaplatform.mock.service.MockService
;
import
cn.qg.qaplatform.utils.JsonResult
;
import
cn.qg.qaplatform.config.SwitchDataSource
;
import
cn.qg.qaplatform.mock.entity.Mock
;
import
cn.qg.qaplatform.mock.
mapper.MockMapper
;
import
c
om.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
cn.qg.qaplatform.mock.
service.MockService
;
import
c
n.qg.qaplatform.utils.JsonResult
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
...
...
src/main/java/cn/qg/qaplatform/mock/interceptor/PayInterceptor.java
View file @
65dd2bf8
...
...
@@ -3,23 +3,19 @@ package cn.qg.qaplatform.mock.interceptor;
import
cn.qg.qaplatform.config.SwitchDataSource
;
import
cn.qg.qaplatform.mock.encrypt.factory.EncryptConvertor
;
import
cn.qg.qaplatform.mock.encrypt.factory.EncryptFactory
;
import
cn.qg.qaplatform.mock.encrypt.paycenter.Aes
;
import
cn.qg.qaplatform.mock.encrypt.paycenter.Rsa
;
import
cn.qg.qaplatform.mock.entity.Mock
;
import
cn.qg.qaplatform.mock.mapper.MockMapper
;
import
cn.qg.qaplatform.mock.utils.BankCardUtils
;
import
cn.qg.qaplatform.utils.JsonTransUtils
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.lang.Nullable
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -34,19 +30,40 @@ public class PayInterceptor implements HandlerInterceptor {
private
String
namespace
=
"pre"
;
/**
*
获取HttpServletRequest的body
* @param
request HttpServletRequest
*
将HttpServletRequest的parameterMap由Map<String, String[]>转换成Map<String, Object>
* @param
parameterMap
* @return
* @throws IOException
*/
p
rivate
String
getRequestBody
(
HttpServletRequest
request
)
throws
IOException
{
BufferedReader
br
=
request
.
getReader
();
String
str
;
StringBuilder
wholeStr
=
new
StringBuilder
();
while
((
str
=
br
.
readLine
())
!=
null
){
wholeStr
.
append
(
str
);
p
ublic
Map
<
String
,
Object
>
requestMapTrans
(
Map
<
String
,
String
[]>
parameterMap
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>
();
for
(
Map
.
Entry
<
String
,
String
[]>
entry:
parameterMap
.
entrySet
())
{
String
key
=
entry
.
getKey
();
String
value
=
entry
.
getValue
()[
0
];
map
.
put
(
key
,
value
);
}
return
wholeStr
.
toString
();
return
map
;
}
/**
* 接口/tzt-api/api/bankcard/check 请求的mock响应
* @param cardNo 银行卡号
* @param merchantno 商户号
* @return 响应Map
*/
public
Map
<
String
,
Object
>
getBankcardCheckResponse
(
String
cardNo
,
String
merchantno
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
String
bankCode
=
BankCardUtils
.
getCardCode
(
cardNo
);
String
bankName
=
BankCardUtils
.
getBankName
(
bankCode
);
map
.
put
(
"bankCode"
,
bankCode
);
map
.
put
(
"bankName"
,
bankName
);
map
.
put
(
"cardTop"
,
cardNo
.
substring
(
0
,
5
));
map
.
put
(
"cardlast"
,
cardNo
.
substring
(
cardNo
.
length
()-
4
));
map
.
put
(
"cardtype"
,
"DEBIT"
);
map
.
put
(
"errorcode"
,
""
);
map
.
put
(
"errormsg"
,
""
);
map
.
put
(
"isvalid"
,
"VALID"
);
map
.
put
(
"merchantno"
,
merchantno
);
return
map
;
}
@Override
...
...
@@ -54,6 +71,8 @@ public class PayInterceptor implements HandlerInterceptor {
throws
Exception
{
SwitchDataSource
.
dataSourceSwitch
(
namespace
,
"qa"
);
String
uri
=
request
.
getRequestURI
().
substring
(
5
);
Map
<
String
,
String
[]>
parameterMap
=
request
.
getParameterMap
();
log
.
info
(
"打印请求参数:{}"
,
parameterMap
);
QueryWrapper
<
Mock
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
eq
(
"url"
,
uri
);
Mock
mock
=
mockMapper
.
selectOne
(
queryWrapper
);
...
...
@@ -62,8 +81,15 @@ public class PayInterceptor implements HandlerInterceptor {
PrintWriter
printWriter
=
response
.
getWriter
();
// 对request进行解密
EncryptConvertor
encryptConvertor
=
EncryptFactory
.
produce
(
"yeebao"
);
Map
<
String
,
Object
>
requestMap
=
JsonTransUtils
.
strToMap
(
encryptConvertor
.
decrypt
(
getRequestBody
(
request
)));
Map
<
String
,
Object
>
requestMap
=
JsonTransUtils
.
strToMap
(
encryptConvertor
.
decrypt
(
JsonTransUtils
.
mapToJson
(
requestMapTrans
(
parameterMap
)
)));
Map
<
String
,
Object
>
responseMap
=
new
HashMap
<>();
if
(
uri
.
equals
(
"/tzt-api/api/bankcard/check"
))
{
String
cardNo
=
requestMap
.
get
(
"cardno"
).
toString
();
String
merchantno
=
requestMap
.
get
(
"merchantno"
).
toString
();
responseMap
=
getBankcardCheckResponse
(
cardNo
,
merchantno
);
printWriter
.
write
(
encryptConvertor
.
encrypt
(
JsonTransUtils
.
mapToJson
(
responseMap
)));
return
true
;
}
if
(
mock
.
getFlag
().
equals
(
1
))
{
responseMap
=
JsonTransUtils
.
strToMap
(
mock
.
getSuccess
());
}
else
if
(
mock
.
getFlag
().
equals
(
0
))
{
...
...
src/main/java/cn/qg/qaplatform/mock/utils/BankCardUtils.java
0 → 100644
View file @
65dd2bf8
package
cn
.
qg
.
qaplatform
.
mock
.
utils
;
import
cn.qg.qaplatform.utils.HttpClientUtils
;
import
com.alibaba.fastjson.JSONObject
;
public
class
BankCardUtils
{
public
static
String
getCardCode
(
String
cardNo
)
{
String
url
=
"https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8&cardNo="
+
cardNo
+
"&cardBinCheck=true"
;
JSONObject
resposne
=
HttpClientUtils
.
doGetReturnJson
(
url
);
return
resposne
.
get
(
"bank"
).
toString
();
}
public
static
void
main
(
String
[]
args
)
{
System
.
out
.
println
(
getBankName
(
"CCB"
));
}
public
static
String
getBankName
(
String
code
){
int
a
=
0
;
for
(
int
i
=
0
;
i
<
bankBin
.
length
-
165
;
i
++)
{
if
(
code
.
equals
(
bankBin
[
i
+
a
])){
return
bankBin
[
i
+
a
+
1
];
}
a
++;
}
return
""
;
}
private
final
static
String
[]
bankBin
=
{
"SRCB"
,
"深圳农村商业银行"
,
"BGB"
,
"广西北部湾银行"
,
"SHRCB"
,
"上海农村商业银行"
,
"BJBANK"
,
"北京银行"
,
"WHCCB"
,
"威海市商业银行"
,
"BOZK"
,
"周口银行"
,
"KORLABANK"
,
"库尔勒市商业银行"
,
"SPABANK"
,
"平安银行"
,
"SDEB"
,
"顺德农商银行"
,
"HURCB"
,
"湖北省农村信用社"
,
"WRCB"
,
"无锡农村商业银行"
,
"BOCY"
,
"朝阳银行"
,
"CZBANK"
,
"浙商银行"
,
"HDBANK"
,
"邯郸银行"
,
"BOC"
,
"中国银行"
,
"BOD"
,
"东莞银行"
,
"CCB"
,
"中国建设银行"
,
"ZYCBANK"
,
"遵义市商业银行"
,
"SXCB"
,
"绍兴银行"
,
"GZRCU"
,
"贵州省农村信用社"
,
"ZJKCCB"
,
"张家口市商业银行"
,
"BOJZ"
,
"锦州银行"
,
"BOP"
,
"平顶山银行"
,
"HKB"
,
"汉口银行"
,
"SPDB"
,
"上海浦东发展银行"
,
"NXRCU"
,
"宁夏黄河农村商业银行"
,
"NYNB"
,
"广东南粤银行"
,
"GRCB"
,
"广州农商银行"
,
"BOSZ"
,
"苏州银行"
,
"HZCB"
,
"杭州银行"
,
"HSBK"
,
"衡水银行"
,
"HBC"
,
"湖北银行"
,
"JXBANK"
,
"嘉兴银行"
,
"HRXJB"
,
"华融湘江银行"
,
"BODD"
,
"丹东银行"
,
"AYCB"
,
"安阳银行"
,
"EGBANK"
,
"恒丰银行"
,
"CDB"
,
"国家开发银行"
,
"TCRCB"
,
"江苏太仓农村商业银行"
,
"NJCB"
,
"南京银行"
,
"ZZBANK"
,
"郑州银行"
,
"DYCB"
,
"德阳商业银行"
,
"YBCCB"
,
"宜宾市商业银行"
,
"SCRCU"
,
"四川省农村信用"
,
"KLB"
,
"昆仑银行"
,
"LSBANK"
,
"莱商银行"
,
"YDRCB"
,
"尧都农商行"
,
"CCQTGB"
,
"重庆三峡银行"
,
"FDB"
,
"富滇银行"
,
"JSRCU"
,
"江苏省农村信用联合社"
,
"JNBANK"
,
"济宁银行"
,
"CMB"
,
"招商银行"
,
"JINCHB"
,
"晋城银行JCBANK"
,
"FXCB"
,
"阜新银行"
,
"WHRCB"
,
"武汉农村商业银行"
,
"HBYCBANK"
,
"湖北银行宜昌分行"
,
"TZCB"
,
"台州银行"
,
"TACCB"
,
"泰安市商业银行"
,
"XCYH"
,
"许昌银行"
,
"CEB"
,
"中国光大银行"
,
"NXBANK"
,
"宁夏银行"
,
"HSBANK"
,
"徽商银行"
,
"JJBANK"
,
"九江银行"
,
"NHQS"
,
"农信银清算中心"
,
"MTBANK"
,
"浙江民泰商业银行"
,
"LANGFB"
,
"廊坊银行"
,
"ASCB"
,
"鞍山银行"
,
"KSRB"
,
"昆山农村商业银行"
,
"YXCCB"
,
"玉溪市商业银行"
,
"DLB"
,
"大连银行"
,
"DRCBCL"
,
"东莞农村商业银行"
,
"GCB"
,
"广州银行"
,
"NBBANK"
,
"宁波银行"
,
"BOYK"
,
"营口银行"
,
"SXRCCU"
,
"陕西信合"
,
"GLBANK"
,
"桂林银行"
,
"BOQH"
,
"青海银行"
,
"CDRCB"
,
"成都农商银行"
,
"QDCCB"
,
"青岛银行"
,
"HKBEA"
,
"东亚银行"
,
"HBHSBANK"
,
"湖北银行黄石分行"
,
"WZCB"
,
"温州银行"
,
"TRCB"
,
"天津农商银行"
,
"QLBANK"
,
"齐鲁银行"
,
"GDRCC"
,
"广东省农村信用社联合社"
,
"ZJTLCB"
,
"浙江泰隆商业银行"
,
"GZB"
,
"赣州银行"
,
"GYCB"
,
"贵阳市商业银行"
,
"CQBANK"
,
"重庆银行"
,
"DAQINGB"
,
"龙江银行"
,
"CGNB"
,
"南充市商业银行"
,
"SCCB"
,
"三门峡银行"
,
"CSRCB"
,
"常熟农村商业银行"
,
"SHBANK"
,
"上海银行"
,
"JLBANK"
,
"吉林银行"
,
"CZRCB"
,
"常州农村信用联社"
,
"BANKWF"
,
"潍坊银行"
,
"ZRCBANK"
,
"张家港农村商业银行"
,
"FJHXBC"
,
"福建海峡银行"
,
"ZJNX"
,
"浙江省农村信用社联合社"
,
"LZYH"
,
"兰州银行"
,
"JSB"
,
"晋商银行"
,
"BOHAIB"
,
"渤海银行"
,
"CZCB"
,
"浙江稠州商业银行"
,
"YQCCB"
,
"阳泉银行"
,
"SJBANK"
,
"盛京银行"
,
"XABANK"
,
"西安银行"
,
"BSB"
,
"包商银行"
,
"JSBANK"
,
"江苏银行"
,
"FSCB"
,
"抚顺银行"
,
"HNRCU"
,
"河南省农村信用"
,
"COMM"
,
"交通银行"
,
"XTB"
,
"邢台银行"
,
"CITIC"
,
"中信银行"
,
"HXBANK"
,
"华夏银行"
,
"HNRCC"
,
"湖南省农村信用社"
,
"DYCCB"
,
"东营市商业银行"
,
"ORBANK"
,
"鄂尔多斯银行"
,
"BJRCB"
,
"北京农村商业银行"
,
"XYBANK"
,
"信阳银行"
,
"ZGCCB"
,
"自贡市商业银行"
,
"CDCB"
,
"成都银行"
,
"HANABANK"
,
"韩亚银行"
,
"CMBC"
,
"中国民生银行"
,
"LYBANK"
,
"洛阳银行"
,
"GDB"
,
"广东发展银行"
,
"ZBCB"
,
"齐商银行"
,
"CBKF"
,
"开封市商业银行"
,
"H3CB"
,
"内蒙古银行"
,
"CIB"
,
"兴业银行"
,
"CRCBANK"
,
"重庆农村商业银行"
,
"SZSBK"
,
"石嘴山银行"
,
"DZBANK"
,
"德州银行"
,
"SRBANK"
,
"上饶银行"
,
"LSCCB"
,
"乐山市商业银行"
,
"JXRCU"
,
"江西省农村信用"
,
"ICBC"
,
"中国工商银行"
,
"JZBANK"
,
"晋中市商业银行"
,
"HZCCB"
,
"湖州市商业银行"
,
"NHB"
,
"南海农村信用联社"
,
"XXBANK"
,
"新乡银行"
,
"JRCB"
,
"江苏江阴农村商业银行"
,
"YNRCC"
,
"云南省农村信用社"
,
"ABC"
,
"中国农业银行"
,
"GXRCU"
,
"广西省农村信用"
,
"PSBC"
,
"中国邮政储蓄银行"
,
"BZMD"
,
"驻马店银行"
,
"ARCU"
,
"安徽省农村信用社"
,
"GSRCU"
,
"甘肃省农村信用"
,
"LYCB"
,
"辽阳市商业银行"
,
"JLRCU"
,
"吉林农信"
,
"URMQCCB"
,
"乌鲁木齐市商业银行"
,
"XLBANK"
,
"中山小榄村镇银行"
,
"CSCB"
,
"长沙银行"
,
"JHBANK"
,
"金华银行"
,
"BHB"
,
"河北银行"
,
"NBYZ"
,
"鄞州银行"
,
"LSBC"
,
"临商银行"
,
"BOCD"
,
"承德银行"
,
"SDRCU"
,
"山东农信"
,
"NCB"
,
"南昌银行"
,
"TCCB"
,
"天津银行"
,
"WJRCB"
,
"吴江农商银行"
,
"CBBQS"
,
"城市商业银行资金清算中心"
,
"HBRCU"
,
"河北省农村信用社"
};
}
src/test/java/cn/qg/qaplatform/test/Xyqb.java
View file @
65dd2bf8
...
...
@@ -17,10 +17,10 @@ import java.util.List;
import
java.util.Map
;
public
class
Xyqb
{
public
static
String
namespace
=
"vcc
2
"
;
public
static
String
namespace
=
"vcc
3
"
;
public
static
Integer
channelId
=
1
;
public
static
Integer
fundId
=
480
;
public
static
String
phone
=
"1
8300000120
"
;
public
static
String
phone
=
"1
3502760991
"
;
public
static
String
token
=
""
;
public
static
String
uuid
=
""
;
public
static
Long
userId
;
...
...
@@ -664,34 +664,34 @@ public class Xyqb {
public
static
void
main
(
String
[]
args
)
throws
Exception
{
// 分配资金方
loginFundOP
();
unblockLoan
();
boolean
result
=
assignFundOrNot
();
if
(!
result
)
{
setFundPlan
();
unblockLoan
();
}
// 授信
login
();
checkUserId
();
// 如果是云信,则需要插入银行卡
if
(
fundId
==
1040
)
{
insertBankCardOfYunxing
();
}
syncSessionToXyqb
();
creditSessionSync
();
realNameVerified
();
authBasicInfo
();
enterAuthOcr
();
uploadFrontOfIdCard
();
uploadBackOfIdCard
();
submitPhotoAuth
();
credit
();
submitAudit
();
queryUserAuditRecord
();
creditAuthNotify
();
Thread
.
sleep
(
180000
);
//
loginFundOP();
//
unblockLoan();
//
boolean result = assignFundOrNot();
//
if (!result) {
//
setFundPlan();
//
unblockLoan();
//
}
//
//
//
授信
//
login();
//
checkUserId();
//
// 如果是云信,则需要插入银行卡
//
if (fundId == 1040) {
//
insertBankCardOfYunxing();
//
}
//
syncSessionToXyqb();
//
creditSessionSync();
//
realNameVerified();
//
authBasicInfo();
//
enterAuthOcr();
//
uploadFrontOfIdCard();
//
uploadBackOfIdCard();
//
submitPhotoAuth();
//
credit();
//
submitAudit();
//
queryUserAuditRecord();
//
creditAuthNotify();
//
Thread.sleep(180000);
// 绑卡提现
login
();
...
...
@@ -701,21 +701,21 @@ public class Xyqb {
getUserAccountId
();
bindCard
();
cardAuthSms
();
cardAuthSmsConfirm
();
getBindCardList
();
createLoan
();
externalQuotaOrderAuditNotify
();
modifyContactStatus
();
Thread
.
sleep
(
10000
);
// 放款
loginOP
();
checkWaitingFundingCorpOperatePeople
();
modifyWaitingFundingCreatedAt
();
Thread
.
sleep
(
10000
);
fundsPlanLoanApply
();
Thread
.
sleep
(
10000
);
payNotify
();
//
cardAuthSmsConfirm();
//
getBindCardList();
//
createLoan();
//
externalQuotaOrderAuditNotify();
//
modifyContactStatus();
//
Thread.sleep(10000);
//
// 放款
//
loginOP();
//
checkWaitingFundingCorpOperatePeople();
//
modifyWaitingFundingCreatedAt();
//
Thread.sleep(10000);
//
fundsPlanLoanApply();
//
Thread.sleep(10000);
//
payNotify();
}
}
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