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
5b14488d
Commit
5b14488d
authored
Jul 06, 2021
by
ping.wu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
调用取消支付接口查询支付状态,关闭预支付订单
parent
d82e224b
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
192 additions
and
20 deletions
+192
-20
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiPaymentRespDto.java
+24
-0
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiQueryRequest.java
+34
-0
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiQueryRespDto.java
+26
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+97
-16
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
+10
-3
order-management/src/main/java/cn/freemud/management/thirdparty/MulitiPaymentClient.java
+1
-1
No files found.
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiPaymentRespDto.java
0 → 100644
View file @
5b14488d
package
cn
.
freemud
.
entities
.
dto
.
pay
;
import
lombok.Data
;
@Data
public
class
MultiPaymentRespDto
{
private
String
ebCode
;
private
String
endTransTradeNo
;
private
String
fmTradeNo
;
private
Integer
mcouponAmount
;
private
String
outOrderNo
;
private
Integer
payAmount
;
private
Integer
pcouponAmount
;
private
String
platformTradeNo
;
private
String
status
;
private
String
transId
;
private
String
ver
;
private
String
appId
;
private
String
userId
;
private
String
platformMchId
;
private
String
tradeTime
;
private
String
transCurrency
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiQueryRequest.java
0 → 100644
View file @
5b14488d
package
cn
.
freemud
.
entities
.
dto
.
pay
;
import
lombok.Data
;
import
lombok.ToString
;
@Data
@ToString
public
class
MultiQueryRequest
{
/**
* 开启渠道端查询,默认不开启
*/
private
boolean
enable_platform_data_query
;
/**
* 外部交易流水号,由上游系统生成,需保证唯一(支付标识)
*/
private
String
outOrderNo
;
/**
* 商户编号(由非码提供)
*/
private
Integer
partnerId
;
/**
* 商家门店号(在线支付需要提前定义)
*/
private
String
storeId
;
/**
* 接口版本,默认30
*/
private
String
ver
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/pay/MultiQueryRespDto.java
0 → 100644
View file @
5b14488d
package
cn
.
freemud
.
entities
.
dto
.
pay
;
import
lombok.Data
;
import
java.util.List
;
/**
* 聚合查询返回
*/
@Data
public
class
MultiQueryRespDto
<
T
>
{
private
int
code
;
private
String
msg
;
private
T
data
;
@lombok
.
Data
public
class
Data
{
public
List
<
MultiPaymentRespDto
>
queryList
;
}
}
\ No newline at end of file
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
5b14488d
...
...
@@ -13,7 +13,7 @@
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.adapter.*
;
import
cn.freemud.amp.body.MessagePushNewMqBody
;
//
import cn.freemud.amp.body.MessagePushNewMqBody;
import
cn.freemud.amqp.Header
;
import
cn.freemud.amqp.MQAction
;
import
cn.freemud.amqp.MQMessage
;
...
...
@@ -24,26 +24,29 @@ import cn.freemud.base.util.DateUtil;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.MCCafeDeliveryBaseResponse
;
//
import cn.freemud.entities.dto.MCCafeDeliveryBaseResponse;
import
cn.freemud.entities.dto.PayAccessResponse
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean
;
import
cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto
;
import
cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto
;
import
cn.freemud.entities.dto.delivery.OrderRemindRequestDto
;
import
cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto
;
import
cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto
;
import
cn.freemud.entities.dto.delivery.ResRiderTrackDto
;
//
import cn.freemud.entities.dto.delivery.OrderRemindRequestDto;
//
import cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto;
//
import cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto;
//
import cn.freemud.entities.dto.delivery.ResRiderTrackDto;
import
cn.freemud.entities.dto.delivery.*
;
import
cn.freemud.entities.dto.ecology.SendMessageRequest
;
import
cn.freemud.entities.dto.ecology.SendMessageRequest
;
import
cn.freemud.entities.dto.ecology.SendMessageResponse
;
import
cn.freemud.entities.dto.ecology.SubscribeMessageRequest
;
//
import cn.freemud.entities.dto.ecology.SendMessageRequest;
//
import cn.freemud.entities.dto.ecology.SendMessageResponse;
//
import cn.freemud.entities.dto.ecology.SubscribeMessageRequest;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayRequestDto
;
import
cn.freemud.entities.dto.order.FacePayResponseDto
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.pay.MultiPaymentRespDto
;
import
cn.freemud.entities.dto.pay.MultiQueryRequest
;
import
cn.freemud.entities.dto.pay.MultiQueryRespDto
;
import
cn.freemud.entities.dto.promotion.*
;
import
cn.freemud.entities.dto.product.AttributeValue
;
import
cn.freemud.entities.dto.product.GroupDetail
;
...
...
@@ -84,7 +87,7 @@ import cn.freemud.utils.*;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
//
import com.alibaba.fastjson.TypeReference;
import
com.freemud.api.assortment.datamanager.entity.db.*
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
...
...
@@ -106,7 +109,7 @@ import com.freemud.application.sdk.api.ordercenter.entities.PayItem;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
import
com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum
;
//
import com.freemud.application.sdk.api.ordercenter.enums.ProductTypeEnum;
import
com.freemud.application.sdk.api.ordercenter.enums.*
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
...
...
@@ -138,9 +141,9 @@ import com.freemud.application.sdk.api.storecenter.response.StoreResponse;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.structure.request.PushMessageNoticeDto
;
import
com.freemud.application.sdk.api.structure.service.MessageCenterClient
;
import
com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig
;
import
com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg
;
import
com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue
;
//
import com.freemud.sdk.api.assortment.message.config.MessageOfficialRefundPushMqConfig;
//
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsg;
//
import com.freemud.sdk.api.assortment.message.entity.MpTemplateMsgDataValue;
import
com.freemud.sdk.api.assortment.message.enums.MessageEventType
;
import
com.freemud.sdk.api.assortment.message.request.MessagePushOrderTemplateRequest
;
import
com.freemud.sdk.api.assortment.message.request.MessageTemplateRequest
;
...
...
@@ -172,8 +175,8 @@ import org.apache.commons.collections4.MapUtils;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.builder.ToStringBuilder
;
import
org.joda.time.DateTime
;
import
org.springframework.beans.BeanUtils
;
//
import org.joda.time.DateTime;
//
import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
...
...
@@ -195,6 +198,8 @@ import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
public
class
OrderServiceImpl
implements
Orderservice
{
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
private
static
final
Integer
MULITI_RESPONSE
=
200
;
private
static
final
String
SUCCESS
=
"SUCCESS"
;
private
static
Gson
gson
=
new
Gson
();
...
...
@@ -227,6 +232,9 @@ public class OrderServiceImpl implements Orderservice {
@Value
(
"${query.order.es:true}"
)
private
Boolean
queryOrderEs
;
@Value
(
"${query.pay.order:true}"
)
private
Boolean
queryPayOrder
;
@Autowired
private
AssortmentCloudPrinterManager
cloudPrinterManager
;
// @Autowired
...
...
@@ -1674,6 +1682,10 @@ public class OrderServiceImpl implements Orderservice {
if
(!
OrderStatus
.
WAIT_PAY
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_DELETE_ERROR
.
getCode
(),
"订单状态不允许删除"
);
}
//关闭预支付
if
(
queryPayOrder
&&
closePrePay
(
orderBean
)){
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_DELETE_ERROR
.
getCode
(),
"订单状态不允许删除"
);
}
// DeleteOrderDto deleteOrderDto = orderAdapter.convent2DeleteOrderDto(deleteOrderVo.getOid());
//
// DeleteOrderRequest var1 = new DeleteOrderRequest();
...
...
@@ -3790,6 +3802,75 @@ public class OrderServiceImpl implements Orderservice {
orderSdkService
.
updateAbnormalState
(
sdkUpdateAbnormalState
);
}
/**
* 关闭预支付
*/
private
boolean
closePrePay
(
OrderBean
orderBean
)
{
//是否支付成功
boolean
paySuccess
=
false
;
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
List
<
QueryOrdersResponse
.
DataBean
.
OrderBean
.
OrderPayItem
>
orderPayItemList
=
orderBean
.
getOrderPayItem
();
if
(
null
!=
orderPayItemList
&&
orderPayItemList
.
size
()
>
0
)
{
Integer
partnerId
=
Integer
.
valueOf
(
orderBean
.
getCompanyId
());
MultiQueryRequest
request
=
new
MultiQueryRequest
();
request
.
setEnable_platform_data_query
(
false
);
request
.
setPartnerId
(
partnerId
);
request
.
setStoreId
(
orderBean
.
getShopId
());
request
.
setOutOrderNo
(
orderBean
.
getOid
());
//查询聚合支付结果
MultiQueryRespDto
<
MultiQueryRespDto
.
Data
>
response
=
comPayClient
.
paymentApplicationQuery
(
request
,
partnerId
);
if
(
response
!=
null
&&
response
.
getData
()
!=
null
&&
Objects
.
equals
(
response
.
getCode
(),
MULITI_RESPONSE
))
{
List
<
MultiPaymentRespDto
>
multiPaymentRespDtoArrayList
=
response
.
getData
().
getQueryList
();
if
(
null
!=
multiPaymentRespDtoArrayList
&&
multiPaymentRespDtoArrayList
.
size
()
>
0
)
{
int
successData
=
0
;
for
(
MultiPaymentRespDto
multiPaymentRespDto
:
multiPaymentRespDtoArrayList
)
{
if
(
Objects
.
equals
(
multiPaymentRespDto
.
getStatus
(),
SUCCESS
))
{
successData
++;
}
}
if
(
successData
>=
multiPaymentRespDtoArrayList
.
size
())
{
paySuccess
=
true
;
}
}
}
}
else
{
//判断当前订单是否存在预支付订单
if
(
extInfo
!=
null
&&
StringUtils
.
isNotEmpty
(
extInfo
.
getFmId
()))
{
//订单状态未支付且存在预支付订单:
// 1.查询预支付订单支付状态
PaymentQueryRequest
paymentQueryRequest
=
new
PaymentQueryRequest
();
paymentQueryRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
paymentQueryRequest
.
setStoreId
(
orderBean
.
getShopId
());
paymentQueryRequest
.
setFmId
(
extInfo
.
getFmId
());
paymentQueryRequest
.
setVer
(
"2"
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentQueryResponse
>
queryResponseBaseResponse
=
paymentNewService
.
query
(
paymentQueryRequest
,
LogThreadLocal
.
getTrackingNo
());
//判断预支付订单状态
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getCode
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_PAY_GETPRE_MESSAGE_ERROR
);
}
//判断当前预支付订单是否已经支付成功
if
(
ObjectUtils
.
equals
(
TradeState
.
SUCCESS
.
getCode
(),
queryResponseBaseResponse
.
getData
().
getTradeState
()))
{
paySuccess
=
true
;
}
}
}
if
(!
paySuccess
){
PaymentCloseUnifiedOrderRequest
closeUnifiedOrderRequest
=
new
PaymentCloseUnifiedOrderRequest
();
closeUnifiedOrderRequest
.
setFmId
(
extInfo
.
getFmId
());
closeUnifiedOrderRequest
.
setVer
(
"2"
);
closeUnifiedOrderRequest
.
setPartnerId
(
orderBean
.
getCompanyId
());
closeUnifiedOrderRequest
.
setStoreId
(
orderBean
.
getShopId
());
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
PaymentCloseUnifiedOrderResponse
>
cancelNewUnifiedOrder
=
paymentNewService
.
cancelNewUnifiedOrder
(
closeUnifiedOrderRequest
,
LogThreadLocal
.
getTrackingNo
());
if
(
ObjectUtils
.
notEqual
(
ResponseResult
.
SUCCESS
.
getCode
(),
cancelNewUnifiedOrder
.
getCode
()))
{
throw
new
ServiceException
(
ResponseResult
.
ORDER_PRE_PAYMENT_CLOSE_FAILED
);
}
}
return
paySuccess
;
}
private
void
closeHistoryPrePay
(
OrderBean
orderBean
)
{
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/ComPayClient.java
View file @
5b14488d
...
...
@@ -14,6 +14,8 @@
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.entities.dto.pay.CombPayResponse
;
import
cn.freemud.entities.dto.pay.MultiQueryRequest
;
import
cn.freemud.entities.dto.pay.MultiQueryRespDto
;
import
com.freemud.sdk.api.assortment.order.request.payment.CombPayRequest
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
...
...
@@ -26,11 +28,16 @@ import org.springframework.web.bind.annotation.RequestMapping;
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
public
interface
ComPayClient
{
// TODO: 21-4-1 待合并
/**
* 统一下单
*
混合支付
统一下单
*/
@PostMapping
(
"/payment/application/pay"
)
CombPayResponse
combPay
(
@RequestBody
CombPayRequest
combPayRequest
,
@RequestHeader
(
"partnerId"
)
String
partnerId
);
/**
* 混合支付查询接口
*/
@PostMapping
(
"/payment/application/query"
)
MultiQueryRespDto
<
MultiQueryRespDto
.
Data
>
paymentApplicationQuery
(
MultiQueryRequest
multiQueryRequest
,
@RequestHeader
(
"partnerId"
)
Integer
partnerId
);
}
order-management/src/main/java/cn/freemud/management/thirdparty/MulitiPaymentClient.java
View file @
5b14488d
...
...
@@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
public
interface
MulitiPaymentClient
{
/**
*
统一活动查询
接口
*
混合支付退款
接口
*/
@PostMapping
(
"/payment/application/refund"
)
MultiOrderRefundResponse
paymentApplicationRefund
(
MultiOrderRefundRequest
multiOrderRefundRequest
,
@RequestHeader
(
"partnerId"
)
String
partnerId
);
...
...
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