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
1bd57386
Commit
1bd57386
authored
Jan 06, 2023
by
查志伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/退款支持优化' into develop
parents
ae4e50c3
62ca6839
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
45 additions
and
21 deletions
+45
-21
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CancelOrderRequest.java
+1
-2
order-application-service/src/main/java/cn/freemud/adapter/CancelOrderRequestAdapter.java
+0
-2
order-management/src/main/java/cn/freemud/management/adapter/PaymentSdkAdapter.java
+3
-1
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
+33
-16
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtInfoDto.java
+8
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/CancelOrderRequest.java
View file @
1bd57386
...
...
@@ -15,7 +15,6 @@ package com.freemud.sdk.api.assortment.order.request.order;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
@@ -59,7 +58,7 @@ public class CancelOrderRequest extends BaseConfig {
若为2,默认做【创建】+【审核通过】,售后单状态为【退货中】
若为5,默认做【创建】+【同意并退货完成】,售后单状态【已退货】
若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
*
*
cn.freemud.enums.AfterSalesOrderCreateEventEnum
*/
private
Integer
createEvent
;
...
...
order-application-service/src/main/java/cn/freemud/adapter/CancelOrderRequestAdapter.java
View file @
1bd57386
...
...
@@ -34,8 +34,6 @@ public class CancelOrderRequestAdapter {
req
.
setOperator
(
"admin"
);
req
.
setOperationClient
(
OperationClientEnum
.
STATE_6
.
getIndex
());
}
//若为4,默认做【创建】+【同意并退款完成】,售后单状态为【完成】
req
.
setCreateEvent
(
4
);
// 这里给默认值,外面调用者 自己的根据业务判断退款 状态
req
.
setRefundState
(
AfterSalesRefunStateEnum
.
STATE_1
.
getIndex
());
req
.
setReqRemark
(
reason
);
...
...
order-management/src/main/java/cn/freemud/management/adapter/PaymentSdkAdapter.java
View file @
1bd57386
...
...
@@ -7,6 +7,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.sdk.api.assortment.order.request.order.MultiOrderRefundRequest
;
import
lombok.SneakyThrows
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
...
...
@@ -32,7 +33,7 @@ public class PaymentSdkAdapter {
private
String
refundNotifyCallback
;
public
PayRefundRequestDto
getOrderRefundRequest
(
String
partnerId
,
String
storeCode
,
String
orderCode
,
BigDecimal
refundAmount
,
String
payNo
,
String
extInfoStr
)
{
BigDecimal
refundAmount
,
String
payNo
,
String
extInfoStr
,
String
reason
)
{
PayRefundRequestDto
refundRequestDTO
=
new
PayRefundRequestDto
();
refundRequestDTO
.
setPartnerId
(
partnerId
);
refundRequestDTO
.
setStoreId
(
storeCode
);
...
...
@@ -44,6 +45,7 @@ public class PaymentSdkAdapter {
refundRequestDTO
.
setOrgPayFmId
(
payNo
);
refundRequestDTO
.
setOpenid
(
orderExtInfoDto
.
getOpenid
());
refundRequestDTO
.
setRefundId
(
getRefundSerialNo
().
toString
());
refundRequestDTO
.
setRefundDesc
(
StringUtils
.
isNotBlank
(
reason
)
?
reason
:
"商家退款"
);
return
refundRequestDTO
;
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/PaymentHandle.java
View file @
1bd57386
...
...
@@ -18,6 +18,7 @@ import com.alibaba.fastjson.JSONObject;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.ordercenter.entities.v1.OrderBeanV1
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
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.response.OrderBaseResp
;
...
...
@@ -36,7 +37,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
...
...
@@ -95,7 +98,17 @@ public class PaymentHandle {
refundResponse
=
this
.
agentPayRefund
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
getRefundAmount
(
orderBean
),
ext
.
getPayTransId
());
}
else
{
//正常订单现金退款 paymentcenter/refund
refundResponse
=
this
.
payRefund
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
getRefundAmount
(
orderBean
),
orderBean
.
getPayVoucher
(),
orderBean
.
getExtInfo
(),
request
.
getReason
());
PayRefundRequestDto
req
=
paymentSdkAdapter
.
getOrderRefundRequest
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
getRefundAmount
(
orderBean
),
orderBean
.
getPayVoucher
(),
orderBean
.
getExtInfo
(),
request
.
getReason
());
// 抖音订单,退款时需要传递商品信息
if
(
OrderClientType
.
TIKTOKPAY
.
getIndex
().
toString
().
equals
(
orderBean
.
getOrderClient
()))
{
Map
<
String
,
String
>
extParam
=
new
HashMap
<>();
OrderExtInfoDto
ext
=
JSON
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
extParam
.
put
(
"tt_goods"
,
ext
.
getTtCouponIds
());
extParam
.
put
(
"tt_oid"
,
orderBean
.
getOid
());
req
.
setExtendParams
(
extParam
);
}
refundResponse
=
this
.
payRefund
(
req
);
}
}
}
catch
(
OrderServiceException
orderEx
)
{
...
...
@@ -137,7 +150,17 @@ public class PaymentHandle {
refundResponse
=
this
.
agentPayRefund
(
order
.
getPartnerId
(),
order
.
getStoreId
(),
order
.
getOrderCode
(),
order
.
getActualPayAmount
(),
ext
.
getPayTransId
());
}
else
{
//正常订单现金退款 paymentcenter/refund
refundResponse
=
this
.
payRefund
(
order
.
getPartnerId
(),
order
.
getStoreId
(),
order
.
getOrderCode
(),
order
.
getActualPayAmount
(),
order
.
getPayRequestNo
(),
order
.
getExtInfo
(),
reason
);
PayRefundRequestDto
req
=
paymentSdkAdapter
.
getOrderRefundRequest
(
order
.
getPartnerId
(),
order
.
getStoreId
(),
order
.
getOrderCode
(),
order
.
getActualPayAmount
(),
order
.
getPayRequestNo
(),
order
.
getExtInfo
(),
reason
);
// 抖音订单,退款时需要传递商品信息
if
(
OrderClientType
.
TIKTOKPAY
.
getIndex
().
equals
(
order
.
getOrderClient
()))
{
OrderExtInfoDto
ext
=
JSON
.
parseObject
(
order
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
Map
<
String
,
String
>
extParam
=
new
HashMap
<>();
extParam
.
put
(
"tt_goods"
,
ext
.
getTtCouponIds
());
extParam
.
put
(
"tt_oid"
,
order
.
getOrderCode
());
req
.
setExtendParams
(
extParam
);
}
refundResponse
=
this
.
payRefund
(
req
);
}
}
}
catch
(
OrderServiceException
orderEx
)
{
...
...
@@ -160,19 +183,15 @@ public class PaymentHandle {
/**
* 纯现金支付退款,非代付和混合支付退款
*
* @param re
ason 退款原因
* @return
* @param re
fundReq 退款请求
* @return
退款结果
*/
private
PayRefundResponse
payRefund
(
String
partnerId
,
String
storeCode
,
String
orderCode
,
BigDecimal
refundAmount
,
String
payNo
,
String
extInfoStr
,
String
reason
)
{
private
PayRefundResponse
payRefund
(
PayRefundRequestDto
refundReq
)
{
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
PayRefundRequestDto
req
=
paymentSdkAdapter
.
getOrderRefundRequest
(
partnerId
,
storeCode
,
orderCode
,
refundAmount
,
payNo
,
extInfoStr
);
//抖音支付必传
req
.
setRefundDesc
(
reason
==
null
?
"商家退款"
:
reason
);
if
(
refundAmount
.
longValue
()
<=
0
)
{
return
handlePayRefundResponse
(
refundStatus
,
req
.
getRefundId
());
if
(
refundReq
.
getRefundAmount
()
<=
0
)
{
return
handlePayRefundResponse
(
refundStatus
,
refundReq
.
getRefundId
());
}
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
=
this
.
orderPayRefund
(
req
);
BaseResponse
<
OrderRefundResponse
>
orderRefundResponse
=
this
.
orderPayRefund
(
re
fundRe
q
);
String
message
=
null
;
if
(
orderRefundResponse
==
null
)
{
refundStatus
=
PayRefundStatus
.
RUNNING
;
...
...
@@ -180,7 +199,7 @@ public class PaymentHandle {
refundStatus
=
this
.
getFinalRefundStatus
(
Integer
.
valueOf
(
orderRefundResponse
.
getCode
()));
message
=
orderRefundResponse
.
getMessage
();
}
PayRefundResponse
payRefundResponse
=
handlePayRefundResponse
(
refundStatus
,
req
.
getRefundId
());
PayRefundResponse
payRefundResponse
=
handlePayRefundResponse
(
refundStatus
,
re
fundRe
q
.
getRefundId
());
if
(
message
!=
null
)
{
payRefundResponse
.
setMessage
(
message
);
}
...
...
@@ -334,9 +353,7 @@ public class PaymentHandle {
PayRefundStatus
refundStatus
=
PayRefundStatus
.
SUCCESS
;
PayRefundRequestDto
orderRefundRequest
=
paymentSdkAdapter
.
getOrderRefundRequest
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
getRefundAmount
(
orderBean
),
orderBean
.
getPayVoucher
(),
orderBean
.
getExtInfo
());
//抖音支付必传
orderRefundRequest
.
setRefundDesc
(
reason
);
.
getOrderRefundRequest
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
(),
getRefundAmount
(
orderBean
),
orderBean
.
getPayVoucher
(),
orderBean
.
getExtInfo
(),
reason
);
if
(
ObjectUtils
.
equals
(
orderBean
.
getAmount
(),
0L
))
{
return
handlePayRefundResponse
(
refundStatus
,
orderRefundRequest
.
getRefundId
());
}
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExtInfoDto.java
View file @
1bd57386
...
...
@@ -226,4 +226,12 @@ public class OrderExtInfoDto {
* svc卡支付时使用的 cardCode
*/
private
String
cardCode
;
/**
* 抖音订单商品对应的券id,多个id用 , 分隔
* 用户下单的单个订单里券的数量可能是 N 张,对应这 N 张券,
* 交易模板会为每一张券生成一个内部的虚拟券 ID,
* 这个券 ID 在核销和退款流程里会被用到。
*/
private
String
ttCouponIds
;
}
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