记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
180280fe
Commit
180280fe
authored
Apr 07, 2022
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加苹果支付调用接口;下单苹果支付不调用dragon;支付成功苹果支付不处理超时支付;payCode和setPayData将为空
parent
41e4a1e1
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
203 additions
and
44 deletions
+203
-44
GoblinNftOrderVo.java
...com/liquidnet/service/goblin/dto/vo/GoblinNftOrderVo.java
+1
-1
GoblinNftOrderPayParam.java
...iquidnet/service/goblin/param/GoblinNftOrderPayParam.java
+1
-1
LnsRegex.java
...in/java/com/liquidnet/commons/lang/constant/LnsRegex.java
+1
-1
GoblinNftOrder.java
...a/com/liquidnet/service/goblin/entity/GoblinNftOrder.java
+1
-1
db_0315_jxl_nft.sql
...in/liquidnet-service-goblin-impl/docu/db_0315_jxl_nft.sql
+1
-1
OrderApplePayController.java
...net/service/order/controller/OrderApplePayController.java
+55
-0
GoblinNftOrderServiceImpl.java
...service/order/service/impl/GoblinNftOrderServiceImpl.java
+53
-39
OrderApplePayServiceImpl.java
.../service/order/service/impl/OrderApplePayServiceImpl.java
+90
-0
No files found.
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/dto/vo/GoblinNftOrderVo.java
View file @
180280fe
...
...
@@ -94,7 +94,7 @@ public class GoblinNftOrderVo implements Serializable, Cloneable {
@ApiModelProperty
(
value
=
"订单类型 1购买订单 2兑换订单 3演出赠送订单"
)
private
Integer
orderType
;
@ApiModelProperty
(
value
=
"支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联"
)
@ApiModelProperty
(
value
=
"支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联
applepay苹果支付
"
)
private
String
payType
;
@ApiModelProperty
(
value
=
"支付终端 app wap js applet"
)
...
...
liquidnet-bus-api/liquidnet-service-goblin-api/src/main/java/com/liquidnet/service/goblin/param/GoblinNftOrderPayParam.java
View file @
180280fe
...
...
@@ -25,7 +25,7 @@ public class GoblinNftOrderPayParam {
@ApiModelProperty(position = 13, value = "商品券码")
private String storeVoucherCode;*/
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"支付方式"
,
allowableValues
=
"alipay,wepay,douyinpay,unionpay"
)
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"支付方式"
,
allowableValues
=
"alipay,wepay,douyinpay,unionpay
,applepay
"
)
@Pattern
(
regexp
=
LnsRegex
.
Valid
.
TRIPLE_PF_FOR_PAY
,
message
=
"支付方式无效"
)
@NotBlank
(
message
=
"支付方式不能为空"
)
private
String
payType
;
...
...
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/constant/LnsRegex.java
View file @
180280fe
...
...
@@ -79,7 +79,7 @@ public class LnsRegex {
/**
* 支持的支付方式
*/
public
static
final
String
TRIPLE_PF_FOR_PAY
=
"\\b(alipay|wepay|douyinpay|unionpay)\\b"
;
public
static
final
String
TRIPLE_PF_FOR_PAY
=
"\\b(alipay|wepay|douyinpay|unionpay
|applepay
)\\b"
;
/* ======================================================================= | */
...
...
liquidnet-bus-do/liquidnet-service-goblin-do/src/main/java/com/liquidnet/service/goblin/entity/GoblinNftOrder.java
View file @
180280fe
...
...
@@ -141,7 +141,7 @@ public class GoblinNftOrder implements Serializable, Cloneable {
private
Integer
orderType
;
/**
* 支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联
* 支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联
applepay苹果支付
*/
private
String
payType
;
...
...
liquidnet-bus-service/liquidnet-service-goblin/liquidnet-service-goblin-impl/docu/db_0315_jxl_nft.sql
View file @
180280fe
...
...
@@ -158,7 +158,7 @@ CREATE TABLE goblin_nft_order
status
TINYINT
UNSIGNED
NOT
NULL
DEFAULT
0
COMMENT
'订单状态 1待付款 2已付款 3未付款取消订单 4退款中 5已退款'
,
source
VARCHAR
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'订单来源 app h5 applet'
,
order_type
TINYINT
UNSIGNED
NOT
NULL
DEFAULT
0
COMMENT
'订单类型 1购买订单 2兑换订单 3演出赠送订单'
,
pay_type
VARCHAR
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联'
,
pay_type
VARCHAR
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'支付类型 wepay微信 alipay阿里 douyinpay抖音 unionpay银联
applepay苹果支付
'
,
device_from
VARCHAR
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'支付终端 app wap js applet'
,
version
VARCHAR
(
32
)
NOT
NULL
DEFAULT
''
COMMENT
'版本号'
,
pay_countdown_minute
TINYINT
UNSIGNED
DEFAULT
5
COMMENT
'订单过期时间(分钟)'
,
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/controller/OrderApplePayController.java
0 → 100644
View file @
180280fe
package
com
.
liquidnet
.
service
.
order
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.order.service.impl.OrderApplePayServiceImpl
;
import
io.swagger.annotations.*
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.Pattern
;
/**
* <p>
* 苹果支付相关 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2022-04-07
*/
@Api
(
tags
=
"苹果-支付相关"
)
@RestController
@Validated
@RequestMapping
(
"/apple"
)
public
class
OrderApplePayController
{
@Autowired
private
OrderApplePayServiceImpl
applePayService
;
@PostMapping
(
"pay"
)
@ApiOperation
(
"苹果支付成功通知"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"orderId"
,
value
=
"订单ID"
,
example
=
"1"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"type"
,
value
=
"订单类型 NFT"
,
example
=
"NFT"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"receiptData"
,
value
=
"receipt-data"
,
example
=
"M0WWAoL3nK5I1xF3OX2n9aHlQptG4NbuHbkYmD7cBsLT"
),
})
public
ResponseDto
checkOrder
(
@RequestParam
(
"orderId"
)
@NotBlank
(
message
=
"订单ID不能为空"
)
String
orderId
,
@RequestParam
(
"type"
)
@NotBlank
(
message
=
"订单类型不能为空"
)
@Pattern
(
regexp
=
"\\b(NFT)\\b"
,
message
=
"订单类型无效"
)
String
type
,
@RequestParam
(
"receiptData"
)
@NotBlank
(
message
=
"receiptData不能为空"
)
String
receiptData
)
{
boolean
isPay
=
applePayService
.
pay
(
orderId
,
type
,
receiptData
);
if
(
isPay
)
{
return
ResponseDto
.
success
(
"支付成功"
);
}
else
{
return
ResponseDto
.
failure
(
"未获取到支付状态"
);
}
}
}
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/GoblinNftOrderServiceImpl.java
View file @
180280fe
...
...
@@ -345,47 +345,58 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
GoblinNftPayResultVo
NftPayResultVo
=
GoblinNftPayResultVo
.
getNew
();
NftPayResultVo
.
setOrderId
(
nftOrder
.
getOrderId
());
String
payCode
;
String
showUrl
=
payParam
.
getShowUrl
().
concat
(
nftOrder
.
getOrderCode
());
String
returnUrl
=
payParam
.
getReturnUrl
().
concat
(
nftOrder
.
getOrderCode
());
if
(
nftOrder
.
getPriceActual
().
compareTo
(
BigDecimal
.
valueOf
(
0
))
>
0
)
{
// 调用支付
LinkedMultiValueMap
<
String
,
String
>
httpData
=
CollectionUtil
.
linkedMultiValueMapStringString
();
httpData
.
add
(
"type"
,
"NFT"
);
httpData
.
add
(
"price"
,
nftOrder
.
getPriceActual
().
toString
());
// 测试0.01
// httpData.add("price","0.01");
httpData
.
add
(
"name"
,
nftOrder
.
getStoreName
());
GoblinGoodsSkuInfoVo
skuVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
nftOrder
.
getSkuId
());
httpData
.
add
(
"detail"
,
skuVo
.
getName
());
httpData
.
add
(
"orderCode"
,
nftOrder
.
getOrderCode
());
httpData
.
add
(
"orderId"
,
nftOrder
.
getOrderId
());
httpData
.
add
(
"clientIp"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notifyUrl"
,
synUrl
);
httpData
.
add
(
"createDate"
,
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"expireTime"
,
"5"
);
httpData
.
add
(
"payType"
,
nftOrder
.
getPayType
());
httpData
.
add
(
"deviceFrom"
,
nftOrder
.
getDeviceFrom
());
if
(
nftOrder
.
getDeviceFrom
().
equals
(
"js"
)
||
nftOrder
.
getDeviceFrom
().
equals
(
"applet"
))
{
httpData
.
add
(
"openId"
,
payParam
.
getOpenId
());
if
(
nftOrder
.
getPayType
().
equals
(
"applepay"
))
{
payCode
=
""
;
NftPayResultVo
.
setCode
(
payCode
);
NftPayResultVo
.
setOrderCode
(
nftOrder
.
getOrderCode
());
NftPayResultVo
.
setPayData
(
""
);
NftPayResultVo
.
setPayType
(
nftOrder
.
getPayType
());
NftPayResultVo
.
setPrice
(
nftOrder
.
getPriceActual
());
NftPayResultVo
.
setShowUrl
(
showUrl
);
NftPayResultVo
.
setReturnUrl
(
returnUrl
);
}
else
{
LinkedMultiValueMap
<
String
,
String
>
httpData
=
CollectionUtil
.
linkedMultiValueMapStringString
();
httpData
.
add
(
"type"
,
"NFT"
);
httpData
.
add
(
"price"
,
nftOrder
.
getPriceActual
().
toString
());
// 测试0.01
// httpData.add("price","0.01");
httpData
.
add
(
"name"
,
nftOrder
.
getStoreName
());
GoblinGoodsSkuInfoVo
skuVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
nftOrder
.
getSkuId
());
httpData
.
add
(
"detail"
,
skuVo
.
getName
());
httpData
.
add
(
"orderCode"
,
nftOrder
.
getOrderCode
());
httpData
.
add
(
"orderId"
,
nftOrder
.
getOrderId
());
httpData
.
add
(
"clientIp"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notifyUrl"
,
synUrl
);
httpData
.
add
(
"createDate"
,
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"expireTime"
,
"5"
);
httpData
.
add
(
"payType"
,
nftOrder
.
getPayType
());
httpData
.
add
(
"deviceFrom"
,
nftOrder
.
getDeviceFrom
());
if
(
nftOrder
.
getDeviceFrom
().
equals
(
"js"
)
||
nftOrder
.
getDeviceFrom
().
equals
(
"applet"
))
{
httpData
.
add
(
"openId"
,
payParam
.
getOpenId
());
}
httpData
.
add
(
"showUrl"
,
showUrl
);
httpData
.
add
(
"returnUrl"
,
returnUrl
);
LinkedMultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
returnData
=
HttpUtil
.
post
(
payUrl
,
httpData
,
header
);
log
.
info
(
"调用 DRAGON 结果 = "
+
returnData
);
ResponseDto
<
GoblinPayInnerResultVo
>
dto
=
JsonUtils
.
fromJson
(
returnData
,
new
TypeReference
<
ResponseDto
<
GoblinPayInnerResultVo
>>()
{
});
GoblinPayInnerResultVo
dtoData
=
dto
.
getData
();
payCode
=
dtoData
.
getCode
();
NftPayResultVo
.
setCode
(
payCode
);
NftPayResultVo
.
setOrderCode
(
nftOrder
.
getOrderCode
());
NftPayResultVo
.
setPayData
(
dtoData
.
getPayData
());
NftPayResultVo
.
setPayType
(
nftOrder
.
getPayType
());
NftPayResultVo
.
setPrice
(
nftOrder
.
getPriceActual
());
NftPayResultVo
.
setShowUrl
(
showUrl
);
NftPayResultVo
.
setReturnUrl
(
returnUrl
);
}
String
showUrl
=
payParam
.
getShowUrl
().
concat
(
nftOrder
.
getOrderCode
());
String
returnUrl
=
payParam
.
getReturnUrl
().
concat
(
nftOrder
.
getOrderCode
());
httpData
.
add
(
"showUrl"
,
showUrl
);
httpData
.
add
(
"returnUrl"
,
returnUrl
);
LinkedMultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
returnData
=
HttpUtil
.
post
(
payUrl
,
httpData
,
header
);
log
.
info
(
"调用 DRAGON 结果 = "
+
returnData
);
ResponseDto
<
GoblinPayInnerResultVo
>
dto
=
JsonUtils
.
fromJson
(
returnData
,
new
TypeReference
<
ResponseDto
<
GoblinPayInnerResultVo
>>()
{
});
GoblinPayInnerResultVo
dtoData
=
dto
.
getData
();
payCode
=
dtoData
.
getCode
();
NftPayResultVo
.
setCode
(
payCode
);
NftPayResultVo
.
setOrderCode
(
dtoData
.
getOrderCode
());
NftPayResultVo
.
setPayData
(
dtoData
.
getPayData
());
NftPayResultVo
.
setPayType
(
nftOrder
.
getPayType
());
NftPayResultVo
.
setPrice
(
nftOrder
.
getPriceActual
());
NftPayResultVo
.
setShowUrl
(
showUrl
);
NftPayResultVo
.
setReturnUrl
(
returnUrl
);
}
else
{
isFree
=
true
;
nftOrder
.
setPayType
(
"FREE"
);
...
...
@@ -581,6 +592,9 @@ public class GoblinNftOrderServiceImpl implements IGoblinNftOrderService {
LocalDateTime
now
=
LocalDateTime
.
now
();
if
(
Objects
.
equals
(
orderVo
.
getStatus
(),
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_3
.
getValue
()))
{
// 超时支付
log
.
info
(
"Nft订单超时支付 param:[orderCode:{}]"
,
orderCode
);
if
(
syncOrderParam
.
getPaymentType
().
equals
(
"APPLE_PAY"
))
{
// 苹果支付不做处理
return
"success"
;
}
// 处理为退款中
orderVo
.
setStatus
(
GoblinStatusConst
.
NftStatus
.
ORDER_STATUS_4
.
getValue
());
orderVo
.
setUpdatedAt
(
now
);
...
...
liquidnet-bus-service/liquidnet-service-order/liquidnet-service-order-impl/src/main/java/com/liquidnet/service/order/service/impl/OrderApplePayServiceImpl.java
0 → 100644
View file @
180280fe
package
com
.
liquidnet
.
service
.
order
.
service
.
impl
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.*
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.goblin.dto.vo.GoblinGoodsSkuInfoVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinNftOrderVo
;
import
com.liquidnet.service.goblin.dto.vo.GoblinPayInnerResultVo
;
import
com.liquidnet.service.goblin.param.GoblinNftOrderPayCallbackParam
;
import
com.liquidnet.service.order.utils.GoblinNftOrderUtils
;
import
com.liquidnet.service.order.utils.GoblinRedisUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
@Service
@Slf4j
public
class
OrderApplePayServiceImpl
{
@Autowired
GoblinRedisUtils
goblinRedisUtils
;
@Autowired
GoblinNftOrderUtils
nftOrderUtils
;
@Autowired
private
GoblinNftOrderServiceImpl
goblinNftOrderService
;
@Value
(
"${liquidnet.service.order.url-pay.pay}"
)
private
String
payUrl
;
public
boolean
pay
(
String
orderId
,
String
type
,
String
receiptData
)
{
log
.
info
(
"苹果支付成功通知参数 [orderId:{},type:{},receiptData:{}]"
,
orderId
,
type
,
receiptData
);
GoblinNftOrderVo
nftOrder
=
nftOrderUtils
.
getNftOrder
(
orderId
);
if
(
null
==
nftOrder
)
{
log
.
info
(
"未找到该订单 [orderId:{}]"
,
orderId
);
return
false
;
}
LinkedMultiValueMap
<
String
,
String
>
httpData
=
CollectionUtil
.
linkedMultiValueMapStringString
();
httpData
.
add
(
"type"
,
type
);
httpData
.
add
(
"price"
,
nftOrder
.
getPriceActual
().
toString
());
httpData
.
add
(
"name"
,
nftOrder
.
getStoreName
());
GoblinGoodsSkuInfoVo
skuVo
=
goblinRedisUtils
.
getGoodsSkuInfoVo
(
nftOrder
.
getSkuId
());
httpData
.
add
(
"detail"
,
skuVo
.
getName
());
httpData
.
add
(
"orderCode"
,
nftOrder
.
getOrderCode
());
httpData
.
add
(
"orderId"
,
nftOrder
.
getOrderId
());
httpData
.
add
(
"clientIp"
,
CurrentUtil
.
getCliIpAddr
());
httpData
.
add
(
"notifyUrl"
,
""
);
httpData
.
add
(
"createDate"
,
LocalDateTime
.
now
().
format
(
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd HH:mm:ss"
)));
httpData
.
add
(
"expireTime"
,
"5"
);
httpData
.
add
(
"payType"
,
nftOrder
.
getPayType
());
httpData
.
add
(
"deviceFrom"
,
nftOrder
.
getDeviceFrom
());
httpData
.
add
(
"openId"
,
""
);
httpData
.
add
(
"showUrl"
,
""
);
httpData
.
add
(
"returnUrl"
,
""
);
httpData
.
add
(
"receiptData"
,
receiptData
);
LinkedMultiValueMap
<
String
,
String
>
header
=
CollectionUtil
.
linkedMultiValueMapStringString
();
header
.
add
(
"Accept"
,
"application/json;charset=UTF-8"
);
String
returnData
=
HttpUtil
.
post
(
payUrl
,
httpData
,
header
);
log
.
info
(
"苹果支付调用DRAGON结果 = "
+
returnData
);
ResponseDto
<
GoblinPayInnerResultVo
>
dto
=
JsonUtils
.
fromJson
(
returnData
,
new
TypeReference
<
ResponseDto
<
GoblinPayInnerResultVo
>>()
{
});
GoblinPayInnerResultVo
dtoData
=
dto
.
getData
();
if
(
null
==
dtoData
||
dtoData
.
getStatus
()
==
0
)
{
return
false
;
}
else
{
// 支付成功
GoblinNftOrderPayCallbackParam
NftOrderPayCallbackParam
=
GoblinNftOrderPayCallbackParam
.
getNew
();
NftOrderPayCallbackParam
.
setCode
(
nftOrder
.
getPayCode
());
NftOrderPayCallbackParam
.
setOrderCode
(
nftOrder
.
getOrderCode
());
NftOrderPayCallbackParam
.
setPaymentAt
(
DateUtil
.
format
(
LocalDateTime
.
now
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
));
NftOrderPayCallbackParam
.
setPrice
(
nftOrder
.
getPriceActual
());
NftOrderPayCallbackParam
.
setPaymentId
(
"APPLE_PAYMENT_ID"
);
// 这里应该是接口返回
NftOrderPayCallbackParam
.
setPaymentType
(
"APPLE_PAY"
);
// 这里应该是接口返回
NftOrderPayCallbackParam
.
setStatus
(
1
);
if
(
type
.
equals
(
"NFT"
))
{
String
isSync
=
goblinNftOrderService
.
syncOrder
(
NftOrderPayCallbackParam
);
if
(!
isSync
.
equals
(
"success"
))
{
return
false
;
}
}
return
true
;
}
}
}
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