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
0c96f890
Commit
0c96f890
authored
Oct 25, 2023
by
rui.zhu
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/rui.zhu/退款接口逻辑调整'
parents
93b67d9f
b6319a03
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
85 additions
and
22 deletions
+85
-22
order-application-service/src/main/java/cn/freemud/adapter/OrderCancelReqAdapter.java
+2
-1
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
+3
-0
order-application-service/src/main/java/cn/freemud/service/RefundService.java
+21
-16
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundResponse.java
+6
-0
order-management/src/main/java/cn/freemud/management/enums/OrderCostType.java
+31
-0
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+21
-4
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderCancelReqAdapter.java
View file @
0c96f890
...
@@ -20,6 +20,7 @@ public class OrderCancelReqAdapter {
...
@@ -20,6 +20,7 @@ public class OrderCancelReqAdapter {
public
static
OrderCancelReq
convert
(
OrderInfoReqs
order
,
public
static
OrderCancelReq
convert
(
OrderInfoReqs
order
,
String
refundId
,
String
refundId
,
AfterSalesType
afterSalesType
,
AfterSalesType
afterSalesType
,
Boolean
isPartRefund
,
Long
refundAmount
,
Long
refundAmount
,
String
reason
,
String
reason
,
String
remark
,
String
remark
,
...
@@ -34,7 +35,7 @@ public class OrderCancelReqAdapter {
...
@@ -34,7 +35,7 @@ public class OrderCancelReqAdapter {
req
.
setOrderCode
(
order
.
getOrderCode
());
req
.
setOrderCode
(
order
.
getOrderCode
());
req
.
setReqRemark
(
remark
);
req
.
setReqRemark
(
remark
);
req
.
setReqAmount
(
refundAmount
!=
null
?
new
BigDecimal
(
refundAmount
)
:
null
);
req
.
setReqAmount
(
refundAmount
!=
null
?
new
BigDecimal
(
refundAmount
)
:
null
);
req
.
setIsPartRefund
(
refundAmount
!=
null
);
// 是否部分退
req
.
setIsPartRefund
(
isPartRefund
!=
null
&&
isPartRefund
);
// 是否部分退
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
//售后单类型 1:其他取消 2:用户取消 3:商户取消 4:未支付超时关单 5:商户接单超时取消 6:商家拒单
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
// 7:配送用户拒收 8:用户售后退货/售后退款 9:系统取消 10:客服取消 11:用户统一取消,
req
.
setAfterSalesType
(
afterSalesType
.
getIndex
());
req
.
setAfterSalesType
(
afterSalesType
.
getIndex
());
...
...
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
0c96f890
...
@@ -260,7 +260,7 @@ public class OrderController {
...
@@ -260,7 +260,7 @@ public class OrderController {
// 微商城因为没有退款原因选项 所以将用户退款说明用户作为退款原因
// 微商城因为没有退款原因选项 所以将用户退款说明用户作为退款原因
String
reason
=
StringUtils
.
isBlank
(
reqVo
.
getReason
())
String
reason
=
StringUtils
.
isBlank
(
reqVo
.
getReason
())
?
reqVo
.
getRemarks
()
:
reqVo
.
getReason
();
?
reqVo
.
getRemarks
()
:
reqVo
.
getReason
();
refundService
.
refundOrder
(
reqVo
.
getPartnerId
(),
reqVo
.
getOid
(),
reqVo
.
getRefundAmount
(),
reason
,
reqVo
.
getRemarks
(),
reqVo
.
getRefundMode
()
);
refundService
.
refundOrder
(
reqVo
,
reason
);
return
ResponseUtil
.
success
();
return
ResponseUtil
.
success
();
}
}
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/OrderRefundVo.java
View file @
0c96f890
...
@@ -55,4 +55,7 @@ public class OrderRefundVo {
...
@@ -55,4 +55,7 @@ public class OrderRefundVo {
@ApiModelProperty
(
value
=
"微商城退款方式"
,
notes
=
RefundModeEnum
.
API_DOC
)
@ApiModelProperty
(
value
=
"微商城退款方式"
,
notes
=
RefundModeEnum
.
API_DOC
)
private
Byte
refundMode
;
private
Byte
refundMode
;
@ApiModelProperty
(
"是否部分退款,默认为false"
)
private
Boolean
isPartRefund
=
false
;
}
}
order-application-service/src/main/java/cn/freemud/service/RefundService.java
View file @
0c96f890
...
@@ -10,6 +10,7 @@ import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedVo;
...
@@ -10,6 +10,7 @@ import cn.freemud.entities.dto.delivery.QueryFreightRefundSupportedVo;
import
cn.freemud.entities.dto.ecology.SendMessageRequest
;
import
cn.freemud.entities.dto.ecology.SendMessageRequest
;
import
cn.freemud.entities.dto.store.BusinessInfoDto
;
import
cn.freemud.entities.dto.store.BusinessInfoDto
;
import
cn.freemud.entities.vo.OrderDevelopRefundVo
;
import
cn.freemud.entities.vo.OrderDevelopRefundVo
;
import
cn.freemud.entities.vo.OrderRefundVo
;
import
cn.freemud.enums.AfterSalesOrderCreateEventEnum
;
import
cn.freemud.enums.AfterSalesOrderCreateEventEnum
;
import
cn.freemud.enums.PayRefundStatus
;
import
cn.freemud.enums.PayRefundStatus
;
import
cn.freemud.enums.PayStatus
;
import
cn.freemud.enums.PayStatus
;
...
@@ -114,14 +115,17 @@ public class RefundService {
...
@@ -114,14 +115,17 @@ public class RefundService {
/**
/**
* C端用户发起退款
* C端用户发起退款
*
*
* @param partnerId 商户号
* @param orderRefundVo {@link OrderRefundVo} 退款参数
* @param orderCode 订单号
* @param reason 退款原因/说明
* @param refundAmount 退款金额
* @param reason 退款原因/说明
* @param remark 退款备注
* @param refundMode 商城订单 退款模式
*/
*/
public
void
refundOrder
(
String
partnerId
,
String
orderCode
,
Long
refundAmount
,
String
reason
,
String
remark
,
Byte
refundMode
)
{
public
void
refundOrder
(
OrderRefundVo
orderRefundVo
,
String
reason
)
{
String
partnerId
=
orderRefundVo
.
getPartnerId
();
String
orderCode
=
orderRefundVo
.
getOid
();
Long
refundAmount
=
orderRefundVo
.
getRefundAmount
();
String
remark
=
orderRefundVo
.
getRemarks
();
Boolean
isPartRefund
=
orderRefundVo
.
getIsPartRefund
();
Byte
refundMode
=
orderRefundVo
.
getRefundMode
();
if
(
StringUtils
.
isEmpty
(
reason
))
reason
=
"退款"
;
if
(
StringUtils
.
isEmpty
(
reason
))
reason
=
"退款"
;
// 退款校验
// 退款校验
OrderInfoReqs
order
=
preValidRefund
(
partnerId
,
orderCode
,
refundMode
);
OrderInfoReqs
order
=
preValidRefund
(
partnerId
,
orderCode
,
refundMode
);
...
@@ -141,11 +145,11 @@ public class RefundService {
...
@@ -141,11 +145,11 @@ public class RefundService {
// 未接单
// 未接单
if
(
NewOrderStatus
.
PLACE_AN_ORDER
.
getIndex
().
equals
(
order
.
getOrderState
()))
{
if
(
NewOrderStatus
.
PLACE_AN_ORDER
.
getIndex
().
equals
(
order
.
getOrderState
()))
{
// 商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
// 商家未接单逻辑处理 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
refundOrder
(
order
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
refundOrder
(
order
,
isPartRefund
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
orderQueueService
.
backOrdersStatusChange
(
order
.
getOrderCode
(),
orderSdkAdapter
.
getOldStatus
(
order
.
getOrderState
()),
order
.
getPayState
(),
order
.
getPartnerId
());
orderQueueService
.
backOrdersStatusChange
(
order
.
getOrderCode
(),
orderSdkAdapter
.
getOldStatus
(
order
.
getOrderState
()),
order
.
getPayState
(),
order
.
getPartnerId
());
}
else
{
}
else
{
// 已接单的,创建售后单
// 已接单的,创建售后单
createAfterSales
(
order
,
refundAmount
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
createAfterSales
(
order
,
refundAmount
,
isPartRefund
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
}
}
}
}
...
@@ -219,7 +223,7 @@ public class RefundService {
...
@@ -219,7 +223,7 @@ public class RefundService {
if
(!
isCreateAfter
)
{
if
(!
isCreateAfter
)
{
// 没有已申请的售后单,创建售后单
// 没有已申请的售后单,创建售后单
createAfterSales
(
order
,
null
,
reqVo
.
getReason
(),
reqVo
.
getReason
(),
refundDeliveryFee
,
reqVo
.
getRefundMode
());
createAfterSales
(
order
,
null
,
false
,
reqVo
.
getReason
(),
reqVo
.
getReason
(),
refundDeliveryFee
,
reqVo
.
getRefundMode
());
}
}
// 调用oms的 同意退款操作
// 调用oms的 同意退款操作
OrderManagerRequest
request
=
new
OrderManagerRequest
();
OrderManagerRequest
request
=
new
OrderManagerRequest
();
...
@@ -283,11 +287,12 @@ public class RefundService {
...
@@ -283,11 +287,12 @@ public class RefundService {
* 商家未接单,取消订单逻辑处理
* 商家未接单,取消订单逻辑处理
* 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
* 1.调用支付退款 2.根据支付退款返回状态组装订单取消参数,调用订单取消接口
*/
*/
private
void
refundOrder
(
OrderInfoReqs
order
,
String
reason
,
String
remark
,
Boolean
isRefundDeliveryFee
,
Byte
refundMode
)
{
private
void
refundOrder
(
OrderInfoReqs
order
,
Boolean
isPartRefund
,
String
reason
,
String
remark
,
Boolean
isRefundDeliveryFee
,
Byte
refundMode
)
{
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
int
state
=
PayRefundStatus
.
SUCCESS
.
getCode
();
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
List
<
OrderCancelReq
.
PayRefundItem
>
refundItemList
=
new
ArrayList
<>();
PayRefundResponse
refundResponse
=
null
;
if
(
order
.
getSettlementAmount
().
longValue
()
>
0
)
{
if
(
order
.
getSettlementAmount
().
longValue
()
>
0
)
{
PayRefundResponse
refundResponse
=
paymentHandle
.
getCommonPayRefundResponse
(
order
,
reason
);
refundResponse
=
paymentHandle
.
getCommonPayRefundResponse
(
order
,
reason
);
state
=
refundResponse
.
getPayRefundStatus
().
getCode
();
state
=
refundResponse
.
getPayRefundStatus
().
getCode
();
if
(
CollectionUtils
.
isNotEmpty
(
refundResponse
.
getPayRefundItemList
()))
{
if
(
CollectionUtils
.
isNotEmpty
(
refundResponse
.
getPayRefundItemList
()))
{
refundResponse
.
getPayRefundItemList
().
forEach
(
item
->
{
refundResponse
.
getPayRefundItemList
().
forEach
(
item
->
{
...
@@ -297,9 +302,9 @@ public class RefundService {
...
@@ -297,9 +302,9 @@ public class RefundService {
});
});
}
}
}
}
Long
refundAmount
=
refundResponse
!=
null
?
refundResponse
.
getRefundAmount
().
longValue
()
:
null
;
OrderCancelReq
req
=
OrderCancelReqAdapter
.
convert
(
order
,
UUID
.
randomUUID
().
toString
(),
OrderCancelReq
req
=
OrderCancelReqAdapter
.
convert
(
order
,
UUID
.
randomUUID
().
toString
(),
AfterSalesType
.
USER_CANCEL
,
null
,
reason
,
remark
,
isRefundDeliveryFee
,
refundMode
);
AfterSalesType
.
USER_CANCEL
,
isPartRefund
,
refundAmount
,
reason
,
remark
,
isRefundDeliveryFee
,
refundMode
);
req
.
setRefundState
(
AfterSalesRefunStateEnum
.
STATE_4
.
getIndex
());
req
.
setRefundState
(
AfterSalesRefunStateEnum
.
STATE_4
.
getIndex
());
if
(
Objects
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
state
))
{
if
(
Objects
.
equals
(
PayRefundStatus
.
SUCCESS
.
getCode
(),
state
))
{
//退款成功
//退款成功
...
@@ -328,10 +333,10 @@ public class RefundService {
...
@@ -328,10 +333,10 @@ public class RefundService {
/**
/**
* 创建售后单
* 创建售后单
*/
*/
private
void
createAfterSales
(
OrderInfoReqs
order
,
Long
refundAmount
,
String
reason
,
String
remark
,
Boolean
refundDeliveryFee
,
Byte
refundMode
)
{
private
void
createAfterSales
(
OrderInfoReqs
order
,
Long
refundAmount
,
Boolean
isPartRefund
,
String
reason
,
String
remark
,
Boolean
refundDeliveryFee
,
Byte
refundMode
)
{
AfterSalesType
type
=
NewOrderStatus
.
COMPLETE
.
getIndex
().
equals
(
order
.
getOrderState
())
AfterSalesType
type
=
NewOrderStatus
.
COMPLETE
.
getIndex
().
equals
(
order
.
getOrderState
())
?
AfterSalesType
.
USER_SALE_RETURN
:
AfterSalesType
.
USER_CANCEL
;
?
AfterSalesType
.
USER_SALE_RETURN
:
AfterSalesType
.
USER_CANCEL
;
OrderCancelReq
req
=
OrderCancelReqAdapter
.
convert
(
order
,
null
,
type
,
refundAmount
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
OrderCancelReq
req
=
OrderCancelReqAdapter
.
convert
(
order
,
null
,
type
,
isPartRefund
,
refundAmount
,
reason
,
remark
,
refundDeliveryFee
,
refundMode
);
// 查询门店服务配置,退单模式为2为自动退款,判断自动退款时间,设置为0则不传入timeout,
// 查询门店服务配置,退单模式为2为自动退款,判断自动退款时间,设置为0则不传入timeout,
BusinessInfoDto
config
=
storeManager
.
queryStoreBusiness
(
order
.
getPartnerId
(),
order
.
getStoreId
());
BusinessInfoDto
config
=
storeManager
.
queryStoreBusiness
(
order
.
getPartnerId
(),
order
.
getStoreId
());
if
(
Objects
.
equals
(
config
.
getAutoChargebackOrderType
(),
2
)
&&
!
Objects
.
equals
(
config
.
getAutoChargebackOrderTime
(),
0
))
{
if
(
Objects
.
equals
(
config
.
getAutoChargebackOrderType
(),
2
)
&&
!
Objects
.
equals
(
config
.
getAutoChargebackOrderTime
(),
0
))
{
...
...
order-management/src/main/java/cn/freemud/management/entities/dto/response/pay/PayRefundResponse.java
View file @
0c96f890
...
@@ -4,6 +4,7 @@ import cn.freemud.management.enums.ResponseResult;
...
@@ -4,6 +4,7 @@ import cn.freemud.management.enums.ResponseResult;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -47,6 +48,11 @@ public class PayRefundResponse {
...
@@ -47,6 +48,11 @@ public class PayRefundResponse {
private
Boolean
partRefund
=
false
;
private
Boolean
partRefund
=
false
;
/**
/**
* 退款总额
*/
private
BigDecimal
refundAmount
;
/**
* 对退款明细的记录
* 对退款明细的记录
*/
*/
private
List
<
PayRefundItem
>
payRefundItemList
;
private
List
<
PayRefundItem
>
payRefundItemList
;
...
...
order-management/src/main/java/cn/freemud/management/enums/OrderCostType.java
0 → 100644
View file @
0c96f890
package
cn
.
freemud
.
management
.
enums
;
public
enum
OrderCostType
{
//订单费用类型 1:包装费 2:运费 3:餐盒单价 4:餐盒数量 5:会员卡费用 6:储值卡费用 7:商户小费 8:商户支付运费 9:津贴服务费 11:会员开卡费
PACKAGE_FEE
(
1
,
"包装费"
),
DELIVERY_FEE
(
2
,
"运费"
),
OPEN_MEMBER_CARD_FEE
(
11
,
"会员卡开卡费"
),
;
private
int
type
;
private
String
desc
;
OrderCostType
(
int
type
,
String
desc
)
{
this
.
type
=
type
;
this
.
desc
=
desc
;
}
public
int
getType
()
{
return
type
;
}
public
String
getDesc
()
{
return
desc
;
}
}
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
0c96f890
...
@@ -10,6 +10,7 @@ import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
...
@@ -10,6 +10,7 @@ import cn.freemud.management.entities.dto.response.pay.OrderRefundResponse;
import
cn.freemud.management.entities.dto.response.pay.PayRefundData
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundData
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PaymentQueryOrderResponseDto
;
import
cn.freemud.management.entities.dto.response.pay.PaymentQueryOrderResponseDto
;
import
cn.freemud.management.enums.OrderCostType
;
import
cn.freemud.management.enums.PaymentRefundStatus
;
import
cn.freemud.management.enums.PaymentRefundStatus
;
import
cn.freemud.management.enums.ResponseResult
;
import
cn.freemud.management.enums.ResponseResult
;
import
cn.freemud.management.intercept.OrderServiceException
;
import
cn.freemud.management.intercept.OrderServiceException
;
...
@@ -27,6 +28,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
...
@@ -27,6 +28,7 @@ import com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
import
com.freemud.application.sdk.api.ordercenter.response.OrderBaseResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.AfterSalesOrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderCostResp
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.application.sdk.api.ordercenter.util.LogUtil
;
import
com.freemud.application.sdk.api.ordercenter.util.LogUtil
;
...
@@ -83,7 +85,14 @@ public class PaymentHandle {
...
@@ -83,7 +85,14 @@ public class PaymentHandle {
public
PayRefundResponse
getCommonPayRefundResponse
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
public
PayRefundResponse
getCommonPayRefundResponse
(
OrderManagerRequest
request
,
OrderBeanV1
orderBean
)
{
PayRefundResponse
refundResponse
;
PayRefundResponse
refundResponse
;
try
{
try
{
BigDecimal
refundAmount
=
getRefundAmount
(
orderBean
.
getCompanyId
(),
new
BigDecimal
(
orderBean
.
getAmount
()),
orderBean
.
getOid
());
// 最大可退金额 = 订单实付总额 - 开通会员卡金额 退款的时候会员卡已经开通了,所以开卡费不可退
OrderCostResp
openMemberCardCost
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getOrderCostDetailList
()))
{
openMemberCardCost
=
orderBean
.
getOrderCostDetailList
().
stream
().
filter
(
c
->
Objects
.
equals
(
c
.
getCostType
(),
OrderCostType
.
OPEN_MEMBER_CARD_FEE
.
getType
())).
findFirst
().
orElse
(
null
);
}
// 最大可退金额 = 订单实付总额 - 开通会员卡金额 退款的时候会员卡已经开通了,所以开卡费不可退
BigDecimal
maxRefundAmount
=
openMemberCardCost
!=
null
?
new
BigDecimal
(
orderBean
.
getAmount
()).
subtract
(
openMemberCardCost
.
getCostAmount
())
:
new
BigDecimal
(
orderBean
.
getAmount
());
BigDecimal
refundAmount
=
getRefundAmount
(
orderBean
.
getCompanyId
(),
maxRefundAmount
,
orderBean
.
getOid
());
//订单支付明细表新saas都会存数据,ka,pass商户需要兼容
//订单支付明细表新saas都会存数据,ka,pass商户需要兼容
PayRefundResponse
multiRefundResponse
=
multiRefundService
.
multiRefund
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
refundAmount
,
orderBean
.
getOrderPayItem
());
PayRefundResponse
multiRefundResponse
=
multiRefundService
.
multiRefund
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
refundAmount
,
orderBean
.
getOrderPayItem
());
if
(
multiRefundResponse
!=
null
)
{
if
(
multiRefundResponse
!=
null
)
{
...
@@ -109,7 +118,7 @@ public class PaymentHandle {
...
@@ -109,7 +118,7 @@ public class PaymentHandle {
refundResponse
=
this
.
payRefund
(
req
);
refundResponse
=
this
.
payRefund
(
req
);
}
}
}
}
refundResponse
.
setPartRefund
(!
Objects
.
equals
(
orderBean
.
getSettlementAmount
(),
refundAmount
.
longValue
()
));
refundResponse
.
setPartRefund
(!
Objects
.
equals
(
maxRefundAmount
.
compareTo
(
refundAmount
),
0
));
}
catch
(
OrderServiceException
orderEx
)
{
}
catch
(
OrderServiceException
orderEx
)
{
ResponseResult
result
=
orderEx
.
getResult
();
ResponseResult
result
=
orderEx
.
getResult
();
refundResponse
=
new
PayRefundResponse
();
refundResponse
=
new
PayRefundResponse
();
...
@@ -139,12 +148,19 @@ public class PaymentHandle {
...
@@ -139,12 +148,19 @@ public class PaymentHandle {
public
PayRefundResponse
getCommonPayRefundResponse
(
OrderInfoReqs
order
,
String
reason
)
{
public
PayRefundResponse
getCommonPayRefundResponse
(
OrderInfoReqs
order
,
String
reason
)
{
PayRefundResponse
refundResponse
;
PayRefundResponse
refundResponse
;
try
{
try
{
BigDecimal
refundAmount
=
getRefundAmount
(
order
.
getPartnerId
(),
order
.
getSettlementAmount
(),
order
.
getOrderCode
());
// 最大可退金额 = 订单实付总额 - 开通会员卡金额 退款的时候会员卡已经开通了,所以开卡费不可退
OrderCostResp
openMemberCardCost
=
null
;
if
(
CollectionUtils
.
isNotEmpty
(
order
.
getOrderCostDetailList
()))
{
openMemberCardCost
=
order
.
getOrderCostDetailList
().
stream
().
filter
(
c
->
Objects
.
equals
(
c
.
getCostType
(),
OrderCostType
.
OPEN_MEMBER_CARD_FEE
.
getType
())).
findFirst
().
orElse
(
null
);
}
BigDecimal
maxRefundAmount
=
openMemberCardCost
!=
null
?
order
.
getSettlementAmount
().
subtract
(
openMemberCardCost
.
getCostAmount
())
:
order
.
getSettlementAmount
();
BigDecimal
refundAmount
=
getRefundAmount
(
order
.
getPartnerId
(),
maxRefundAmount
,
order
.
getOrderCode
());
PayRefundResponse
multiRefundResponse
=
multiRefundService
.
multiRefund
(
order
.
getPartnerId
(),
order
.
getStoreId
(),
order
.
getOrderCode
(),
refundAmount
,
order
.
getOrderPayItemCreateReqList
());
PayRefundResponse
multiRefundResponse
=
multiRefundService
.
multiRefund
(
order
.
getPartnerId
(),
order
.
getStoreId
(),
order
.
getOrderCode
(),
refundAmount
,
order
.
getOrderPayItemCreateReqList
());
if
(
multiRefundResponse
!=
null
)
{
if
(
multiRefundResponse
!=
null
)
{
// payment/application/refund
// payment/application/refund
refundResponse
=
multiRefundResponse
;
refundResponse
=
multiRefundResponse
;
refundResponse
.
setRefundAmount
(
refundAmount
);
}
else
{
}
else
{
OrderExtendedReq
extended
=
order
.
getOrderExtended
();
OrderExtendedReq
extended
=
order
.
getOrderExtended
();
if
(
StringUtils
.
isNotBlank
(
extended
.
getAgentPayerId
())
&&
!
Objects
.
equals
(
extended
.
getAgentPayerId
(),
order
.
getUserId
()))
{
if
(
StringUtils
.
isNotBlank
(
extended
.
getAgentPayerId
())
&&
!
Objects
.
equals
(
extended
.
getAgentPayerId
(),
order
.
getUserId
()))
{
...
@@ -166,7 +182,8 @@ public class PaymentHandle {
...
@@ -166,7 +182,8 @@ public class PaymentHandle {
refundResponse
=
this
.
payRefund
(
req
);
refundResponse
=
this
.
payRefund
(
req
);
}
}
}
}
refundResponse
.
setPartRefund
(!
Objects
.
equals
(
order
.
getSettlementAmount
().
compareTo
(
refundAmount
),
0
));
refundResponse
.
setPartRefund
(!
Objects
.
equals
(
maxRefundAmount
.
compareTo
(
refundAmount
),
0
));
refundResponse
.
setRefundAmount
(
refundAmount
);
}
catch
(
OrderServiceException
orderEx
)
{
}
catch
(
OrderServiceException
orderEx
)
{
ResponseResult
result
=
orderEx
.
getResult
();
ResponseResult
result
=
orderEx
.
getResult
();
refundResponse
=
new
PayRefundResponse
();
refundResponse
=
new
PayRefundResponse
();
...
...
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