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
ca7bdebc
Commit
ca7bdebc
authored
May 18, 2020
by
胡超
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
784159bf
87b6f7ba
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
301 additions
and
88 deletions
+301
-88
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+27
-6
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
+37
-0
order-application-service/src/main/java/cn/freemud/enums/RedisCacheEnum.java
+6
-1
order-application-service/src/main/java/cn/freemud/service/AppOrderService.java
+7
-0
order-application-service/src/main/java/cn/freemud/service/MallOrderService.java
+10
-0
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
+6
-0
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
+6
-2
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
+29
-1
order-application-service/src/main/java/cn/freemud/service/impl/EncircleOrderServiceImpl.java
+5
-1
order-application-service/src/main/java/cn/freemud/service/impl/MallOrderServiceImpl.java
+2
-5
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
+79
-5
order-application-service/src/main/java/cn/freemud/service/impl/OrderCommonService.java
+21
-15
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+17
-51
order-application-service/src/main/java/cn/freemud/service/impl/RedisService.java
+30
-0
order-application-service/src/main/java/cn/freemud/utils/RedisUtil.java
+18
-0
No files found.
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
ca7bdebc
...
...
@@ -38,7 +38,6 @@ import cn.freemud.request.wechat.dto.SignMessageBuilder;
import
cn.freemud.service.impl.OrderCommonService
;
import
cn.freemud.utils.*
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformPartnerWxappConfig
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
...
...
@@ -73,7 +72,6 @@ import org.springframework.stereotype.Component;
import
java.awt.geom.Point2D
;
import
java.math.BigDecimal
;
import
java.net.URL
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.spec.InvalidKeySpecException
;
import
java.text.DecimalFormat
;
...
...
@@ -2259,13 +2257,13 @@ public class OrderAdapter {
/**
* 支付信息转换
*/
public
UnifiedOrderRequest
convent2UnifiedOrderRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
Long
amount
,
Integer
cardAmount
)
{
public
UnifiedOrderRequest
convent2UnifiedOrderRequest
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
Long
amount
,
Integer
cardAmount
,
String
transId
)
{
UnifiedOrderRequest
orderPayDto
=
new
UnifiedOrderRequest
();
orderPayDto
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayDto
.
setBody
(
paymentRequest
.
getPrincipalName
());
orderPayDto
.
setNotifyUrl
(
paymentRequest
.
getReverseNotifyiDcUrl
());
orderPayDto
.
setStoreId
(
orderBean
.
getShopId
());
orderPayDto
.
setTransId
(
orderBean
.
getOid
()
);
orderPayDto
.
setTransId
(
transId
);
orderPayDto
.
setOpenId
(
paymentRequest
.
getOpenId
());
String
businessDate
=
com
.
freemud
.
application
.
sdk
.
api
.
util
.
DateUtil
.
convert2String
(
new
Date
(),
"yyyyMMdd"
);
orderPayDto
.
setBusinessDate
(
businessDate
);
...
...
@@ -2786,7 +2784,8 @@ public class OrderAdapter {
public
CreatePrepayRequestDto
convertToCreatePrepayRequestDto
(
String
partnerId
,
String
wxAppId
,
String
openId
,
String
faceCode
,
String
cardCode
,
String
payCode
,
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherOrderBean
,
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
,
long
totalAmount
,
int
cardAmount
,
OrderExtInfoDTO
orderExtInfoDTO
){
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
,
long
totalAmount
,
int
cardAmount
,
OrderExtInfoDTO
orderExtInfoDTO
,
String
transId
){
CreatePrepayRequestDto
requestDto
=
new
CreatePrepayRequestDto
();
requestDto
.
setPartnerId
(
partnerId
);
requestDto
.
setWxAppId
(
wxAppId
);
...
...
@@ -2799,6 +2798,7 @@ public class OrderAdapter {
requestDto
.
setTotalAmount
(
totalAmount
);
requestDto
.
setCardAmount
(
cardAmount
);
requestDto
.
setOrderExtInfoDTO
(
orderExtInfoDTO
);
requestDto
.
setTransId
(
transId
);
return
requestDto
;
}
...
...
@@ -2808,7 +2808,28 @@ public class OrderAdapter {
createOrderVo
.
getFaceCode
(),
createOrderVo
.
getCardCode
(),
null
,
createOrderOperateDto
.
getFatherOrderBean
(),
createOrderOperateDto
.
getProductOrderBean
(),
createOrderOperateDto
.
getTotalAmount
()
==
null
?
0
:
createOrderOperateDto
.
getTotalAmount
(),
createOrderOperateDto
.
getCardAmount
()
==
null
?
0
:
createOrderOperateDto
.
getCardAmount
(),
orderExtInfoDTO
);
createOrderOperateDto
.
getCardAmount
()
==
null
?
0
:
createOrderOperateDto
.
getCardAmount
(),
orderExtInfoDTO
,
createOrderOperateDto
.
getFatherOrderBean
().
getOid
());
}
/**
* 支付后通知失败返回信息
*/
public
String
newSendPayFaileMessage
()
{
Map
<
String
,
Object
>
map
=
Maps
.
newTreeMap
();
map
.
put
(
"code"
,
500
);
map
.
put
(
"message"
,
"failed"
);
return
gson
.
toJson
(
map
);
}
/**
* 支付后通知确认返回信息
*/
public
String
sendPaySuccessNoticeMessage
()
{
Map
<
String
,
Object
>
map
=
Maps
.
newTreeMap
();
map
.
put
(
"code"
,
0
);
map
.
put
(
"message"
,
"success"
);
return
gson
.
toJson
(
map
);
}
public
Integer
getNewOrderClient
(
String
name
)
{
...
...
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
ca7bdebc
...
...
@@ -99,7 +99,7 @@ public class OrderController {
@ApiAnnotation
(
logMessage
=
"paySuccessCallback"
)
@PostMapping
(
"/paySuccessCallback"
)
public
String
paySuccessCallback
(
@LogParams
@RequestBody
PaysuccessNoticeMessage
message
)
{
return
order
s
ervice
.
paySuccessCallback
(
message
);
return
order
AdapterS
ervice
.
paySuccessCallback
(
message
);
}
/**
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
View file @
ca7bdebc
...
...
@@ -6,15 +6,52 @@ import lombok.Data;
@Data
public
class
CreatePrepayRequestDto
{
/**
* 商户id
*/
private
String
partnerId
;
/**
* appid
*/
private
String
wxAppId
;
/**
* 用户openId
*/
private
String
openId
;
/**
* 人脸识别码code
*/
private
String
faceCode
;
/**
* 会员卡code
*/
private
String
cardCode
;
/**
* 支付渠道码
*/
private
String
payCode
;
/**
* 父订单,如果不存在,则值与productOrderBean一致
*/
private
QueryOrdersResponse
.
DataBean
.
OrderBean
fatherOrderBean
;
/**
* 商品订单
*/
private
QueryOrdersResponse
.
DataBean
.
OrderBean
productOrderBean
;
/**
* 总金额
*/
private
long
totalAmount
;
/**
* 会员卡支付金额
*/
private
int
cardAmount
;
/**
* 订单扩展信息
*/
private
OrderExtInfoDTO
orderExtInfoDTO
;
/**
* 交易请求号
*/
private
String
transId
;
}
order-application-service/src/main/java/cn/freemud/enums/RedisCacheEnum.java
View file @
ca7bdebc
...
...
@@ -23,7 +23,12 @@ public enum RedisCacheEnum {
ORDER_PLUS_DISH_LOCKKEY_PREFIX
(
"kgd:encircle:plus:dish:table:lock:"
,
"围餐下单业务LockKey"
),
ORDER_CREATE_TRANS_ID_KEY
(
"kgd:meal:trans:{0}:{1}:{2}:{3}"
,
"围餐下单多次创建预支付生成不同TRANS_ID"
),
ORDER_CREATE_PRE_PARMENT_INTO_LOCK
(
"kgd:meal:pre:payment:lock:"
,
"围餐订单唤起预支付锁定不可下单"
),
ORDER_CACHE_WEICAN_TRANSID_INFO
(
"kgd:meal:payment:trans:order:"
,
"缓存围餐支付transId"
);
ORDER_CACHE_WEICAN_TRANSID_INFO
(
"kgd:meal:payment:trans:order:"
,
"缓存围餐支付transId"
),
PAYMENT_TRANSID_SEQUENCE_KEY
(
"kgd:payment:transid:sequence:{0}"
,
"创建预支付交易号序列"
),
PAYMENT_TRANSID_ORDER_KEY
(
"kgd:payment:transid:order:{0}"
,
"交易订单key"
),
;
private
String
code
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/service/AppOrderService.java
View file @
ca7bdebc
...
...
@@ -5,6 +5,11 @@ import cn.freemud.entities.vo.AppCreateOrderVo;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
java.util.Map
;
/**
* app订单服务
...
...
@@ -25,4 +30,6 @@ public interface AppOrderService {
* APP下单,下单带商品信息,不经过购物车服务,不唤起支付
*/
BaseResponse
createOrder
(
AppCreateOrderVo
createOrderVo
,
AssortmentCustomerInfoVo
customerInfo
);
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
);
}
order-application-service/src/main/java/cn/freemud/service/MallOrderService.java
View file @
ca7bdebc
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.OrderAffirmRequestVO
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.entities.vo.encircle.EmptyTableNumberVo
;
import
cn.freemud.entities.vo.encircle.EncircleReserveBaseVo
;
import
java.util.Map
;
/**
* 商城订单业务操作类
* @version V1.0
...
...
@@ -28,4 +33,9 @@ public interface MallOrderService {
*/
BaseResponse
orderAffirm
(
OrderAffirmRequestVO
requestVO
);
/**
* 支付回调
*/
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
);
}
order-application-service/src/main/java/cn/freemud/service/OrderAdapterService.java
View file @
ca7bdebc
...
...
@@ -4,6 +4,7 @@ import cn.freemud.base.entity.BaseResponse;
import
cn.freemud.entities.vo.AppCreateOrderVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -35,4 +36,9 @@ public interface OrderAdapterService {
*/
BaseResponse
appCreateOrder
(
AppCreateOrderVo
createOrderVo
);
/**
* 支付回调处理
*/
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
);
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
ca7bdebc
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.*
;
import
com.freemud.sdk.api.assortment.order.enums.OrderSdkType
;
import
java.util.Map
;
/**
* 订单服务
*
...
...
@@ -25,9 +29,9 @@ public interface Orderservice {
BaseResponse
scanFaceCreateOrder
(
CreateOrderVo
createOrderVo
);
/**
* 支付
成功后回调通知
* 支付
回调
*/
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
);
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
);
/**
* 支付成功后回调通知_新版本
...
...
order-application-service/src/main/java/cn/freemud/service/impl/AppOrderServiceImpl.java
View file @
ca7bdebc
...
...
@@ -4,17 +4,26 @@ 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.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
import
cn.freemud.entities.dto.shoppingCart.ActivityDiscountsDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.entities.vo.CreateOrderResponseVo
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.enums.OrderBeanType
;
import
cn.freemud.enums.PayStatus
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.TradeState
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.AppOrderService
;
import
cn.freemud.utils.BeanUtil
;
import
cn.freemud.utils.RedisUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
...
...
@@ -52,6 +61,8 @@ import java.util.ArrayList;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
AppOrderServiceImpl
implements
AppOrderService
{
...
...
@@ -66,6 +77,10 @@ public class AppOrderServiceImpl implements AppOrderService {
private
OrderCenterSdkService
orderCenterSdkService
;
@Autowired
private
PaymentNewService
paymentNewService
;
@Autowired
private
RedisCache
redisCache
;
@Autowired
private
RedisService
redisService
;
//门店SDK
@Autowired
...
...
@@ -111,9 +126,11 @@ public class AppOrderServiceImpl implements AppOrderService {
extInfo
.
setOpenid
(
createPrepayVo
.
getOpenId
());
String
faceCode
=
""
;
String
cardCode
=
""
;
String
transId
=
createPrepayVo
.
getOrderCode
()
+
redisService
.
increment
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
createPrepayVo
.
getOrderCode
()),
1
,
TimeUnit
.
DAYS
);
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
createPrepayVo
.
getPartnerId
(),
createPrepayVo
.
getPayAppId
(),
createPrepayVo
.
getOpenId
(),
faceCode
,
cardCode
,
createPrepayVo
.
getPayCode
(),
createOrderOperateDto
.
getFatherOrderBean
(),
createOrderOperateDto
.
getProductOrderBean
(),
createOrderOperateDto
.
getTotalAmount
(),
createOrderOperateDto
.
getCardAmount
(),
extInfo
);
createOrderOperateDto
.
getCardAmount
(),
extInfo
,
transId
);
redisService
.
savePaymentTransIdOrder
(
RedisUtil
.
getPaymentTransIdOrderKey
(
transId
),
productOrderBean
.
getOid
(),
30L
,
TimeUnit
.
MINUTES
);
return
orderservice
.
createPrepayOrder
(
createPrepayRequestDto
);
}
...
...
@@ -157,6 +174,17 @@ public class AppOrderServiceImpl implements AppOrderService {
@Override
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
)
{
String
paySuccessCallbackResult
=
orderservice
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
// 删除订单自增缓存
redisCache
.
delete
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
orderBean
.
getOid
()));
// 删除支付交易号订单关系缓存
redisCache
.
delete
(
RedisUtil
.
getPaymentTransIdOrderKey
(
message
.
getTrans_id
()));
return
paySuccessCallbackResult
;
}
private
void
checkOrderBefore
(
CreatePrepayVo
createPrepayVo
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
if
(!
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderBean
.
getPayStatus
())){
throw
new
ServiceException
(
ResponseResult
.
ORDER_HAS_PAID
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/EncircleOrderServiceImpl.java
View file @
ca7bdebc
...
...
@@ -18,6 +18,7 @@ import cn.freemud.enums.*;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.EncircleOrderService
;
import
cn.freemud.service.OrderAdapterService
;
import
cn.freemud.service.thirdparty.ShoppingCartClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
cn.freemud.utils.AmountUtils
;
...
...
@@ -105,6 +106,9 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
private
MealCacheManager
mealCacheManager
;
@Autowired
private
ActivityCalculationDiscountService
calculationDiscountService
;
@Autowired
private
OrderAdapterService
orderAdapterService
;
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
...
...
@@ -522,7 +526,7 @@ public class EncircleOrderServiceImpl implements EncircleOrderService {
message
.
setOpenid
(
assortmentCustomerInfoVo
.
getOpenId
());
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
order
Common
Service
.
paySuccessCallback
(
message
);
order
Adapter
Service
.
paySuccessCallback
(
message
);
}
}
else
{
return
ResponseUtil
.
error
(
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getCode
(),
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getMessage
(),
null
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/MallOrderServiceImpl.java
View file @
ca7bdebc
...
...
@@ -338,7 +338,7 @@ public class MallOrderServiceImpl implements MallOrderService {
public
OrderPayResponse
getPreOrderPay
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
trackingNo
,
Integer
cardAmount
)
{
try
{
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
);
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
,
orderBean
.
getOid
()
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
UnifiedOrderResponse
>
responseBase
=
standardPaymentService
.
unifiedOrder
(
request
,
trackingNo
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
responseBase
.
getCode
()))
{
return
null
;
...
...
@@ -392,11 +392,8 @@ public class MallOrderServiceImpl implements MallOrderService {
return
this
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
@Override
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
)
{
if
(
MapUtils
.
isEmpty
(
orderBeans
))
{
ErrorLog
.
printErrorLog
(
"paySuccessCallback_queryOrderById_faild"
,
"paySuccessCallback"
,
message
,
new
Exception
());
return
gson
.
toJson
(
message
);
}
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
String
partnerId
=
orderBean
.
getCompanyId
();
String
userId
=
orderBean
.
getUserId
();
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderAdapterServiceImpl.java
View file @
ca7bdebc
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.adapter.OrderAdapter
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.AppCreateOrderVo
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.entities.vo.encircle.CreateReserveOrderVo
;
import
cn.freemud.enums.OrderChannelType
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.UserLoginChannelEnum
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.*
;
import
cn.freemud.utils.RedisUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.enums.IappIdType
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
import
com.freemud.sdk.api.assortment.order.enums.OrderSourceType
;
import
com.freemud.sdk.api.assortment.order.util.LockUtils
;
import
com.google.gson.Gson
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.MapUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -30,19 +41,31 @@ import org.springframework.stereotype.Service;
* @Copyright: ${DATE.YARE} www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
@Slf4j
@Service
public
class
OrderAdapterServiceImpl
implements
OrderAdapterService
{
private
final
String
PAY_SUCCESS_KEY
=
"pay_success_key:"
;
private
static
Gson
gson
=
new
Gson
();
@Autowired
private
EncircleOrderService
encircleOrderService
;
@Autowired
private
Order
service
orders
ervice
;
private
Order
ServiceImpl
orderS
ervice
;
@Autowired
private
AssortmentCustomerInfoManager
assortmentCustomerInfoManager
;
@Autowired
private
MallOrderService
mallOrderService
;
@Autowired
private
AppOrderService
appOrderService
;
@Autowired
private
RedisCache
redisCache
;
@Autowired
private
OrderAdapter
orderAdapter
;
@Autowired
private
OrderCommonService
orderCommonService
;
@Override
public
BaseResponse
createOrderNew
(
CreateOrderVo
createOrderVo
)
{
...
...
@@ -95,7 +118,7 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
if
(
ObjectUtils
.
notEqual
(
baseResponse
.
getCode
(),
ResponseResult
.
SUCCESS
.
getCode
())){
return
baseResponse
;
}
return
order
s
ervice
.
createOrderNew
(
createOrderVo
);
return
order
S
ervice
.
createOrderNew
(
createOrderVo
);
}
@Override
...
...
@@ -110,6 +133,57 @@ public class OrderAdapterServiceImpl implements OrderAdapterService {
throw
new
UnsupportedOperationException
(
"暂不支持渠道:"
+
assortmentCustomerInfoVo
.
getChannel
());
}
@Override
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
)
{
//添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
String
paySuccessKey
=
PAY_SUCCESS_KEY
+
message
.
getTrans_id
();
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
paySuccessKey
)){
return
orderAdapter
.
newSendPayFaileMessage
();
}
try
{
ConfirmOrderDto
confirmOrderDto
=
orderAdapter
.
convent2ConfirmOrderDto
(
message
);
// 通过交易号从缓存中拿订单号,如果有数据则实际订单号为其value值
String
orderId
=
redisCache
.
getValue
(
RedisUtil
.
getPaymentTransIdOrderKey
(
confirmOrderDto
.
getOrderId
()));
if
(
StringUtils
.
isNotBlank
(
orderId
))
{
log
.
info
(
"从缓存中获取的订单数据,trackingNo:{},transId:{},orderId:{}"
,
LogTreadLocal
.
getTrackingNo
(),
confirmOrderDto
.
getOrderId
(),
orderId
);
confirmOrderDto
.
setOrderId
(
orderId
);
}
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
=
orderService
.
getOrderBeanByOrderId
(
confirmOrderDto
.
getOrderId
());
if
(
MapUtils
.
isEmpty
(
orderBeans
))
{
log
.
error
(
"paySuccessCallback_queryOrderById_faild, trackingNo:{},PaysuccessNoticeMessage:{}"
,
LogTreadLocal
.
getTrackingNo
(),
gson
.
toJson
(
message
));
return
gson
.
toJson
(
message
);
}
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
/**
* 围餐处理
*/
if
(
"meals"
.
equals
(
orderBean
.
getSource
()))
{
return
orderCommonService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
/**
* 微商城处理
*/
if
(
OrderSourceType
.
SAASMALL
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
return
mallOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
/**
* app订单处理
*/
if
(
OrderSourceType
.
APP
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
return
appOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
/**
* 默认点餐处理
*/
return
orderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
catch
(
Exception
e
)
{
throw
e
;
}
finally
{
//删除分布式锁
redisCache
.
delete
(
"saas:lockAfter:"
+
paySuccessKey
);
}
}
/**
* APP下单,下单带商品信息,不经过购物车服务,不唤起支付
*/
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderCommonService.java
View file @
ca7bdebc
...
...
@@ -4,12 +4,16 @@ import cn.freemud.adapter.MessageNoticeAdapter;
import
cn.freemud.adapter.OrderAdapter
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.ConfirmOrderDto
;
import
cn.freemud.entities.dto.OrderExtInfoDto
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.dto.ShoppingCartBaseResponse
;
import
cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto
;
import
cn.freemud.entities.vo.CreateOrderResponseVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
cn.freemud.enums.OrderBeanType
;
import
cn.freemud.enums.PayStatus
;
import
cn.freemud.enums.RedisCacheEnum
;
import
cn.freemud.enums.ResponseResult
;
...
...
@@ -18,6 +22,7 @@ import cn.freemud.redis.RedisCache;
import
cn.freemud.service.thirdparty.ShoppingCartClient
;
import
cn.freemud.utils.DateTimeUtil
;
import
cn.freemud.utils.LogUtil
;
import
cn.freemud.utils.RedisUtil
;
import
cn.freemud.utils.ValidationCode
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -52,6 +57,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.sql.Time
;
import
java.text.MessageFormat
;
import
java.util.Date
;
import
java.util.Map
;
...
...
@@ -92,6 +98,8 @@ public class OrderCommonService {
private
MessageNoticeAdapter
messageNoticeAdapter
;
@Autowired
private
MessageCenterClient
messageNoticeClient
;
@Autowired
private
RedisService
redisService
;
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
/**
...
...
@@ -111,10 +119,8 @@ public class OrderCommonService {
OrderExtInfoDto
orderExtInfoDto
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
)
==
null
?
new
OrderExtInfoDto
()
:
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
if
(
orderBean
.
getAmount
()
>
0
){
try
{
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
);
Long
increment
=
redisCache
.
opsForValue
().
increment
(
MessageFormat
.
format
(
RedisCacheEnum
.
ORDER_CREATE_TRANS_ID_KEY
.
getCode
(),
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getBarCounter
(),
orderBean
.
getOid
()),
1
);
request
.
setTransId
(
orderBean
.
getOid
()
+
increment
);
String
transId
=
orderBean
.
getOid
()
+
redisService
.
increment
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
orderBean
.
getOid
()),
1L
,
TimeUnit
.
DAYS
);
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
,
transId
);
if
(
SDKCommonBaseContextWare
.
getProfile
().
equals
(
SDKCommonBaseContextWare
.
profiles
.
DEFAULT
.
getProfile
())
||
SDKCommonBaseContextWare
.
getProfile
().
equals
(
SDKCommonBaseContextWare
.
profiles
.
DEV
.
getProfile
())
...
...
@@ -122,7 +128,7 @@ public class OrderCommonService {
request
.
setAmount
(
1L
);
}
ApiLog
.
info
(
"支付transId :{},payRequest:{}"
,
request
.
getTransId
(),
JSON
.
toJSONString
(
request
));
redis
Cache
.
save
(
RedisCacheEnum
.
ORDER_CACHE_WEICAN_TRANSID_INFO
.
getCode
()+
request
.
getTransId
(),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
redis
Service
.
savePaymentTransIdOrder
(
RedisUtil
.
getPaymentTransIdOrderKey
(
transId
),
orderBean
.
getOid
(),
1L
,
TimeUnit
.
DAYS
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
UnifiedOrderResponse
>
responseBase
=
standardPaymentService
.
unifiedOrder
(
request
,
LogThreadLocal
.
getTrackingNo
());
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
responseBase
.
getCode
()))
{
return
null
;
...
...
@@ -219,15 +225,9 @@ public class OrderCommonService {
* @param message
* @return
*/
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
){
//拉取订单详细信息
BaseQueryOrderRequest
baseQueryOrderRequest
=
new
BaseQueryOrderRequest
();
baseQueryOrderRequest
.
setOrderId
(
message
.
getTrans_id
());
baseQueryOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
QueryOrderByIdResponse
queryOrderByIdResponse
=
orderCenterSdkService
.
queryOrderById
(
baseQueryOrderRequest
);
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
queryOrderByIdResponse
.
getData
().
getExtInfo
(),
OrderExtInfoDto
.
class
);
//判断订单支付状态 订单已支付则发起退款
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
=
queryOrderByIdResponse
.
getData
();
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
)
{
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
OrderExtInfoDto
extInfo
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
OrderExtInfoDto
.
class
);
if
(
PayStatus
.
HAVE_PAID
.
getCode
().
equals
(
orderBean
.
getPayStatus
())
&&
ObjectUtils
.
equals
(
1
,
orderBean
.
getPayType
())){
//发起退款 本期不考虑 极端情况
}
...
...
@@ -272,8 +272,14 @@ public class OrderCommonService {
LogUtil
.
error
(
"paySuccessCallback_payAccess_faild"
,
JSON
.
toJSONString
(
message
),
JSON
.
toJSONString
(
groupOrderResponse
));
return
this
.
newSendPayFaileMessage
();
}
redisCache
.
delete
(
MessageFormat
.
format
(
RedisCacheEnum
.
ORDER_CREATE_TRANS_ID_KEY
.
getCode
(),
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getBarCounter
(),
orderBean
.
getOid
()));
// 删除订单自增缓存
redisCache
.
delete
(
RedisUtil
.
getPaymentTransIdSequenceKey
(
orderBean
.
getOid
()));
// 删除支付交易号订单关系缓存
redisCache
.
delete
(
RedisUtil
.
getPaymentTransIdOrderKey
(
message
.
getTrans_id
()));
this
.
sendPosMessage
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
orderBean
.
getOid
());
//支付回掉成功标记
redisCache
.
save
(
RedisKeyConstant
.
KGD_PAYMENT_CALLBACK_FMID
+
message
.
getOut_trade_no
(),
message
.
getOut_trade_no
(),
10L
,
TimeUnit
.
MINUTES
);
//返回调用结果
return
this
.
newSendPaySuccessNoticeMessage
();
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
ca7bdebc
...
...
@@ -45,8 +45,8 @@ import cn.freemud.interceptor.ServiceException;
import
cn.freemud.redis.RedisCache
;
import
cn.freemud.service.BuriedPointService
;
import
cn.freemud.service.CouponActivityService
;
import
cn.freemud.service.OrderAdapterService
;
import
cn.freemud.service.Orderservice
;
import
cn.freemud.service.process.WechatPush.WechatPushProcessor
;
import
cn.freemud.service.thirdparty.*
;
import
cn.freemud.utils.*
;
import
com.alibaba.fastjson.JSON
;
...
...
@@ -134,8 +134,6 @@ public class OrderServiceImpl implements Orderservice {
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
private
final
String
PAY_SUCCESS_KEY
=
"pay_success_key:"
;
private
static
Gson
gson
=
new
Gson
();
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
...
...
@@ -220,7 +218,8 @@ public class OrderServiceImpl implements Orderservice {
private
MallOrderServiceImpl
mallOrderService
;
@Autowired
private
CacheOpenPlatformPartnerWxappConfigManager
cacheOpenPlatformPartnerWxappConfigManager
;
@Autowired
private
OrderAdapterService
orderAdapterService
;
@Override
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
...
...
@@ -334,33 +333,8 @@ public class OrderServiceImpl implements Orderservice {
}
@Override
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
)
{
//添加分布式锁,如果没有取得锁直接返回失败;整个方法执行完毕后会删掉该锁
if
(!
LockUtils
.
lockAfter
(
redisCache
.
getRedisTemplate
(),
PAY_SUCCESS_KEY
+
message
.
getTrans_id
())){
return
newSendPayFaileMessage
();
}
ConfirmOrderDto
confirmOrderDto
=
orderAdapter
.
convent2ConfirmOrderDto
(
message
);
//首先判断当前订单号是否为围餐,围餐则需要截取掉订单最后一位数字
String
orderId
=
redisCache
.
getValue
(
RedisCacheEnum
.
ORDER_CACHE_WEICAN_TRANSID_INFO
.
getCode
()
+
confirmOrderDto
.
getOrderId
());
if
(
StringUtils
.
isNotBlank
(
orderId
))
{
confirmOrderDto
.
setOrderId
(
orderId
);
ApiLog
.
info
(
"围餐订单回调==>orderId:{},transId:{}"
,
confirmOrderDto
.
getOrderId
(),
orderId
);
}
Map
<
String
,
OrderBean
>
orderBeans
=
getOrderBeanByOrderId
(
confirmOrderDto
.
getOrderId
());
if
(
MapUtils
.
isEmpty
(
orderBeans
))
{
ErrorLog
.
printErrorLog
(
"paySuccessCallback_queryOrderById_faild"
,
"paySuccessCallback"
,
message
,
new
Exception
());
return
gson
.
toJson
(
message
);
}
public
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
,
ConfirmOrderDto
confirmOrderDto
,
Map
<
String
,
QueryOrdersResponseDto
.
DataBean
.
OrderBean
>
orderBeans
)
{
OrderBean
orderBean
=
orderBeans
.
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
if
(
"meals"
.
equals
(
orderBean
.
getSource
()))
{
//围餐
message
.
setTrans_id
(
confirmOrderDto
.
getOrderId
());
return
orderCommonService
.
paySuccessCallback
(
message
);
}
// 商城订单处理
if
(
OrderSourceType
.
SAASMALL
.
getCode
().
equals
(
orderBean
.
getSource
()))
{
return
mallOrderService
.
paySuccessCallback
(
message
,
confirmOrderDto
,
orderBeans
);
}
String
oid
=
StringUtils
.
isNotEmpty
(
orderBean
.
getParentCode
())
&&
!
"0"
.
equals
(
orderBean
.
getParentCode
())
?
orderBean
.
getParentCode
()
:
orderBean
.
getOid
();
String
partnerId
=
orderBean
.
getCompanyId
();
String
userId
=
orderBean
.
getUserId
();
...
...
@@ -471,25 +445,16 @@ public class OrderServiceImpl implements Orderservice {
requestDto
.
setOpenId
(
orderExtInfoDto
!=
null
?
orderExtInfoDto
.
getOpenid
()
:
""
);
buriedPointService
.
BuriedPointPayment
(
requestDto
,
orderBean
);
// 推荐优惠插件用户支付完成数据上报
// if (message.getTotal_fee() != 0) {
// orderBean.setStatus(OrderStatus.TAKE_ORDER.getCode());
// wechatPushProcessor.statusOrderPay(orderBean, sessionId, message.getPaid_no(), message.getOut_trade_no()
// , message.getEndTransId(), message.getPlatformMchId(), message.getTerminalId());
// }
// 开通会员卡
if
(
StringUtils
.
isNotBlank
(
ruleId
))
{
this
.
activateMemberCard
(
partnerId
,
ruleId
,
oid
,
userId
);
}
//支付回掉成功标记
redisCache
.
save
(
RedisKeyConstant
.
KGD_PAYMENT_CALLBACK_FMID
+
message
.
getOut_trade_no
(),
message
.
getOut_trade_no
(),
10L
,
TimeUnit
.
MINUTES
);
//删除分布式锁
redisCache
.
delete
(
"saas:lockAfter:"
+
PAY_SUCCESS_KEY
+
message
.
getTrans_id
());
return
sendPaySuccessNoticeMessage
();
}
p
rivate
Map
<
String
,
OrderBean
>
getOrderBeanByOrderId
(
String
orderId
)
{
p
ublic
Map
<
String
,
OrderBean
>
getOrderBeanByOrderId
(
String
orderId
)
{
// 订单查询:若结果集只有一个orderBean,则为普通订单,否则为会员卡订单(父子订单)
Map
<
String
,
OrderBean
>
result
=
new
HashMap
<>();
QueryRelationOrderByIdResponseDto
queryOrderByIdResponseDto
=
getQueryRelationOrderByIdResponseDto
(
orderId
);
...
...
@@ -554,7 +519,7 @@ public class OrderServiceImpl implements Orderservice {
message
.
setPlatformMchId
(
newMessage
.
getPlatformMchId
());
message
.
setTerminalId
(
newMessage
.
getAppId
());
message
.
setRuleId
(
newMessage
.
getRuleId
());
String
res
=
paySuccessCallback
(
message
);
String
res
=
orderAdapterService
.
paySuccessCallback
(
message
);
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
res
);
if
(
jsonObject
.
containsKey
(
"code"
))
{
Integer
code
=
(
Integer
)
jsonObject
.
get
(
"code"
);
...
...
@@ -1825,13 +1790,14 @@ public class OrderServiceImpl implements Orderservice {
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
createPrepayRequestDto
.
getOpenId
(),
createPrepayRequestDto
.
getPartnerId
(),
createPrepayRequestDto
.
getWxAppId
(),
createPrepayRequestDto
.
getPayCode
());
long
totalAmount
=
createPrepayRequestDto
.
getTotalAmount
();
String
cardCode
=
createPrepayRequestDto
.
getCardCode
();
String
transId
=
createPrepayRequestDto
.
getTransId
();
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
cardCode
))
{
orderPayResponse
=
getPreOrderPay
(
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getCardAmount
());
orderPayResponse
=
getPreOrderPay
(
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getCardAmount
()
,
transId
);
}
else
if
(
totalAmount
>
0
&&
StringUtils
.
isNotBlank
(
cardCode
))
{
//svc卡支付
orderPayResponse
=
svcPay
(
cardCode
,
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
LogThreadLocal
.
getTrackingNo
());
orderPayResponse
=
svcPay
(
cardCode
,
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
transId
,
LogThreadLocal
.
getTrackingNo
());
}
else
{
// 0元订单如果不需要支付,自定义支付单号
orderPayResponse
=
getOrderPayResponse
(
paymentRequest
,
createPrepayRequestDto
.
getFatherOrderBean
());
...
...
@@ -1863,7 +1829,7 @@ public class OrderServiceImpl implements Orderservice {
message
.
setOpenid
(
createPrepayRequestDto
.
getOpenId
());
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
this
.
paySuccessCallback
(
message
);
orderAdapterService
.
paySuccessCallback
(
message
);
return
ResponseUtil
.
success
(
createOrderResponse
);
}
}
...
...
@@ -1925,9 +1891,9 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
error
(
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getCode
(),
ResponseResultEnum
.
PAY_UNIFIED_ORDER_ERROR
.
getMessage
(),
null
);
}
public
OrderPayResponse
getPreOrderPay
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
trackingNo
,
Integer
cardAmount
)
{
public
OrderPayResponse
getPreOrderPay
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
trackingNo
,
Integer
cardAmount
,
String
transId
)
{
try
{
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
);
UnifiedOrderRequest
request
=
orderAdapter
.
convent2UnifiedOrderRequest
(
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
,
transId
);
com
.
freemud
.
application
.
sdk
.
api
.
base
.
BaseResponse
<
UnifiedOrderResponse
>
responseBase
=
standardPaymentService
.
unifiedOrder
(
request
,
trackingNo
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
responseBase
.
getCode
()))
{
log
.
error
(
"支付SDK返回信息错误,trackingNo:{} request:{} response:{}"
,
trackingNo
,
JSONObject
.
toJSONString
(
request
),
JSONObject
.
toJSONString
(
responseBase
));
...
...
@@ -1947,7 +1913,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
public
OrderPayResponse
svcPay
(
String
cardCode
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
trackingNo
)
{
public
OrderPayResponse
svcPay
(
String
cardCode
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
tra
nsId
,
String
tra
ckingNo
)
{
CodePayRequest
request
=
new
CodePayRequest
();
String
partnerId
=
orderBean
.
getCompanyId
();
request
.
setBody
(
orderBean
.
getShopName
());
...
...
@@ -1957,7 +1923,7 @@ public class OrderServiceImpl implements Orderservice {
request
.
setStoreId
(
orderBean
.
getShopId
());
// request.setStoreId("10086");
request
.
setAmount
(
orderBean
.
getAmount
());
request
.
setTransId
(
orderBean
.
getOid
()
);
request
.
setTransId
(
transId
);
request
.
setStationId
(
"1"
);
request
.
setOperatorId
(
"1"
);
request
.
setVer
(
"2"
);
...
...
@@ -2287,7 +2253,7 @@ public class OrderServiceImpl implements Orderservice {
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
//0元订单内部调支付成功
this
.
paySuccessCallback
(
message
);
orderAdapterService
.
paySuccessCallback
(
message
);
return
ResponseUtil
.
success
(
createOrderResponse
);
}
}
...
...
@@ -2383,13 +2349,13 @@ public class OrderServiceImpl implements Orderservice {
}
//唤起微信支付
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
createOrderVo
.
getCardCode
())
&&
StringUtils
.
isBlank
(
createOrderVo
.
getFaceCode
()))
{
orderPayResponse
=
getPreOrderPay
(
fatherBeanListOne
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
cardAmount
);
orderPayResponse
=
getPreOrderPay
(
fatherBeanListOne
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
cardAmount
,
fatherBeanListOne
.
getOid
()
);
return
orderPayResponse
;
}
//储值卡支付
if
(
totalAmount
>
0
&&
StringUtils
.
isNotBlank
(
createOrderVo
.
getCardCode
()))
{
//svc卡支付
orderPayResponse
=
svcPay
(
createOrderVo
.
getCardCode
(),
fatherBeanListOne
,
paymentRequest
,
LogThreadLocal
.
getTrackingNo
());
orderPayResponse
=
svcPay
(
createOrderVo
.
getCardCode
(),
fatherBeanListOne
,
paymentRequest
,
fatherBeanListOne
.
getOid
(),
LogThreadLocal
.
getTrackingNo
());
return
orderPayResponse
;
}
//扫脸支付
...
...
order-application-service/src/main/java/cn/freemud/service/impl/RedisService.java
0 → 100644
View file @
ca7bdebc
package
cn
.
freemud
.
service
.
impl
;
import
cn.freemud.enums.RedisCacheEnum
;
import
cn.freemud.redis.RedisCache
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
RedisService
{
@Autowired
private
RedisCache
redisCache
;
/**
* 指定的key值自增,并指定缓存过期时间
*/
public
Long
increment
(
String
key
,
long
expire
,
TimeUnit
timeUnit
)
{
Long
increment
=
redisCache
.
opsForValue
().
increment
(
key
,
1
);
redisCache
.
updateTTL
(
key
,
expire
,
timeUnit
);
return
increment
;
}
/**
* 保存支付交易好订单关系,并指定缓存过期时间
*/
public
void
savePaymentTransIdOrder
(
String
key
,
String
orderId
,
long
expire
,
TimeUnit
timeUnit
)
{
redisCache
.
save
(
key
,
orderId
,
expire
,
timeUnit
);
}
}
order-application-service/src/main/java/cn/freemud/utils/RedisUtil.java
View file @
ca7bdebc
package
cn
.
freemud
.
utils
;
import
cn.freemud.enums.RedisCacheEnum
;
import
java.text.MessageFormat
;
public
class
RedisUtil
{
private
final
static
String
BASE_URL
=
"micro_program:"
;
private
final
static
String
ENTER_SHOP_KEY
=
BASE_URL
+
"ENTER_SHOP_KEY_"
;
...
...
@@ -17,4 +21,18 @@ public class RedisUtil {
public
static
String
getCouponAppSecret
(
String
partnerId
)
{
return
COUPON_APP_SECRET
+
partnerId
;
}
/**
* 获取订单支付交易请求序列
*/
public
static
String
getPaymentTransIdSequenceKey
(
String
orderId
)
{
return
MessageFormat
.
format
(
RedisCacheEnum
.
PAYMENT_TRANSID_SEQUENCE_KEY
.
getCode
(),
orderId
);
}
/**
* 获取交易订单key
*/
public
static
String
getPaymentTransIdOrderKey
(
String
transId
){
return
MessageFormat
.
format
(
RedisCacheEnum
.
PAYMENT_TRANSID_ORDER_KEY
.
getCode
(),
transId
);
}
}
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