Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
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
order-group-application
order-group
Commits
40e93653
Commit
40e93653
authored
Nov 24, 2020
by
xiaoer.li@freemud.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
混合支付优化调整
parent
7b94a07b
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
82 additions
and
22 deletions
+82
-22
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+13
-13
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+5
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+64
-9
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
40e93653
...
...
@@ -3493,8 +3493,7 @@ public class OrderAdapter {
,
String
partnerPayOvertime
,
String
orderClient
,
String
channel
,
Integer
totalAmount
,
Integer
svcAmount
)
{
,
Integer
totalAmount
)
{
CombPayRequest
orderPayDto
=
new
CombPayRequest
();
orderPayDto
.
setEbCode
(
paymentRequest
.
getPayCode
());
orderPayDto
.
setPartner_id
(
orderBean
.
getCompanyId
());
...
...
@@ -3525,16 +3524,15 @@ public class OrderAdapter {
}
orderPayDto
.
setProducts
(
productVOS
);
List
<
PayPlatformVO
>
platforms
=
new
ArrayList
<>();
Long
svc
=
svcAmount
.
longValue
();
PayPlatformVO
payPlatformVO
=
new
PayPlatformVO
();
payPlatformVO
.
setClientCode
(
PayChannelType
.
SVC
.
getEbcode
());
payPlatformVO
.
setEbcode
(
PayChannelType
.
SVC
.
getEbcode
());
payPlatformVO
.
setAmount
(
svc
);
payPlatformVO
.
setAmount
(
0L
);
platforms
.
add
(
payPlatformVO
);
String
ebcode
=
PayChannelType
.
getByIndex
(
Byte
.
parseByte
(
channel
)).
getEbcode
();
payPlatformVO
=
new
PayPlatformVO
();
payPlatformVO
.
setAmount
(
totalAmount
.
longValue
()
-
svc
);
payPlatformVO
.
setAmount
(
0L
);
payPlatformVO
.
setClientCode
(
orderClient
);
payPlatformVO
.
setEbcode
(
ebcode
);
platforms
.
add
(
payPlatformVO
);
...
...
@@ -3552,9 +3550,7 @@ public class OrderAdapter {
*/
public
OrderPayResponse
convent2OrderCombPayResponse
(
List
<
CombPayResponse
.
PayPlatform
>
payPlatforms
,
String
partnerId
,
String
storeId
,
Integer
totalAmount
,
Integer
svcAmount
)
{
,
String
storeId
)
{
CombPayResponse
.
PayPlatform
payPlatform
=
payPlatforms
.
stream
()
.
filter
(
f
->
!
PayChannelType
.
SVC
.
getEbcode
().
equals
(
f
.
getEbCode
())).
findFirst
()
...
...
@@ -3579,7 +3575,6 @@ public class OrderAdapter {
responseDto
.
setPayOrder
(
payBean
);
}
//供修改订单
Integer
cashAmount
=
totalAmount
-
svcAmount
;
for
(
CombPayResponse
.
PayPlatform
pt
:
payPlatforms
)
{
PayItem
payItem
=
new
PayItem
();
payItem
.
setFmTradeNo
(
pt
.
getFmTradeNo
());
...
...
@@ -3588,14 +3583,19 @@ public class OrderAdapter {
payItem
.
setPayChannelName
(
PayChannelType
.
getByEbcode
(
pt
.
getEbCode
()).
getName
());
payItem
.
setTransId
(
pt
.
getTransId
());
payItem
.
setPartnerId
(
partnerId
);
if
(
pt
.
getEbCode
().
equals
(
PayChannel
.
SVC
.
getCode
()))
{
payItem
.
setPayAmount
(
new
BigDecimal
(
svcAmount
));
if
(
PayChannelType
.
SVC
.
getEbcode
().
equals
(
pt
.
getEbCode
()))
{
payItem
.
setPayAmount
(
new
BigDecimal
(
pt
.
getPayAccount
()));
responseDto
.
setPayMode
(
PayChannelType
.
SVC
.
getEbcode
());
}
else
{
payItem
.
setPayAmount
(
new
BigDecimal
(
cashAmount
));
else
if
(
PayChannelType
.
WECHAT
.
getEbcode
().
equals
(
pt
.
getEbCode
())
||
PayChannelType
.
ALIPAY
.
getEbcode
().
equals
(
pt
.
getEbCode
())){
payItem
.
setPayAmount
(
new
BigDecimal
(
pt
.
getPayAccount
()));
responseDto
.
setPayMode
(
PayChannelType
.
getByEbcode
(
pt
.
getEbCode
()).
getEbcode
());
}
responseDto
.
getPayItem
().
add
(
payItem
);
}
if
(
responseDto
.
getPayItem
().
size
()==
2
)
{
responseDto
.
setPayMode
(
PayChannelType
.
COMB
.
getEbcode
());
}
return
responseDto
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
40e93653
...
...
@@ -3,6 +3,7 @@ package cn.freemud.service.impl;
import
cn.freemud.adapter.OrderAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.AppCreateOrderVo
;
...
...
@@ -189,6 +190,10 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
return
gson
.
toJson
(
message
);
}
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
// 混合支付失败,取消订单
if
(
message
.
getResult_code
().
equals
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
))
{
return
orderService
.
cannelComPayOrder
(
confirmOrderDto
,
orderBean
);
}
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())){
return
orderAdapter
.
sendPaySuccessNoticeMessage
();
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
40e93653
...
...
@@ -2311,7 +2311,9 @@ public class OrderServiceImpl implements Orderservice {
,
String
storeId
,
String
trackingNo
)
{
boolean
tigger
=
false
;
OrderPayResponse
orderPayResponse
=
new
OrderPayResponse
();
/*
SVCCardAmountRequest svcRequest = new SVCCardAmountRequest();
svcRequest.setPartnerId(orderBean.getCompanyId());
svcRequest.setCardCodes(Arrays.asList(cardCode));
...
...
@@ -2329,16 +2331,17 @@ public class OrderServiceImpl implements Orderservice {
// 校验金额
Integer svcAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getAmount() ;
Integer svcVAmount = svcCardAmount.getData().getData().getCardSimpleInfos().get(0).getVamount() ;
boolean
tigger
=
false
;
//todo : svc卡的金额小于订单金额
if(svcAmount + svcVAmount >0 && totalAmount> svcAmount + svcVAmount){
tigger = true;
}
*/
tigger
=
true
;
//混合支付
if
(
tigger
&&
StringUtils
.
isNotBlank
(
channel
))
{
log
.
info
(
"混合支付:"
);
String
partnerPayOvertime
=
this
.
getPartnerPayOvertime
(
orderBean
.
getCompanyId
());
orderPayResponse
=
comPayOrder
(
cardCode
,
orderBean
,
paymentRequest
,
partnerPayOvertime
,
totalAmount
.
intValue
(),
svcAmount
,
svcVAmount
,
channel
,
storeId
,
LogThreadLocal
.
getTrackingNo
());
orderPayResponse
=
comPayOrder
(
cardCode
,
orderBean
,
paymentRequest
,
partnerPayOvertime
,
totalAmount
.
intValue
(),
channel
,
storeId
,
LogThreadLocal
.
getTrackingNo
());
}
//svc 支付
else
{
...
...
@@ -3203,8 +3206,6 @@ public class OrderServiceImpl implements Orderservice {
,
PaymentRequest
paymentRequest
,
String
partnerPayOvertime
,
Integer
totalAmount
,
Integer
svcAmount
,
Integer
svcVAmount
,
String
channel
,
String
storeId
,
String
trackingNo
)
{
...
...
@@ -3216,23 +3217,38 @@ public class OrderServiceImpl implements Orderservice {
return
orderPayResponse
;
}
CombPayRequest
combPayRequest
=
orderAdapter
.
convent2CombPayOrderRequest
(
cardNo
,
orderBean
,
paymentRequest
,
partnerPayOvertime
,
ebCode
,
channel
,
totalAmount
,
svcAmount
+
svcVAmount
);
CombPayResponse
combPayResponse
=
comPayClient
.
combPay
(
combPayRequest
,
combPayRequest
.
getPartner_id
());
if
(!
ResponseCodeConstant
.
PAYMENT_RESPONSE_SUCCESS
.
equals
(
combPayResponse
.
getCode
())||
combPayResponse
.
getData
().
getPayPlatformResponseList
().
size
()==
0
)
{
CombPayRequest
combPayRequest
=
orderAdapter
.
convent2CombPayOrderRequest
(
cardNo
,
orderBean
,
paymentRequest
,
partnerPayOvertime
,
ebCode
,
channel
,
totalAmount
);
//todo :xxxooooo xxxoooxox
CombPayResponse
combPayResponse
=
null
;
int
i
=
1
;
do
{
try
{
combPayResponse
=
comPayClient
.
combPay
(
combPayRequest
,
combPayRequest
.
getPartner_id
());
if
(
ResponseCodeConstant
.
PAYMENT_RESPONSE_SUCCESS
.
equals
(
combPayResponse
.
getCode
()))
{
break
;
}
}
catch
(
Exception
exception
)
{}
i
++;
}
while
(
i
<
4
);
if
(
combPayResponse
==
null
||
!
ResponseCodeConstant
.
PAYMENT_RESPONSE_SUCCESS
.
equals
(
combPayResponse
.
getCode
()))
{
log
.
info
(
"混合支付返回信息错误,trackingNo:{} request:{} response:{}"
,
trackingNo
,
JSONObject
.
toJSONString
(
combPayRequest
),
JSONObject
.
toJSONString
(
combPayResponse
));
orderPayResponse
.
setMsg
(
combPayResponse
.
getMsg
());
return
orderPayResponse
;
}
Integer
svcAmount
=
0
;
Integer
svcVAmount
=
0
;
//生成预支付参数
CombPayResponse
.
PayPlatform
payPlatform
=
combPayResponse
.
getData
().
getPayPlatformResponseList
()
.
stream
()
.
filter
(
f
->
!
PayChannelType
.
SVC
.
getEbcode
().
equals
(
f
.
getEbCode
())).
findFirst
()
.
orElse
(
null
);
if
(
payPlatform
==
null
)
{
orderPayResponse
.
setMsg
(
"
支付:现金支付错误
"
);
orderPayResponse
.
setMsg
(
"
混合支付:生成预支付失败
"
);
return
orderPayResponse
;
}
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
combPayResponse
.
getData
().
getPayPlatformResponseList
(),
orderBean
.
getCompanyId
(),
storeId
,
totalAmount
,
svcAmount
+
svcVAmount
);
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
combPayResponse
.
getData
().
getPayPlatformResponseList
(),
orderBean
.
getCompanyId
(),
storeId
);
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setPartnerId
(
orderBean
.
getCompanyId
());
...
...
@@ -3265,4 +3281,43 @@ public class OrderServiceImpl implements Orderservice {
}
return
""
;
}
public
String
cannelComPayOrder
(
ConfirmOrderDto
confirmOrderDto
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
)
{
//失败冲正库存,冲正活动库存,取消订单
CancelOrderRequest
cancelOrderRequest
=
orderAdapter
.
convent2CancelOrderRequest
(
confirmOrderDto
.
getOrderId
(),
orderBean
.
getCompanyId
(),
AfterSalesType
.
SYSTEM_CANCEL
,
"混合支付SVC卡支付失败"
,
LogTreadLocal
.
getTrackingNo
(),
null
);
//BaseOrderResponse request = orderCenterSdkService.orderCancel(cancelOrderRequest);
BaseOrderResponse
request
=
null
;
int
i
=
1
;
do
{
try
{
request
=
orderCenterSdkService
.
orderCancel
(
cancelOrderRequest
);
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
request
.
getErrcode
()))
{
break
;
}
}
catch
(
Exception
e
)
{}
i
++;
}
while
(
i
<
4
);
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
());
if
(
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
request
.
getErrcode
()))
{
return
this
.
newSendPayFaileMessage
();
}
else
{
return
this
.
newSendPaySuccessNoticeMessage
();
}
}
/**
* 取消混合支付svc扣款失败的订单
* @param orderId
* @return
*/
//public String cannelComPayOrder(String orderId) {
// //失败冲正库存,冲正活动库存,取消订单
// CancelOrderRequest cancelOrderRequest = orderAdapter.convent2CancelOrderRequest(orderId, orderBean.getCompanyId(),
// AfterSalesType.SYSTEM_CANCEL, StringUtils.join(new String[]{"获取预支付失败", msg}, '-'), trackingNo, null);
// orderCenterSdkService.orderCancel(cancelOrderRequest);
// // TODO: 2019/9/10 hubowen mq推送变更
// backOrdersStatusChange(orderBean.getOid(), orderBean.getStatus());
//}
}
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