Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hls-support-rlwx
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
rl
hls-support-rlwx
Commits
0d60ea3a
Commit
0d60ea3a
authored
Apr 26, 2022
by
胡建龙
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
20220426 记录订单状态及日志
parent
cdcd1d18
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
114 additions
and
73 deletions
+114
-73
HclcCmbPolyServiceImpl.java
...com/hand/app/cmb/service/impl/HclcCmbPolyServiceImpl.java
+114
-73
No files found.
core/src/main/java/com/hand/app/cmb/service/impl/HclcCmbPolyServiceImpl.java
View file @
0d60ea3a
...
...
@@ -8,7 +8,9 @@ import com.chinapay.secss.LogUtil;
import
com.chinapay.service.IHlsEbankCcbTransactionService
;
import
com.chinapay.util.StringUtil
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.hand.app.cmb.dto.HlsEbankCmbTransqry
;
import
com.hand.app.cmb.dto.Ld037
;
import
com.hand.app.cmb.mapper.HlsEbankCmbTransqryMapper
;
import
com.hand.app.cmb.mapper.Ld037Mapper
;
import
com.hand.app.cmb.service.HclcCmbPolyService
;
import
com.hand.app.cmb.util.MD5Utils
;
...
...
@@ -536,6 +538,10 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
result
.
put
(
"tradeState"
,
hlsEbankCcbTransaction
.
getOrderStatus
());
return
result
;
}
hlsEbankCmbTransqry
.
setOrderId
(
hlsEbankCcbTransaction
.
getCmbOrderId
());
hlsEbankCmbTransqry
.
setTxnAmt
(
Math
.
round
(
hlsEbankCcbTransaction
.
getAmount
()*
100
));
Map
<
String
,
String
>
responseMap
=
null
;
ObjectMapper
mapper
=
null
;
HlsWsRequests
hlsWsRequests
=
null
;
...
...
@@ -563,6 +569,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
apiHeader
.
put
(
"timestamp"
,
""
+
currentTimeMills
);
apiHeader
.
put
(
"apisign"
,
apiSignString
);
hlsWsRequests
=
logInterfaceRequest
(
queryQrState
,
url
,
mapper
.
writeValueAsString
(
apiHeader
),
hlsEbankCcbTransaction
.
getTransactionId
());
//发送http请求
responseMap
=
Utils
.
postForEntity
(
url
,
signResult
,
apiHeader
);
...
...
@@ -585,23 +592,36 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//数据验签成功 if (checkResponse) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String
returnCode
=
responseMap
.
get
(
"returnCode"
);
hlsEbankCmbTransqry
.
setReturnCode
(
returnCode
);
if
(
"SUCCESS"
.
equalsIgnoreCase
(
returnCode
))
{
//响应码
String
respCode
=
responseMap
.
get
(
"returnCode"
);
if
(
"SUCCESS"
.
equalsIgnoreCase
(
respCode
))
{
//成功拿到订单状态请求的响应
hlsEbankCmbTransqry
.
setCmbOrderId
(
responseMap
.
get
(
"cmbOrderId"
));
hlsEbankCmbTransqry
.
setTxnTime
(
responseMap
.
get
(
"txnTime"
));
hlsEbankCmbTransqry
.
setPayType
(
responseMap
.
get
(
"payType"
));
hlsEbankCmbTransqry
.
setPayBank
(
responseMap
.
get
(
"payBank"
));
hlsEbankCmbTransqry
.
setTradeState
(
responseMap
.
get
(
"tradeState"
));
hlsEbankCmbTransqry
.
setEndDate
(
responseMap
.
get
(
"endDate"
));
hlsEbankCmbTransqry
.
setEndTime
(
responseMap
.
get
(
"endTime"
));
resultType
=
"1"
;
}
else
{
if
(
"SYSTERM_ERROR"
.
equalsIgnoreCase
(
responseMap
.
get
(
"errcode"
))){
hlsEbankCmbTransqry
.
setReturnCode
(
respCode
);
resultType
=
"6"
;
}
else
{
//请求成功,但是响应结果为失败,传给前端失败原因就行
hlsEbankCmbTransqry
.
setErrCode
(
responseMap
.
get
(
"errCode"
));
hlsEbankCmbTransqry
.
setRespMsg
(
responseMap
.
get
(
"respMsg"
));
resultType
=
"2"
;
}
}
}
else
{
//返回码都失败
hlsEbankCmbTransqry
.
setErrCode
(
responseMap
.
get
(
"errCode"
));
hlsEbankCmbTransqry
.
setRespMsg
(
responseMap
.
get
(
"respMsg"
));
resultType
=
"3"
;
}
...
...
@@ -621,6 +641,7 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
hlsWsRequests
.
setReturnStatus
(
"E"
);
hlsWsRequests
.
setResponsedDate
(
new
Date
());
}
hlsEbankCmbTransqryMapper
.
updateByPrimaryKey
(
hlsEbankCmbTransqry
);
hlsWsRequestsMapper
.
updateByPrimaryKeySelective
(
hlsWsRequests
);
hlsEbankCcbTransaction
=
setEbankTransactionQR
(
hlsEbankCcbTransaction
,
responseMap
,
resultType
);
hlsEbankCcbTransactionMapper
.
updateByPrimaryKeySelective
(
hlsEbankCcbTransaction
);
...
...
@@ -875,94 +896,114 @@ public class HclcCmbPolyServiceImpl implements HclcCmbPolyService {
//开始封装请求部分
String
signResult
=
getOrderQueryParameter
(
hlsEbankCcbTransaction
);
ObjectMapper
mapper
=
new
ObjectMapper
();
Map
<
String
,
String
>
signResultMap
=
null
;
Map
<
String
,
String
>
apiHeader
=
null
;
try
{
signResultMap
=
mapper
.
readValue
(
signResult
,
Map
.
class
);
}
catch
(
IOException
e
)
{
/// resultType = "5";
e
.
printStackTrace
();
}
long
currentTimeMills
=
System
.
currentTimeMillis
()
/
1000
;
Map
<
String
,
String
>
signResultMap
=
mapper
.
readValue
(
signResult
,
Map
.
class
);
long
currentTimeMills
=
System
.
currentTimeMillis
()
/
1000
;
// 组apiSign加密Map
Map
<
String
,
String
>
apiSign
=
new
TreeMap
<>();
apiSign
.
put
(
"appid"
,
appId
);
apiSign
.
put
(
"secret"
,
appSecret
);
apiSign
.
put
(
"sign"
,
signResultMap
.
get
(
"sign"
));
apiSign
.
put
(
"timestamp"
,
""
+
currentTimeMills
);
// 组apiSign加密Map
Map
<
String
,
String
>
apiSign
=
new
TreeMap
<>();
apiSign
.
put
(
"appid"
,
appId
);
apiSign
.
put
(
"secret"
,
appSecret
);
apiSign
.
put
(
"sign"
,
signResultMap
.
get
(
"sign"
));
apiSign
.
put
(
"timestamp"
,
""
+
currentTimeMills
);
// MD5加密
String
MD5Content
=
SignatureUtil
.
getSignContent
(
apiSign
);
String
apiSignString
=
MD5Utils
.
getMD5Content
(
MD5Content
).
toLowerCase
();
// MD5加密
String
MD5Content
=
SignatureUtil
.
getSignContent
(
apiSign
);
String
apiSignString
=
MD5Utils
.
getMD5Content
(
MD5Content
).
toLowerCase
();
// 组request头部Map
Map
<
String
,
String
>
apiHeader
=
new
HashMap
<>();
apiHeader
.
put
(
"appid"
,
appId
);
apiHeader
.
put
(
"timestamp"
,
""
+
currentTimeMills
);
apiHeader
.
put
(
"apisign"
,
apiSignString
);
// 组request头部Map
apiHeader
=
new
HashMap
<>();
apiHeader
.
put
(
"appid"
,
appId
);
apiHeader
.
put
(
"timestamp"
,
""
+
currentTimeMills
);
apiHeader
.
put
(
"apisign"
,
apiSignString
);
Map
<
String
,
String
>
responseMap
=
Utils
.
postForEntity
(
closeUrl
,
signResult
,
apiHeader
);
//处理响应报文
Boolean
checkResponse
=
null
;
hlsEbankCmbTransqry
.
setOrderId
(
hlsEbankCcbTransaction
.
getCmbOrderId
());
hlsEbankCmbTransqry
.
setTxnAmt
(
Math
.
round
(
hlsEbankCcbTransaction
.
getAmount
()*
100
));
}
catch
(
IOException
e
)
{
/// resultType = "5";
e
.
printStackTrace
();
}
HlsWsRequests
hlsWsRequests
=
null
;
try
{
checkResponse
=
checkSign
(
mapper
.
writeValueAsString
(
responseMap
));
hlsWsRequests
=
logInterfaceRequest
(
queryQrState
,
url
,
mapper
.
writeValueAsString
(
apiHeader
),
hlsEbankCcbTransaction
.
getTransactionId
());
Map
<
String
,
String
>
responseMap
=
Utils
.
postForEntity
(
closeUrl
,
signResult
,
apiHeader
);
//处理响应报文
Boolean
checkResponse
=
checkSign
(
mapper
.
writeValueAsString
(
responseMap
));
//数据验签成功
if
(
checkResponse
)
{
hlsWsRequests
.
setResponseClob
(
mapper
.
writeValueAsString
(
responseMap
));
hlsWsRequests
.
setReturnStatus
(
"S"
);
hlsWsRequests
.
setResponsedDate
(
new
Date
());
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String
returnCode
=
responseMap
.
get
(
"returnCode"
);
hlsEbankCmbTransqry
.
setReturnCode
(
returnCode
);
if
(
"SUCCESS"
.
equalsIgnoreCase
(
returnCode
))
{
//响应码
String
respCode
=
responseMap
.
get
(
"respCode"
);
hlsEbankCmbTransqry
.
setRespCode
(
respCode
);
hlsEbankCmbTransqry
.
setOrderId
(
responseMap
.
get
(
"origOrderId"
));
if
(
"ORDER_PAID"
.
equalsIgnoreCase
(
respCode
)){
//需要调用退款接口
result
.
put
(
Constants
.
RESP_CODE
,
"E"
);
result
.
put
(
"respMsg"
,
"需要调用退款接口!"
);
return
result
;
}
else
if
(
"SUCCESS"
.
equalsIgnoreCase
(
respCode
))
{
//订单关闭成功
hlsEbankCmbTransqry
.
setTradeState
(
responseMap
.
get
(
"closeState"
));
hlsEbankCmbTransqry
.
setTxnTime
(
responseMap
.
get
(
"txnTime"
));
if
(
"C"
.
equalsIgnoreCase
(
responseMap
.
get
(
"closeState"
))){
hlsEbankCcbTransaction
.
setStatus
(
transClose
);
hlsEbankCcbTransaction
.
setOrderStatus
(
"C"
);
result
.
put
(
Constants
.
RESP_CODE
,
responseMap
.
get
(
"respCode"
));
result
.
put
(
Constants
.
RESP_MSG
,
"请求成功"
);
result
.
put
(
"cmborderid"
,
responseMap
.
get
(
"origOrderId"
));
result
.
put
(
"closeState"
,
responseMap
.
get
(
"closeState"
));
result
.
put
(
"txnTime"
,
responseMap
.
get
(
"txnTime"
));
}
//关单失败处理
else
{
hlsEbankCcbTransaction
.
setOrderStatus
(
"F"
);
result
.
put
(
Constants
.
RESP_CODE
,
responseMap
.
get
(
"respCode"
));
result
.
put
(
Constants
.
RESP_MSG
,
"请求成功"
);
result
.
put
(
"cmborderid"
,
responseMap
.
get
(
"origOrderId"
));
result
.
put
(
"closeState"
,
responseMap
.
get
(
"closeState"
));
result
.
put
(
"txnTime"
,
responseMap
.
get
(
"txnTime"
));
}
}
else
if
(
"SYSTERM_ERROR"
.
equalsIgnoreCase
(
respCode
)){
//请求成功,但是响应结果为失败,传给前端失败原因就行
result
.
put
(
Constants
.
RESP_CODE
,
"E"
);
result
.
put
(
"respMsg"
,
"需要重新调用查询接口!"
);
}
else
if
(
"FAIL"
.
equalsIgnoreCase
(
respCode
)){
hlsEbankCmbTransqry
.
setErrCode
(
responseMap
.
get
(
"errCode"
));
hlsEbankCmbTransqry
.
setRespMsg
(
responseMap
.
get
(
"respMsg"
));
result
.
put
(
"errCode"
,
responseMap
.
get
(
"errCode"
));
result
.
put
(
"respMsg"
,
responseMap
.
get
(
"respMsg"
));
}
}
else
{
//返回码都失败
hlsEbankCmbTransqry
.
setErrCode
(
responseMap
.
get
(
"errCode"
));
hlsEbankCmbTransqry
.
setRespMsg
(
responseMap
.
get
(
"respMsg"
));
result
.
put
(
"errCode"
,
responseMap
.
get
(
"errCode"
));
result
.
put
(
"respMsg"
,
responseMap
.
get
(
"respMsg"
));
}
}
}
catch
(
JsonProcessingException
e
)
{
result
.
put
(
Constants
.
RESP_CODE
,
"E"
);
result
.
put
(
"respMsg"
,
"数据验签失败"
);
hlsWsRequests
.
setReturnStatus
(
"E"
);
hlsWsRequests
.
setResponsedDate
(
new
Date
());
e
.
printStackTrace
();
}
//数据验签成功 if (checkResponse) {
//获取返回码,返回码不为SUCCESS表示报文内的字段不符合规范
String
returnCode
=
responseMap
.
get
(
"returnCode"
);
if
(
"SUCCESS"
.
equalsIgnoreCase
(
returnCode
))
{
//响应码
String
respCode
=
responseMap
.
get
(
"returnCode"
);
if
(
"ORDER_PAID"
.
equalsIgnoreCase
(
respCode
)){
//需要调用退款接口
result
.
put
(
Constants
.
RESP_CODE
,
"E"
);
result
.
put
(
"respMsg"
,
"需要调用退款接口!"
);
return
result
;
}
else
if
(
"SUCCESS"
.
equalsIgnoreCase
(
respCode
))
{
//订单关闭成功
if
(
"C"
.
equalsIgnoreCase
(
responseMap
.
get
(
"closeState"
))){
hlsEbankCcbTransaction
.
setStatus
(
transClose
);
hlsEbankCcbTransaction
.
setOrderStatus
(
"C"
);
result
.
put
(
Constants
.
RESP_CODE
,
responseMap
.
get
(
"respCode"
));
result
.
put
(
Constants
.
RESP_MSG
,
"请求成功"
);
result
.
put
(
"cmborderid"
,
responseMap
.
get
(
"origOrderId"
));
result
.
put
(
"closeState"
,
responseMap
.
get
(
"closeState"
));
result
.
put
(
"txnTime"
,
responseMap
.
get
(
"txnTime"
));
}
//关单失败处理
else
{
hlsEbankCcbTransaction
.
setOrderStatus
(
"F"
);
result
.
put
(
Constants
.
RESP_CODE
,
responseMap
.
get
(
"respCode"
));
result
.
put
(
Constants
.
RESP_MSG
,
"请求成功"
);
result
.
put
(
"cmborderid"
,
responseMap
.
get
(
"origOrderId"
));
result
.
put
(
"closeState"
,
responseMap
.
get
(
"closeState"
));
result
.
put
(
"txnTime"
,
responseMap
.
get
(
"txnTime"
));
}
}
else
if
(
"SYSTERM_ERROR"
.
equalsIgnoreCase
(
respCode
)){
//请求成功,但是响应结果为失败,传给前端失败原因就行
result
.
put
(
Constants
.
RESP_CODE
,
"E"
);
result
.
put
(
"respMsg"
,
"需要重新调用查询接口!"
);
}
else
if
(
"FAIL"
.
equalsIgnoreCase
(
respCode
)){
result
.
put
(
"errCode"
,
responseMap
.
get
(
"errCode"
));
result
.
put
(
"respMsg"
,
responseMap
.
get
(
"respMsg"
));
}
}
else
{
//返回码都失败
result
.
put
(
"errCode"
,
responseMap
.
get
(
"errCode"
));
result
.
put
(
"respMsg"
,
responseMap
.
get
(
"respMsg"
));
}
hlsEbankCmbTransqryMapper
.
updateByPrimaryKey
(
hlsEbankCmbTransqry
);
hlsWsRequestsMapper
.
updateByPrimaryKey
(
hlsWsRequests
);
hlsEbankCcbTransactionMapper
.
updateByPrimaryKey
(
hlsEbankCcbTransaction
);
return
result
;
}
private
Map
<
String
,
String
>
str2Map
(
String
str
)
{
Map
<
String
,
String
>
result
=
new
HashMap
<>();
String
[]
results
=
str
.
split
(
"&"
);
...
...
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