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
c86c7c67
Commit
c86c7c67
authored
Sep 15, 2020
by
zhiheng.zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加商户号 ,灰度使用
parent
bf63ad93
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
556 additions
and
11 deletions
+556
-11
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+1
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
+2
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/PayPlatformVO.java
+10
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
+16
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/UnifiedOrderApplicationRequest.java
+33
-0
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+202
-1
order-application-service/src/main/java/cn/freemud/entities/dto/UnifiedOrderApiResponse.java
+82
-0
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
+5
-0
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
+5
-0
order-application-service/src/main/java/cn/freemud/enums/PayChannel.java
+2
-1
order-application-service/src/main/java/cn/freemud/enums/PayChannelType.java
+28
-0
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+102
-8
order-application-service/src/main/java/cn/freemud/service/thirdparty/PaymentApplicationClient.java
+33
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
+1
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
+32
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
+2
-1
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
c86c7c67
...
@@ -262,6 +262,7 @@ public class OrderSdkAdapter {
...
@@ -262,6 +262,7 @@ public class OrderSdkAdapter {
//订单重量
//订单重量
Double
orderWeight
=
sumOrderWeight
(
requestVO
.
getProducts
());
Double
orderWeight
=
sumOrderWeight
(
requestVO
.
getProducts
());
request
.
setWeight
(
orderWeight
);
request
.
setWeight
(
orderWeight
);
request
.
setOrderPayItemCreateReqList
(
requestVO
.
getOrderPayItemCreateReqList
());
return
request
;
return
request
;
}
}
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
View file @
c86c7c67
...
@@ -2,6 +2,7 @@ package com.freemud.sdk.api.assortment.order.request.order;
...
@@ -2,6 +2,7 @@ package com.freemud.sdk.api.assortment.order.request.order;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderTaskReq
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
import
com.freemud.sdk.api.assortment.order.config.BaseConfig
;
...
@@ -207,5 +208,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
...
@@ -207,5 +208,6 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
*/
private
String
ruleId
;
private
String
ruleId
;
}
}
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
}
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/PayPlatformVO.java
0 → 100644
View file @
c86c7c67
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
lombok.Data
;
@Data
public
class
PayPlatformVO
{
private
String
ebcode
;
private
Long
amount
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/ProductVO.java
0 → 100644
View file @
c86c7c67
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
ProductVO
{
private
String
id
;
private
BigDecimal
quantity
;
private
Integer
seq
;
private
Long
price
;
private
String
name
;
private
String
salesType
=
"NORMAL"
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/payment/UnifiedOrderApplicationRequest.java
0 → 100644
View file @
c86c7c67
package
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
request
.
payment
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
UnifiedOrderApplicationRequest
{
private
List
<
PayPlatformVO
>
platforms
;
private
String
openId
;
private
String
notifyUrl
;
private
Integer
invoiceFlag
;
private
Long
amount
;
private
Long
vipAmount
;
private
Long
undisAmount
;
private
String
body
;
private
String
outOrderNo
;
private
List
<
ProductVO
>
products
;
private
String
goodsTag
;
private
String
partnerId
;
private
String
storeId
;
private
String
businessDate
;
private
String
stationId
=
"1"
;
private
String
operatorId
=
"1"
;
private
String
transId
;
private
String
foodOrderType
;
private
String
appId
;
private
String
payCode
;
private
String
payTimeOutTime
;
private
String
ebCode
;
}
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
c86c7c67
...
@@ -51,11 +51,15 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
...
@@ -51,11 +51,15 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderSettlementType;
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.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.dto.promotion.GoodsStockDTO
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.promotioncenter.request.promotion.ActivityUpdateStockRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.enums.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.PayPlatformVO
;
import
com.freemud.sdk.api.assortment.order.request.payment.ProductVO
;
import
com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.CreateOrderFlowResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.CreateOrderFlowResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
...
@@ -71,6 +75,7 @@ import org.apache.commons.lang.StringUtils;
...
@@ -71,6 +75,7 @@ import org.apache.commons.lang.StringUtils;
import
org.apache.commons.lang.time.FastDateFormat
;
import
org.apache.commons.lang.time.FastDateFormat
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.awt.geom.Point2D
;
import
java.awt.geom.Point2D
;
...
@@ -78,7 +83,9 @@ import java.math.BigDecimal;
...
@@ -78,7 +83,9 @@ import java.math.BigDecimal;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.spec.InvalidKeySpecException
;
import
java.security.spec.InvalidKeySpecException
;
import
java.text.DecimalFormat
;
import
java.text.DecimalFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.function.Function
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -88,6 +95,10 @@ import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
...
@@ -88,6 +95,10 @@ import static cn.freemud.constant.OrderRefundConstant.ALLOW_REFUND;
public
class
OrderAdapter
{
public
class
OrderAdapter
{
private
static
FastDateFormat
yyyyMMddHHmmss
=
FastDateFormat
.
getInstance
(
"yyyy-MM-dd HH:mm:ss"
,
Locale
.
CHINA
);
private
static
FastDateFormat
yyyyMMddHHmmss
=
FastDateFormat
.
getInstance
(
"yyyy-MM-dd HH:mm:ss"
,
Locale
.
CHINA
);
public
final
static
String
TAKECODEKEY
=
"takecode"
;
public
static
final
String
REDIS_KEY_SEP
=
":"
;
public
static
final
String
numberChar
=
"0123456789"
;
public
static
final
String
numberCharWithoutZero
=
"12345"
;
private
static
String
SPMCHID
=
"1237482502"
;
private
static
String
SPMCHID
=
"1237482502"
;
// private static String SPWXAPPID = "wx8244c7c48c7d45de";
// private static String SPWXAPPID = "wx8244c7c48c7d45de";
...
@@ -120,7 +131,8 @@ public class OrderAdapter {
...
@@ -120,7 +131,8 @@ public class OrderAdapter {
// private RedisCache redisCache;
// private RedisCache redisCache;
@Autowired
@Autowired
private
OrderCommonService
orderCommonService
;
private
OrderCommonService
orderCommonService
;
@Autowired
private
RedisTemplate
redisTemplate
;
private
static
Gson
gson
=
new
Gson
();
private
static
Gson
gson
=
new
Gson
();
/**
/**
...
@@ -262,6 +274,7 @@ public class OrderAdapter {
...
@@ -262,6 +274,7 @@ public class OrderAdapter {
createOrderDto
.
setActivityUpdateStockRequest
(
activityUpdateStockRequest
);
createOrderDto
.
setActivityUpdateStockRequest
(
activityUpdateStockRequest
);
}
}
createOrderDto
.
setPayChannelType
(
createOrderVo
.
getPayChannelType
());
createOrderDto
.
setPayChannelType
(
createOrderVo
.
getPayChannelType
());
createOrderDto
.
setOrderPayItemCreateReqList
(
createOrderVo
.
getOrderPayItemCreateReqList
());
return
createOrderDto
;
return
createOrderDto
;
}
}
...
@@ -3152,4 +3165,192 @@ public class OrderAdapter {
...
@@ -3152,4 +3165,192 @@ public class OrderAdapter {
return
StringUtils
.
isNotBlank
(
payChannel
)
&&
OrderAdapter
.
PAY_CODE_10102
.
equalsIgnoreCase
(
payChannel
);
return
StringUtils
.
isNotBlank
(
payChannel
)
&&
OrderAdapter
.
PAY_CODE_10102
.
equalsIgnoreCase
(
payChannel
);
}
}
/**
* 生成取餐码
* @param partnerId 商户ID
* @param storeId 门店ID
* @return
*/
public
String
generateTackCode
(
String
partnerId
,
String
storeId
){
String
pickUpGoodsNo
=
generateNumber
(
6
);
String
key
=
this
.
getOrderTackCodeKey
(
partnerId
,
storeId
);
if
(!
redisTemplate
.
opsForHash
().
hasKey
(
key
,
storeId
+
pickUpGoodsNo
))
{
redisTemplate
.
opsForHash
().
put
(
key
,
storeId
+
pickUpGoodsNo
,
pickUpGoodsNo
);
redisTemplate
.
expire
(
key
,
getSecondsNextEarlyMorning
(),
TimeUnit
.
SECONDS
);
}
else
{
generateTackCode
(
partnerId
,
storeId
);
}
return
pickUpGoodsNo
;
}
/**
* 获取取餐码key
* @param partnerId
* @return
*/
public
String
getOrderTackCodeKey
(
String
partnerId
,
String
storeId
){
Date
currentDay
=
new
Date
();
String
todayStr
=
formatDate
(
currentDay
);
StringBuilder
key
=
new
StringBuilder
(
TAKECODEKEY
).
append
(
REDIS_KEY_SEP
)
.
append
(
partnerId
)
.
append
(
REDIS_KEY_SEP
)
.
append
(
storeId
)
.
append
(
REDIS_KEY_SEP
)
.
append
(
todayStr
);
return
key
.
toString
();
}
public
static
SimpleDateFormat
defaultDateFormater
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
private
String
formatDate
(
Date
date
){
return
defaultDateFormater
.
format
(
date
);
}
/**
* 返回一个定长的随机字符串(只包含大小写字母、数字)
*
* @param length
* 随机字符串长度
* @return 随机字符串
*/
public
static
String
generateNumber
(
int
length
)
{
StringBuffer
sb
=
new
StringBuffer
();
Random
random
=
new
Random
();
for
(
int
i
=
0
;
i
<
length
;
i
++)
{
if
(
i
==
0
){
sb
.
append
(
numberCharWithoutZero
.
charAt
(
random
.
nextInt
(
numberCharWithoutZero
.
length
())));
}
else
{
sb
.
append
(
numberChar
.
charAt
(
random
.
nextInt
(
numberChar
.
length
())));
}
}
return
sb
.
toString
();
}
private
Long
getSecondsNextEarlyMorning
(){
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DAY_OF_YEAR
,
1
);
cal
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
cal
.
set
(
Calendar
.
SECOND
,
0
);
cal
.
set
(
Calendar
.
MINUTE
,
0
);
cal
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
(
cal
.
getTimeInMillis
()
-
System
.
currentTimeMillis
())
/
1000
;
}
/**
* 支付信息转换
*/
public
UnifiedOrderApplicationRequest
convent2CombPayOrderRequest
(
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
Long
amount
,
Integer
cardAmount
,
String
partnerPayOvertime
)
{
UnifiedOrderApplicationRequest
orderPayDto
=
new
UnifiedOrderApplicationRequest
();
orderPayDto
.
setEbCode
(
paymentRequest
.
getPayCode
());
orderPayDto
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayDto
.
setBody
(
paymentRequest
.
getPrincipalName
());
orderPayDto
.
setNotifyUrl
(
paymentRequest
.
getReverseNotifyiDcUrl
());
orderPayDto
.
setStoreId
(
orderBean
.
getShopId
());
orderPayDto
.
setOpenId
(
paymentRequest
.
getOpenId
());
String
businessDate
=
com
.
freemud
.
application
.
sdk
.
api
.
util
.
DateUtil
.
convert2String
(
new
Date
(),
"yyyyMMdd"
);
orderPayDto
.
setBusinessDate
(
businessDate
);
orderPayDto
.
setAmount
(
amount
);
orderPayDto
.
setUndisAmount
(
1L
);
orderPayDto
.
setVipAmount
(
Long
.
valueOf
(
cardAmount
));
orderPayDto
.
setAppId
(
paymentRequest
.
getWxAppId
());
orderPayDto
.
setPayTimeOutTime
(
StringUtils
.
defaultIfBlank
(
partnerPayOvertime
,
"30"
));
List
<
ProductVO
>
productVOS
=
new
ArrayList
<
ProductVO
>();
if
(
CollectionUtils
.
isNotEmpty
(
orderBean
.
getProductList
()))
{
orderBean
.
getProductList
().
forEach
(
orderProductBean
->
{
ProductVO
productBean
=
new
ProductVO
();
productBean
.
setId
(
orderProductBean
.
getProductId
());
productBean
.
setQuantity
(
BigDecimal
.
valueOf
(
orderProductBean
.
getNumber
()));
productBean
.
setSeq
(
orderProductBean
.
getSequence
());
productBean
.
setSalesType
(
"NORMAL"
);
productBean
.
setPrice
(
orderProductBean
.
getPrice
());
productBean
.
setName
(
orderProductBean
.
getProductName
());
productVOS
.
add
(
productBean
);
});
}
orderPayDto
.
setProducts
(
productVOS
);
orderPayDto
.
setPayCode
(
paymentRequest
.
getPayCode
());
orderPayDto
.
setFoodOrderType
(
getFoodOrderType
(
orderBean
.
getOrderType
()));
List
<
PayPlatformVO
>
platforms
=
new
ArrayList
<>();
if
(
null
!=
orderPayItemCreateReqList
&&
orderPayItemCreateReqList
.
size
()>
0
){
orderPayItemCreateReqList
.
forEach
(
OrderPayItem
->
{
PayPlatformVO
payPlatformVO
=
new
PayPlatformVO
();
payPlatformVO
.
setAmount
(
OrderPayItem
.
getPayAmount
().
longValue
());
payPlatformVO
.
setEbcode
(
getEbCode4PayOrderCenter
(
OrderPayItem
.
getPayChannelType
()));
platforms
.
add
(
payPlatformVO
);
});
}
orderPayDto
.
setPlatforms
(
platforms
);
orderPayDto
.
setOutOrderNo
(
orderBean
.
getOid
());
return
orderPayDto
;
}
public
OrderPayResponse
convent2OrderCombPayResponse
(
UnifiedOrderApiResponse
unifiedOrderResponse
)
{
OrderPayResponse
responseDto
=
new
OrderPayResponse
();
responseDto
.
setFmId
(
unifiedOrderResponse
.
getFmTradeNo
());
responseDto
.
setMsg
(
unifiedOrderResponse
.
getMessage
());
responseDto
.
setPayEbcode
(
unifiedOrderResponse
.
getEbCode
());
responseDto
.
setPayId
(
unifiedOrderResponse
.
getPrepayId
());
OrderPayResponse
.
PayOrderBean
payBean
=
new
OrderPayResponse
.
PayOrderBean
();
payBean
.
setAppid
(
unifiedOrderResponse
.
getAppId
());
payBean
.
setNonceStr
(
unifiedOrderResponse
.
getNonceStr
());
payBean
.
setPackageX
(
unifiedOrderResponse
.
get_package
());
payBean
.
setSign
(
unifiedOrderResponse
.
getPaySign
());
payBean
.
setSignType
(
unifiedOrderResponse
.
getPaySignType
());
payBean
.
setTimestamp
(
unifiedOrderResponse
.
getTimestamp
());
payBean
.
setAliPayOrder
(
unifiedOrderResponse
.
getPayAccount
());
responseDto
.
setPayOrder
(
payBean
);
responseDto
.
setStatusCode
(
unifiedOrderResponse
.
getCode
());
return
responseDto
;
}
/**
* @nots 基础服务映射,存储数据库用 payChannel 映射 payChannelType java类
* @param payChannelType
* @return
*/
public
String
getPayChannel4SharedOrder
(
Integer
payChannelType
)
{
String
payChannel
=
""
;
switch
(
payChannelType
)
{
case
1
:
payChannel
=
"10211"
;
break
;
case
2
:
payChannel
=
"10102"
;
break
;
case
3
:
payChannel
=
"支付宝"
;
break
;
case
4
:
payChannel
=
"10212"
;
break
;
}
return
payChannel
;
}
/**
* @nots 基础支付
* @param payChannelType
* @return
*/
public
String
getEbCode4PayOrderCenter
(
String
payChannelType
)
{
String
ebCode
=
""
;
switch
(
payChannelType
)
{
case
"1"
:
ebCode
=
"10004"
;
break
;
case
"2"
:
ebCode
=
"10200"
;
break
;
case
"3"
:
ebCode
=
"10001"
;
break
;
case
"4"
:
ebCode
=
""
;
break
;
}
return
ebCode
;
}
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/UnifiedOrderApiResponse.java
0 → 100644
View file @
c86c7c67
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: OrderPayResponseDto
* @Package cn.freemud.entities.dto
* @Description:
* @author: liming.guo
* @date: 2018/5/25 17:10
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
dto
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.ToString
;
@NoArgsConstructor
@Data
@ToString
public
class
UnifiedOrderApiResponse
{
private
int
code
;
@ApiModelProperty
(
value
=
"提示信息"
)
private
String
message
;
@ApiModelProperty
(
value
=
"验签可配置"
)
private
String
sign
;
@ApiModelProperty
(
value
=
"支付帐号"
)
private
String
payAccount
;
@ApiModelProperty
(
value
=
"支付渠道编号"
)
private
String
ebCode
;
@ApiModelProperty
(
value
=
"支付渠道描述"
)
private
String
platformDesc
;
@ApiModelProperty
(
value
=
"第三方支付交易序号"
)
private
String
platformTradeNo
;
@ApiModelProperty
(
value
=
"非码交易流水号"
)
private
String
fmTradeNo
;
@ApiModelProperty
(
value
=
"外部交易流水号,由上游系统生成,需保证唯一"
)
private
String
outOrderNo
;
@ApiModelProperty
(
value
=
"app_id编号(微信使用)"
)
private
String
appId
;
@ApiModelProperty
(
value
=
"商户号(微信使用)"
)
private
String
mchId
;
@ApiModelProperty
(
value
=
"包名(微信使用)"
)
private
String
_package
;
@ApiModelProperty
(
value
=
"随机字符串(微信使用)"
)
private
String
nonceStr
;
@ApiModelProperty
(
value
=
"签名(微信使用)"
)
private
String
paySign
;
@ApiModelProperty
(
value
=
"签名类型(微信使用)"
)
private
String
paySignType
;
@ApiModelProperty
(
value
=
"时间戳(微信使用)"
)
private
String
timestamp
;
@ApiModelProperty
(
value
=
"预订单编号"
)
private
String
prepayId
;
@ApiModelProperty
(
value
=
"biz_content(支付宝使用)"
)
private
String
bizContent
;
@ApiModelProperty
(
value
=
"当前预下单请求生成的二维码码串"
)
private
String
codeUrl
;
@ApiModelProperty
(
value
=
"间联单号"
)
private
String
endTransTradeNo
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/order/CreatePrepayRequestDto.java
View file @
c86c7c67
...
@@ -2,9 +2,12 @@ package cn.freemud.entities.dto.order;
...
@@ -2,9 +2,12 @@ package cn.freemud.entities.dto.order;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
@Data
@Data
public
class
CreatePrepayRequestDto
{
public
class
CreatePrepayRequestDto
{
/**
/**
...
@@ -61,4 +64,6 @@ public class CreatePrepayRequestDto {
...
@@ -61,4 +64,6 @@ public class CreatePrepayRequestDto {
private
String
transId
;
private
String
transId
;
private
OrderClientType
orderClient
;
private
OrderClientType
orderClient
;
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
}
}
order-application-service/src/main/java/cn/freemud/entities/vo/CreateOrderVo.java
View file @
c86c7c67
...
@@ -13,6 +13,7 @@
...
@@ -13,6 +13,7 @@
package
cn
.
freemud
.
entities
.
vo
;
package
cn
.
freemud
.
entities
.
vo
;
import
cn.freemud.entities.dto.UserDeliveryInfoDto
;
import
cn.freemud.entities.dto.UserDeliveryInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
cn.freemud.entities.dto.delivery.WeixinDeliveryAddressDto
;
import
lombok.Builder
;
import
lombok.Builder
;
...
@@ -22,12 +23,15 @@ import org.hibernate.validator.constraints.NotEmpty;
...
@@ -22,12 +23,15 @@ import org.hibernate.validator.constraints.NotEmpty;
import
javax.validation.Valid
;
import
javax.validation.Valid
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.NotNull
;
import
javax.validation.constraints.Pattern
;
import
javax.validation.constraints.Pattern
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
@Data
@Data
public
class
CreateOrderVo
{
public
class
CreateOrderVo
{
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
@NotEmpty
(
message
=
"sessionId 不能为空"
)
@NotEmpty
(
message
=
"sessionId 不能为空"
)
private
String
sessionId
;
private
String
sessionId
;
...
@@ -303,5 +307,6 @@ public class CreateOrderVo {
...
@@ -303,5 +307,6 @@ public class CreateOrderVo {
* 规则ID
* 规则ID
*/
*/
private
String
ruleId
;
private
String
ruleId
;
}
}
}
}
order-application-service/src/main/java/cn/freemud/enums/PayChannel.java
View file @
c86c7c67
...
@@ -16,7 +16,8 @@ public enum PayChannel {
...
@@ -16,7 +16,8 @@ public enum PayChannel {
SVC
(
"10102"
,
"svc卡支付"
),
SVC
(
"10102"
,
"svc卡支付"
),
ALIPAY
(
"10300"
,
"支付宝"
),
ALIPAY
(
"10300"
,
"支付宝"
),
WXPAY
(
"10211"
,
"微信"
);
WXPAY
(
"10211"
,
"微信"
),
COMPAY
(
"10212"
,
"组合支付"
);
private
String
code
;
private
String
code
;
private
String
desc
;
private
String
desc
;
...
...
order-application-service/src/main/java/cn/freemud/enums/PayChannelType.java
0 → 100644
View file @
c86c7c67
package
cn
.
freemud
.
enums
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
@Getter
@AllArgsConstructor
public
enum
PayChannelType
{
WECHAT
((
byte
)
1
,
"微信"
),
SVC
((
byte
)
2
,
"储值卡"
),
ALIPAY
((
byte
)
3
,
"支付宝"
),
COMB
((
byte
)
4
,
"混合支付"
);
private
Byte
index
;
private
String
name
;
public
static
final
String
API_DESC
=
"订单支付渠道类型 1:微信 2:储值卡 3:支付宝 4:混合支付"
;
public
static
PayChannelType
getByIndex
(
byte
index
)
{
for
(
PayChannelType
payType
:
values
())
{
if
(
payType
.
getIndex
().
equals
(
index
))
{
return
payType
;
}
}
return
null
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
c86c7c67
...
@@ -21,6 +21,7 @@ import cn.freemud.amqp.MQService;
...
@@ -21,6 +21,7 @@ import cn.freemud.amqp.MQService;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.base.util.JsonUtil
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.OrderRefundConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
...
@@ -69,8 +70,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
...
@@ -69,8 +70,6 @@ import com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustome
import
com.freemud.api.assortment.datamanager.meal.MealCacheManager
;
import
com.freemud.api.assortment.datamanager.meal.MealCacheManager
;
import
com.freemud.application.sdk.api.constant.ResponseConstant
;
import
com.freemud.application.sdk.api.constant.ResponseConstant
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.couponcenter.offline.request.CouponRequest
;
import
com.freemud.application.sdk.api.couponcenter.offline.response.CouponRedeemResponse
;
import
com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService
;
import
com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryInfoDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.DeliveryResponseDto
;
...
@@ -83,7 +82,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
...
@@ -83,7 +82,9 @@ import com.freemud.application.sdk.api.ordercenter.enums.OrderClientType;
import
com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderConditionsReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtendedReq
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq
;
import
com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.carpark.ParkingOrderCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.request.create.OrderPayItemCreateReq
;
import
com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.carpark.OrderResp
;
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.BaseDownLoadResponse
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
...
@@ -97,7 +98,6 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
...
@@ -97,7 +98,6 @@ import com.freemud.application.sdk.api.paymentcenter.client.response.SVCCardAmou
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.paymentcenter.client.service.PaymentNewService
;
import
com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest
;
import
com.freemud.application.sdk.api.storecenter.request.GetListByCodesRequest
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.request.vo.GetOrgTreeListRequest
;
import
com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse
;
import
com.freemud.application.sdk.api.storecenter.response.GetListByCodesResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
...
@@ -113,6 +113,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
...
@@ -113,6 +113,7 @@ import com.freemud.sdk.api.assortment.message.service.IMessageTemplatePushServic
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.enums.OldOrderStatus
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.order.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.order.*
;
import
com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse
;
import
com.freemud.sdk.api.assortment.order.response.payment.OrderPayResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
...
@@ -140,7 +141,6 @@ import org.springframework.stereotype.Service;
...
@@ -140,7 +141,6 @@ import org.springframework.stereotype.Service;
import
tk.mybatis.mapper.util.StringUtil
;
import
tk.mybatis.mapper.util.StringUtil
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
import
java.util.concurrent.TimeUnit
;
...
@@ -148,14 +148,12 @@ import java.util.function.Function;
...
@@ -148,14 +148,12 @@ import java.util.function.Function;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
cn
.
freemud
.
constant
.
OrderRefundConstant
.
ALLOW_REFUND
;
import
static
com
.
freemud
.
sdk
.
api
.
assortment
.
order
.
domain
.
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
;
@Service
@Service
@Slf4j
@Slf4j
public
class
OrderServiceImpl
implements
Orderservice
{
public
class
OrderServiceImpl
implements
Orderservice
{
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
private
final
Integer
RESPONSE_SUCCESS_CODE
=
100
;
private
static
Gson
gson
=
new
Gson
();
private
static
Gson
gson
=
new
Gson
();
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
@Value
(
"${saas.reverseNotifyiDcUrl}"
)
...
@@ -255,6 +253,8 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -255,6 +253,8 @@ public class OrderServiceImpl implements Orderservice {
private
OfflineCouponSdkService
offlineCouponSdkService
;
private
OfflineCouponSdkService
offlineCouponSdkService
;
@Autowired
@Autowired
private
DeliveryFeiginClient
deliveryFeiginClient
;
private
DeliveryFeiginClient
deliveryFeiginClient
;
@Autowired
private
PaymentApplicationClient
paymentApplicationClient
;
@Override
@Override
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
...
@@ -319,9 +319,17 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -319,9 +319,17 @@ public class OrderServiceImpl implements Orderservice {
return
createOrderOperateDtoResponse
;
return
createOrderOperateDtoResponse
;
}
}
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
CreateOrderOperateDto
createOrderOperateDto
=
(
CreateOrderOperateDto
)
createOrderOperateDtoResponse
.
getResult
();
//创建支付
//创建支付
,混合支付走单独的逻辑,其他的都单独逻辑
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
CreatePrepayRequestDto
createPrepayRequestDto
=
orderAdapter
.
convertToCreatePrepayRequestDto
(
userLoginInfoDto
,
createOrderVo
,
createOrderOperateDto
,
extInfo
);
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
if
(
null
!=
createOrderVo
.
getPayChannelType
()
&&
createOrderVo
.
getPayChannelType
().
equals
(
PayChannelType
.
COMB
.
getIndex
()))
{
log
.
info
(
"createCombpayOrder {}"
+
JsonUtil
.
toJSONString
(
createPrepayRequestDto
));
createPrepayRequestDto
.
setOrderPayItemCreateReqList
(
createOrderVo
.
getOrderPayItemCreateReqList
());
createPrepayRequestDto
.
setPayCode
(
createOrderVo
.
getPayChannelType
().
toString
());
return
this
.
createCombpayOrder
(
createPrepayRequestDto
);
}
else
{
log
.
info
(
"createPrepayOrder {}"
+
JsonUtil
.
toJSONString
(
createPrepayRequestDto
));
return
this
.
createPrepayOrder
(
createPrepayRequestDto
);
}
}
}
/**
/**
...
@@ -428,6 +436,18 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -428,6 +436,18 @@ public class OrderServiceImpl implements Orderservice {
String
string2
=
JSONObject
.
toJSONString
(
payAccessRes
);
String
string2
=
JSONObject
.
toJSONString
(
payAccessRes
);
JSONObject
jsonObject2
=
JSONObject
.
parseObject
(
string2
);
JSONObject
jsonObject2
=
JSONObject
.
parseObject
(
string2
);
payAccessResponse
=
jsonObject2
.
toJavaObject
(
PayAccessResponse
.
class
);
payAccessResponse
=
jsonObject2
.
toJavaObject
(
PayAccessResponse
.
class
);
//获取生态缓存中的配置项,如果mealCodeRule的值不为空并且值等于2,则随机生成取参数,当日不重复
String
mealCodeRule
=
redisCache
.
getValue
(
"mealCodeRule"
);
if
(!
StringUtils
.
isEmpty
(
mealCodeRule
)
&&
"2"
.
equalsIgnoreCase
(
mealCodeRule
)){
//更新db中的取餐码,生成取餐码
OrderModifyRelatingCodeReq
relatingCodeReq
=
new
OrderModifyRelatingCodeReq
();
relatingCodeReq
.
setOrderCode
(
orderBean
.
getOid
());
relatingCodeReq
.
setOperator
(
orderBean
.
getCreateUser
());
relatingCodeReq
.
setPartnerId
(
orderBean
.
getCompanyId
());
relatingCodeReq
.
setPickUpGoodsNo
(
orderAdapter
.
generateTackCode
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
()));
orderCenterSdkService
.
updatePickUpGoodNo
(
relatingCodeReq
,
LogThreadLocal
.
getTrackingNo
());
}
// 添加幂等处理,若订单是已支付成功状态,直接返回成功
// 添加幂等处理,若订单是已支付成功状态,直接返回成功
if
(!
RESPONSE_SUCCESS_CODE
.
equals
(
payAccessResponse
.
getErrcode
()))
{
if
(!
RESPONSE_SUCCESS_CODE
.
equals
(
payAccessResponse
.
getErrcode
()))
{
OrderBean
saasOrder
=
getOrderBeanByOrderId
(
confirmOrderDto
.
getOrderId
()).
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
OrderBean
saasOrder
=
getOrderBeanByOrderId
(
confirmOrderDto
.
getOrderId
()).
get
(
OrderBeanType
.
SAASORDER
.
getCode
());
...
@@ -2946,4 +2966,78 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -2946,4 +2966,78 @@ public class OrderServiceImpl implements Orderservice {
return
ResponseUtil
.
success
(
responses
.
getData
());
return
ResponseUtil
.
success
(
responses
.
getData
());
}
}
/**
* 创建预支付订单
*/
public
BaseResponse
createCombpayOrder
(
CreatePrepayRequestDto
createPrepayRequestDto
)
{
CreateOrderResponseVo
createOrderResponse
;
OrderPayResponse
orderPayResponse
=
null
;
PaymentRequest
paymentRequest
=
orderBodyConvertToPaymentBody
(
createPrepayRequestDto
.
getOpenId
(),
createPrepayRequestDto
.
getPartnerId
(),
createPrepayRequestDto
.
getWxAppId
(),
createPrepayRequestDto
.
getPayCode
());
long
totalAmount
=
createPrepayRequestDto
.
getTotalAmount
();
String
cardCode
=
createPrepayRequestDto
.
getCardCode
();
if
(
totalAmount
<
0
)
{
throw
new
ServiceException
(
ResponseResult
.
PAY_AMOUNT_ERROR
);
}
else
{
String
partnerPayOvertime
=
this
.
getPartnerPayOvertime
(
createPrepayRequestDto
.
getPartnerId
());
orderPayResponse
=
comPayOrder
(
createPrepayRequestDto
.
getOrderPayItemCreateReqList
(),
createPrepayRequestDto
.
getFatherOrderBean
(),
paymentRequest
,
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getCardAmount
(),
partnerPayOvertime
);
}
if
(
orderPayResponse
==
null
||
Objects
.
isNull
(
orderPayResponse
.
getFmId
()))
{
return
failPreOrderPay
(
LogThreadLocal
.
getTrackingNo
(),
createPrepayRequestDto
.
getProductOrderBean
(),
cardCode
,
createPrepayRequestDto
.
getOrderClient
(),
Objects
.
isNull
(
orderPayResponse
)
?
null
:
orderPayResponse
.
getMsg
());
}
createOrderResponse
=
orderAdapter
.
convent2CreateFatherSonOrderResponseVo
(
orderPayResponse
,
createPrepayRequestDto
.
getProductOrderBean
());
BaseResponse
baseEditResponse
=
this
.
updateOrderInfo
(
orderPayResponse
,
createPrepayRequestDto
.
getOrderExtInfoDTO
(),
createPrepayRequestDto
.
getProductOrderBean
(),
LogThreadLocal
.
getTrackingNo
());
if
(
baseEditResponse
!=
null
)
{
return
baseEditResponse
;
}
if
(
totalAmount
>
0
&&
StringUtils
.
isBlank
(
cardCode
))
{
createOrderResponse
.
setPaySuccess
(
false
);
}
else
{
createOrderResponse
.
setPaySuccess
(
true
);
}
// 推荐优惠插件用户下单数据上报
if
(!
createOrderResponse
.
getPaySuccess
())
{
return
ResponseUtil
.
success
(
createOrderResponse
);
}
else
{
//如果是商品券支付0元,调用回调接口
PaysuccessNoticeMessage
message
=
new
PaysuccessNoticeMessage
();
message
.
setResult_code
(
100
);
message
.
setOut_trade_no
(
createOrderResponse
.
getFmId
());
message
.
setTrans_id
(
createOrderResponse
.
getOid
());
message
.
setTotal_fee
(
0
);
message
.
setOpenid
(
createPrepayRequestDto
.
getOpenId
());
message
.
setPlatform_coupon
(
0
);
message
.
setMerchant_coupon
(
0
);
orderAdapterService
.
paySuccessCallback
(
message
);
return
ResponseUtil
.
success
(
createOrderResponse
);
}
}
public
OrderPayResponse
comPayOrder
(
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
,
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
PaymentRequest
paymentRequest
,
String
trackingNo
,
Integer
cardAmount
,
String
partnerPayOvertime
)
{
OrderPayResponse
orderPayResponse
;
try
{
//微信或者支付宝支付
UnifiedOrderApplicationRequest
request
=
orderAdapter
.
convent2CombPayOrderRequest
(
orderPayItemCreateReqList
,
orderBean
,
paymentRequest
,
orderBean
.
getAmount
(),
cardAmount
,
partnerPayOvertime
);
UnifiedOrderApiResponse
responseBase
=
paymentApplicationClient
.
unifiedOrder
(
request
,
orderBean
.
getCompanyId
());
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
responseBase
.
getCode
()))
{
log
.
error
(
"混合支付返回信息错误,trackingNo:{} request:{} response:{}"
,
trackingNo
,
JSONObject
.
toJSONString
(
request
),
JSONObject
.
toJSONString
(
responseBase
));
orderPayResponse
=
new
OrderPayResponse
();
orderPayResponse
.
setMsg
(
responseBase
.
getMessage
());
}
else
{
putDelMq
(
request
.
getPartnerId
(),
request
.
getStoreId
(),
responseBase
.
getFmTradeNo
(),
orderBean
.
getOid
());
orderPayResponse
=
orderAdapter
.
convent2OrderCombPayResponse
(
responseBase
);
orderPayResponse
.
setWxAppid
(
paymentRequest
.
getWxAppId
());
orderPayResponse
.
setOpenId
(
paymentRequest
.
getOpenId
());
orderPayResponse
.
setPartnerId
(
orderBean
.
getCompanyId
());
orderPayResponse
.
setOrderId
(
orderBean
.
getOid
());
}
}
catch
(
Exception
e
)
{
LogUtil
.
error
(
"comPay_error"
,
JSONObject
.
toJSONString
(
orderBean
),
JSONObject
.
toJSONString
(
paymentRequest
));
//TODO 邮件告警
orderPayResponse
=
new
OrderPayResponse
();
orderPayResponse
.
setMsg
(
"comPay_error"
);
}
return
orderPayResponse
;
}
}
}
order-application-service/src/main/java/cn/freemud/service/thirdparty/PaymentApplicationClient.java
0 → 100644
View file @
c86c7c67
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: PaymentClient
* @Package cn.freemud.service.thirdparty
* @Description: 支付服务
* @author: liming.guo
* @date: 2018/5/12519:24
* @version V1.0
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.entities.dto.*
;
import
com.freemud.sdk.api.assortment.order.request.payment.UnifiedOrderApplicationRequest
;
import
org.springframework.cloud.netflix.feign.FeignClient
;
import
org.springframework.messaging.handler.annotation.Header
;
import
org.springframework.web.bind.annotation.*
;
@FeignClient
(
name
=
"payment-center-application-api"
,
url
=
"${saas.paymentcenter.application.api.feign.url}"
)
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
public
interface
PaymentApplicationClient
{
/**
* 统一下单
*/
@PostMapping
(
"/payment/application/unifiedOrder"
)
UnifiedOrderApiResponse
unifiedOrder
(
@RequestBody
UnifiedOrderApplicationRequest
unifiedOrderApplicationRequest
,
@RequestHeader
(
"partnerId"
)
String
partnerId
);
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/CreateOrderRequest.java
View file @
c86c7c67
...
@@ -215,4 +215,5 @@ public class CreateOrderRequest extends BaseRequest {
...
@@ -215,4 +215,5 @@ public class CreateOrderRequest extends BaseRequest {
private
Byte
payChannelType
;
private
Byte
payChannelType
;
private
List
<
OrderPayItemCreateReq
>
orderPayItemCreateReqList
;
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/create/OrderPayItemCreateReq.java
0 → 100644
View file @
c86c7c67
package
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
request
.
create
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
@Data
public
class
OrderPayItemCreateReq
{
private
Long
id
;
private
Long
orderId
;
private
String
orderCode
;
private
String
partnerId
;
private
String
storeId
;
private
String
payChannelType
;
private
String
payChannelName
;
private
String
operator
;
private
BigDecimal
payAmount
;
}
\ No newline at end of file
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
View file @
c86c7c67
...
@@ -271,4 +271,4 @@ public class OrderInfoReqs {
...
@@ -271,4 +271,4 @@ public class OrderInfoReqs {
//支付渠道类型
//支付渠道类型
private
String
payChannelType
;
private
String
payChannelType
;
}
}
\ No newline at end of file
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