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
e5051315
Commit
e5051315
authored
Nov 25, 2020
by
xiaoer.li@freemud.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/2020-1104-混合支付' into qa
parents
c2202787
64fffaac
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
116 additions
and
52 deletions
+116
-52
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+14
-14
order-application-service/src/main/java/cn/freemud/entities/dto/pay/CombPayResponse.java
+3
-3
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
+94
-19
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
+0
-16
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
e5051315
...
...
@@ -28,8 +28,8 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.entities.vo.encircle.PreviewOrderInfoVo
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.*
;
import
cn.freemud.enums.ActivityTypeEnum
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.enums.OrderSourceType
;
import
cn.freemud.enums.OrderType
;
...
...
@@ -3605,8 +3605,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
());
...
...
@@ -3637,16 +3636,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
);
...
...
@@ -3664,9 +3662,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
()
...
...
@@ -3691,7 +3687,6 @@ public class OrderAdapter {
responseDto
.
setPayOrder
(
payBean
);
}
//供修改订单
Integer
cashAmount
=
totalAmount
-
svcAmount
;
for
(
CombPayResponse
.
PayPlatform
pt
:
payPlatforms
)
{
PayItem
payItem
=
new
PayItem
();
payItem
.
setFmTradeNo
(
pt
.
getFmTradeNo
());
...
...
@@ -3700,14 +3695,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
.
getPayAmount
()));
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
.
getPayAmount
()));
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/entities/dto/pay/CombPayResponse.java
View file @
e5051315
...
...
@@ -51,12 +51,12 @@ public class CombPayResponse {
@ApiModelProperty
(
value
=
"外部交易流水号,由上游系统生成,需保证唯一"
)
private
String
outOrderNo
;
@ApiModelProperty
(
value
=
"支付帐号"
)
private
String
payAccount
;
@ApiModelProperty
(
value
=
"第三方支付交易序号"
)
private
String
platformTradeNo
;
@ApiModelProperty
(
value
=
"支付金额"
)
private
Integer
payAmount
;
@ApiModelProperty
(
value
=
"间联单号"
)
private
String
transId
;
@ApiModelProperty
(
value
=
""
)
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
e5051315
...
...
@@ -4,6 +4,7 @@ import cn.freemud.adapter.LightApplicationConvertToAssortmentSdkAdapter;
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
;
...
...
@@ -240,6 +241,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 @
e5051315
...
...
@@ -2371,7 +2371,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));
...
...
@@ -2389,16 +2391,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
{
...
...
@@ -2766,7 +2769,7 @@ public class OrderServiceImpl implements Orderservice {
orderEditRequest
.
setPayChannelType
(
PayChannelType
.
getByEbcode
(
orderPayResponse
.
getPayMode
()).
getIndex
());
}
//混合支付项
if
(
CollectionUtils
.
isNotEmpty
(
orderPayResponse
.
getPayItem
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderPayResponse
.
getPayItem
())
&&
orderPayResponse
.
getPayMode
().
equals
(
PayChannelType
.
COMB
.
getEbcode
())
)
{
orderEditRequest
.
setOrderPayItem
(
orderPayResponse
.
getPayItem
());
orderEditRequest
.
setPayChannel
(
PayChannelType
.
COMB
.
getEbcode
());
orderEditRequest
.
setPayChannelName
(
PayChannelType
.
COMB
.
getName
());
...
...
@@ -3279,8 +3282,6 @@ public class OrderServiceImpl implements Orderservice {
* @param paymentRequest
* @param partnerPayOvertime
* @param totalAmount
* @param svcAmount
* @param svcVAmount
* @param channel
* @param storeId
* @param trackingNo
...
...
@@ -3291,8 +3292,6 @@ public class OrderServiceImpl implements Orderservice {
,
PaymentRequest
paymentRequest
,
String
partnerPayOvertime
,
Integer
totalAmount
,
Integer
svcAmount
,
Integer
svcVAmount
,
String
channel
,
String
storeId
,
String
trackingNo
)
{
...
...
@@ -3304,33 +3303,70 @@ 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
(
combPayResponse
!=
null
)
{
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
;
List
<
CombPayResponse
.
PayPlatform
>
payPlatforms
=
combPayResponse
.
getData
().
getPayPlatformResponseList
();
if
(
payPlatforms
.
size
()==
0
)
{
orderPayResponse
.
setMsg
(
"混合支付:生成预支付失败"
);
return
orderPayResponse
;
}
//生成预支付参数
CombPayResponse
.
PayPlatform
payPlatform
=
combPayResponse
.
getData
().
getPayPlatformResponseList
()
CombPayResponse
.
PayPlatform
cashPay
=
payPlatforms
.
stream
()
.
filter
(
f
->
!
PayChannelType
.
SVC
.
getEbcode
().
equals
(
f
.
getEbCode
())).
findFirst
()
.
orElse
(
null
);
if
(
payPlatform
==
null
)
{
orderPayResponse
.
setMsg
(
"支付:现金支付错误"
);
return
orderPayResponse
;
}
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
combPayResponse
.
getData
().
getPayPlatformResponseList
(),
orderBean
.
getCompanyId
(),
storeId
,
totalAmount
,
svcAmount
+
svcVAmount
);
//现金+svc 现金
if
(
payPlatforms
.
size
()==
2
||
payPlatforms
.
size
()==
1
&&
cashPay
!=
null
)
{
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
combPayResponse
.
getData
().
getPayPlatformResponseList
(),
orderBean
.
getCompanyId
(),
storeId
);
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayResponse
.
setOrderId
(
orderBean
.
getOid
());
orderPayResponse
.
setPayMode
(
PayChannelType
.
COMB
.
getEbc
ode
());
orderPayResponse
.
setPayMode
(
orderPayResponse
.
getPayM
ode
());
//隐射关系
redisCache
.
save
(
RedisUtil
.
getPaymentTransIdOrderKey
(
payPlatform
.
getTransId
()),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
redisCache
.
save
(
RedisUtil
.
getPaymentTransIdOrderKey
(
cashPay
.
getTransId
()),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
//加入轮训队列
putDelMq
(
orderBean
.
getCompanyId
(),
storeId
,
orderPayResponse
.
getFmId
(),
orderBean
.
getOid
(),
PayChannelType
.
getByEbcode
(
payPlatform
.
getEbCode
()).
getIndex
().
intValue
());
putDelMq
(
orderBean
.
getCompanyId
(),
storeId
,
orderPayResponse
.
getFmId
(),
orderBean
.
getOid
(),
PayChannelType
.
getByEbcode
(
cashPay
.
getEbCode
()).
getIndex
().
intValue
());
return
orderPayResponse
;
}
//单svc
else
{
CombPayResponse
.
PayPlatform
svcPay
=
payPlatforms
.
stream
()
.
filter
(
f
->
PayChannelType
.
SVC
.
getEbcode
().
equals
(
f
.
getEbCode
())).
findFirst
()
.
orElse
(
null
);
orderPayResponse
.
setFmId
(
orderPayResponse
.
getFmId
());
orderPayResponse
.
setPayTransId
(
svcPay
.
getTransId
());
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayResponse
.
setOrderId
(
orderBean
.
getOid
());
orderPayResponse
.
setPayMode
(
PayChannelType
.
SVC
.
getEbcode
());
}
return
orderPayResponse
;
}
/**
...
...
@@ -3353,4 +3389,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());
//}
}
shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
View file @
e5051315
...
...
@@ -1676,26 +1676,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
svcPayAmount
=
svcTotalAmount
;
shoppingCartGoodsResponseVo
.
setTotalAmount
((
orderAmount
.
longValue
()-
svcPayAmount
.
longValue
()));
}
/**
BigDecimal svcPayAmount = BigDecimal.ZERO;
if (orderAmount >= amount1 + vamount) {
//throw new ServiceException(ResponseResult.USER_SVC_CARD_AMOUNT_DEFICIENCY);
svcPayAmount = new BigDecimal(amount1 + vamount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(orderAmount - svcPayAmount.multiply(new BigDecimal(100)).longValue());
}
else {
svcPayAmount = new BigDecimal(orderAmount - deliveryAmount).divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
shoppingCartGoodsResponseVo.setTotalAmount(deliveryAmount.longValue());
}
*/
BigDecimal
bigDecimal
=
new
BigDecimal
(
svcPayAmount
);
String
amountStr
=
bigDecimal
.
divide
(
new
BigDecimal
(
100
)).
setScale
(
2
,
BigDecimal
.
ROUND_HALF_UP
).
toString
();
shoppingCartGoodsResponseVo
.
setSvcPayAmount
(
amountStr
);
shoppingCartGoodsResponseVo
.
setSvcDiscountDesc
(
"储值卡支付¥"
+
amountStr
);
//BigDecimal bigDecimal = new BigDecimal(orderAmount);
//String amountStr = bigDecimal.divide(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP).toString();
//shoppingCartGoodsResponseVo.setTotalAmount(0L);
//shoppingCartGoodsResponseVo.setSvcDiscountDesc("储值卡支付¥" + amountStr);
}
/**
...
...
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