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
d97450d0
Commit
d97450d0
authored
May 07, 2020
by
dingkai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
app预支付、支付回调改造
parent
206c3f1d
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
312 additions
and
86 deletions
+312
-86
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
+10
-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
+9
-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
+27
-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
+91
-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
-50
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 @
d97450d0
...
...
@@ -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
;
...
...
@@ -2219,13 +2217,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
);
...
...
@@ -2746,7 +2744,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
);
...
...
@@ -2759,6 +2758,7 @@ public class OrderAdapter {
requestDto
.
setTotalAmount
(
totalAmount
);
requestDto
.
setCardAmount
(
cardAmount
);
requestDto
.
setOrderExtInfoDTO
(
orderExtInfoDTO
);
requestDto
.
setTransId
(
transId
);
return
requestDto
;
}
...
...
@@ -2768,7 +2768,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
);
}
}
order-application-service/src/main/java/cn/freemud/controller/OrderController.java
View file @
d97450d0
...
...
@@ -90,7 +90,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 @
d97450d0
...
...
@@ -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 @
d97450d0
...
...
@@ -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:{1}"
,
"创建预支付交易号序列"
),
PAYMENT_TRANSID_ORDER_KEY
(
"kgd:payment:transid:order:{1}"
,
"交易订单key"
),
;
private
String
code
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/service/AppOrderService.java
View file @
d97450d0
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.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
java.util.Map
;
/**
* app订单服务
...
...
@@ -18,4 +23,9 @@ public interface AppOrderService {
* 创建预支付
*/
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
);
/**
* 支付回调
*/
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 @
d97450d0
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 @
d97450d0
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.QueryOrdersResponseDto
;
import
cn.freemud.entities.vo.CreateOrderVo
;
import
cn.freemud.entities.vo.CreatePrepayVo
;
import
cn.freemud.entities.vo.PaysuccessNoticeMessage
;
import
java.util.Map
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
@@ -29,4 +33,9 @@ public interface OrderAdapterService {
*/
BaseResponse
createPrepay
(
CreatePrepayVo
createPrepayVo
);
/**
* 支付回调处理
*/
String
paySuccessCallback
(
PaysuccessNoticeMessage
message
);
}
order-application-service/src/main/java/cn/freemud/service/Orderservice.java
View file @
d97450d0
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 @
d97450d0
...
...
@@ -4,17 +4,23 @@ 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.ShoppingCartGoodsDto
;
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.RedisUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
...
...
@@ -41,6 +47,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
AppOrderServiceImpl
implements
AppOrderService
{
...
...
@@ -55,6 +63,10 @@ public class AppOrderServiceImpl implements AppOrderService {
private
OrderCenterSdkService
orderCenterSdkService
;
@Autowired
private
PaymentNewService
paymentNewService
;
@Autowired
private
RedisCache
redisCache
;
@Autowired
private
RedisService
redisService
;
/**
* 不支持会员卡
...
...
@@ -96,12 +108,25 @@ 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
);
}
@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
);
...
...
@@ -192,4 +217,5 @@ public class AppOrderServiceImpl implements AppOrderService {
}
}
}
}
order-application-service/src/main/java/cn/freemud/service/impl/MallOrderServiceImpl.java
View file @
d97450d0
...
...
@@ -331,7 +331,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
;
...
...
@@ -385,11 +385,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 @
d97450d0
package
cn
.
freemud
.
service
.
impl
;
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.base.util.DateUtil
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.entities.dto.*
;
import
cn.freemud.entities.dto.shoppingCart.NewShoppingCartClearDto
;
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.LogUtil
;
import
cn.freemud.utils.RedisUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentCloudPrinter
;
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.application.sdk.api.log.ErrorLog
;
import
com.freemud.sdk.api.assortment.order.enums.OrderSourceType
;
import
com.freemud.sdk.api.assortment.order.request.order.ConfirmOrderRequest
;
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.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
...
...
@@ -29,19 +52,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
)
{
...
...
@@ -94,7 +129,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
...
...
@@ -109,6 +144,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
);
}
}
/**
* 标准点餐参数校验
* @param createOrderVo
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderCommonService.java
View file @
d97450d0
...
...
@@ -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 @
d97450d0
...
...
@@ -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
;
...
...
@@ -132,8 +132,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}"
)
...
...
@@ -216,6 +214,8 @@ public class OrderServiceImpl implements Orderservice {
private
PaymentNewClient
paymentNewClient
;
@Autowired
private
MallOrderServiceImpl
mallOrderService
;
@Autowired
private
OrderAdapterService
orderAdapterService
;
...
...
@@ -331,33 +331,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
();
...
...
@@ -468,25 +443,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
);
...
...
@@ -551,7 +517,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"
);
...
...
@@ -1783,13 +1749,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
());
...
...
@@ -1821,7 +1788,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
);
}
}
...
...
@@ -1883,9 +1850,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
));
...
...
@@ -1905,7 +1872,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
());
...
...
@@ -1915,7 +1882,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"
);
...
...
@@ -2245,7 +2212,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
);
}
}
...
...
@@ -2341,13 +2308,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 @
d97450d0
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 @
d97450d0
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