记得上下班打卡 | 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
16fee3db
Commit
16fee3db
authored
Nov 11, 2021
by
anjiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交unionpay代码
parent
8aed8bc2
Changes
15
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
682 additions
and
279 deletions
+682
-279
DragonConstant.java
...com/liquidnet/service/dragon/constant/DragonConstant.java
+1
-1
DragonPayBaseRespDto.java
...om/liquidnet/service/dragon/dto/DragonPayBaseRespDto.java
+2
-0
liquidnet-service-dragon-dev.yml
...-config/liquidnet-config/liquidnet-service-dragon-dev.yml
+1
-0
AbstractAlipayStrategy.java
.../channel/alipay/strategy/impl/AbstractAlipayStrategy.java
+1
-0
PayChannelStrategyUnionpayImpl.java
...channel/strategy/impl/PayChannelStrategyUnionpayImpl.java
+36
-53
UnionpayBiz.java
...dnet/service/dragon/channel/unionpay/biz/UnionpayBiz.java
+409
-128
UnionpayConstant.java
...ce/dragon/channel/unionpay/constant/UnionpayConstant.java
+2
-20
UnionpayBaseReq.java
.../service/dragon/channel/unionpay/req/UnionpayBaseReq.java
+39
-0
UnionpayTradePayReq.java
...vice/dragon/channel/unionpay/req/UnionpayTradePayReq.java
+3
-12
AbstractUnionPayStrategy.java
...nnel/unionpay/strategy/impl/AbstractUnionPayStrategy.java
+55
-29
UnionpayStrategyAppImpl.java
...annel/unionpay/strategy/impl/UnionpayStrategyAppImpl.java
+19
-16
UnionpayStrategyWapImpl.java
...annel/unionpay/strategy/impl/UnionpayStrategyWapImpl.java
+32
-17
UnionpayStrategyWapPageImpl.java
...l/unionpay/strategy/impl/UnionpayStrategyWapPageImpl.java
+78
-0
AbstractWepayStrategy.java
...on/channel/wepay/strategy/impl/AbstractWepayStrategy.java
+1
-0
PayController.java
...om/liquidnet/service/dragon/controller/PayController.java
+3
-3
No files found.
liquidnet-bus-api/liquidnet-service-dragon-api/src/main/java/com/liquidnet/service/dragon/constant/DragonConstant.java
View file @
16fee3db
...
...
@@ -37,7 +37,7 @@ public class DragonConstant {
}
public
enum
DeviceFromEnum
{
WEB
(
"web"
,
""
),
WAP
(
"wap"
,
""
)
WEB
(
"web"
,
""
),
WAP
(
"wap"
,
""
)
,
WAPPAGE
(
"wappage"
,
""
)
,
APP
(
"app"
,
""
),
JS
(
"js"
,
""
),
APPLET
(
"applet"
,
""
);
private
String
code
;
private
String
message
;
...
...
liquidnet-bus-api/liquidnet-service-dragon-api/src/main/java/com/liquidnet/service/dragon/dto/DragonPayBaseRespDto.java
View file @
16fee3db
...
...
@@ -36,6 +36,8 @@ public class DragonPayBaseRespDto implements Serializable {
private
PayData
payData
;
private
String
payType
;
@Data
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
public
static
class
PayData
{
...
...
liquidnet-bus-config/liquidnet-config/liquidnet-service-dragon-dev.yml
View file @
16fee3db
...
...
@@ -35,6 +35,7 @@ liquidnet:
appId
:
wx3498304dda39c5a1
partnerKey
:
itIuO65O9yKmemOu3S8g1S4orqvCGwXK
unionpay
:
merchantId
:
777290058194736
gateway-url
:
https://gateway.test.95516.com
certs-path
:
/Users/anjiabin/certs
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/alipay/strategy/impl/AbstractAlipayStrategy.java
View file @
16fee3db
...
...
@@ -91,6 +91,7 @@ public abstract class AbstractAlipayStrategy implements IAlipayStrategy {
*/
protected
DragonPayBaseRespDto
buildCommonRespDto
(
DragonPayBaseReqDto
dragonPayBaseReqDto
){
DragonPayBaseRespDto
respDto
=
new
DragonPayBaseRespDto
();
respDto
.
setPayType
(
dragonPayBaseReqDto
.
getPayType
());
respDto
.
setCode
(
dragonPayBaseReqDto
.
getCode
());
respDto
.
setOrderCode
(
dragonPayBaseReqDto
.
getOrderCode
());
DragonPayBaseRespDto
.
PayData
payData
=
new
DragonPayBaseRespDto
.
PayData
();
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/strategy/impl/PayChannelStrategyUnionpayImpl.java
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
strategy
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.internal.util.AlipaySignature
;
import
com.liquidnet.common.exception.LiquidnetServiceException
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.dragon.biz.DragonServiceCommonBiz
;
import
com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz
;
import
com.liquidnet.service.dragon.channel.alipay.constant.AlipayConstant
;
import
com.liquidnet.service.dragon.channel.alipay.strategy.AlipayStrategyContext
;
import
com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler
;
import
com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.biz.UnionpayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.UnionpayStrategyContext
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.constant.DragonErrorCodeEnum
;
import
com.liquidnet.service.dragon.dto.DragonOrdersDto
;
...
...
@@ -23,11 +19,9 @@ import com.liquidnet.service.dragon.service.impl.DragonOrderRefundsServiceImpl;
import
com.liquidnet.service.dragon.utils.DataUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
javax.servlet.http.HttpServletRequest
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.Map
;
...
...
@@ -45,13 +39,13 @@ import java.util.Map;
@StrategyPayChannelHandler
(
DragonConstant
.
PayChannelEnum
.
UNIONPAY
)
public
class
PayChannelStrategyUnionpayImpl
extends
AbstractPayChannelStrategyImpl
{
@Autowired
private
AlipayStrategyContext
ali
payStrategyContext
;
private
UnionpayStrategyContext
union
payStrategyContext
;
@Autowired
private
DataUtils
dataUtils
;
@Autowired
private
AlipayBiz
ali
payBiz
;
private
UnionpayBiz
union
payBiz
;
@Autowired
private
DragonPayBiz
dragonPayBiz
;
...
...
@@ -62,29 +56,18 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
@Autowired
private
DragonOrderRefundsServiceImpl
dragonOrderRefundsService
;
@Value
(
"${liquidnet.dragon.alipay.appId}"
)
private
String
appId
;
@Value
(
"${liquidnet.dragon.alipay.merchantPubKey}"
)
private
String
merchantPubKey
;
@Value
(
"${liquidnet.dragon.alipay.merchantPrivateKey}"
)
private
String
merchantPrivateKey
;
@Value
(
"${liquidnet.dragon.alipay.signtType}"
)
private
String
signtType
;
@Value
(
"${liquidnet.dragon.alipay.charset}"
)
private
String
charset
;
@Override
public
ResponseDto
<
DragonPayBaseRespDto
>
dragonPay
(
DragonPayBaseReqDto
dragonPayBaseReqDto
)
{
return
ali
payStrategyContext
.
getStrategy
(
dragonPayBaseReqDto
.
getDeviceFrom
()).
dragonPay
(
dragonPayBaseReqDto
);
return
union
payStrategyContext
.
getStrategy
(
dragonPayBaseReqDto
.
getDeviceFrom
()).
dragonPay
(
dragonPayBaseReqDto
);
}
@Override
public
String
dragonNotify
(
HttpServletRequest
request
,
String
payType
,
String
deviceFrom
)
{
log
.
info
(
"
ali
pay-->notify-->begin payType:{} deviceFrom:{}"
,
payType
,
deviceFrom
);
log
.
info
(
"
union
pay-->notify-->begin payType:{} deviceFrom:{}"
,
payType
,
deviceFrom
);
Map
<
String
,
String
[]>
requestParams
=
request
.
getParameterMap
();
Map
<
String
,
String
>
notifyMap
=
new
HashMap
<
String
,
String
>();
notifyMap
=
ali
payBiz
.
parseNotifyMsg
(
requestParams
);
log
.
info
(
"dragonNotify-->
ali
pay json : {}"
,
JSON
.
toJSONString
(
notifyMap
));
notifyMap
=
union
payBiz
.
parseNotifyMsg
(
requestParams
);
log
.
info
(
"dragonNotify-->
union
pay json : {}"
,
JSON
.
toJSONString
(
notifyMap
));
log
.
info
(
"接收到{}支付结果{}"
,
payType
,
notifyMap
);
...
...
@@ -111,43 +94,43 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
}
try
{
if
(
AlipaySignature
.
rsaCheckV1
(
notifyMap
,
merchantPubKey
,
"UTF-8"
,
"RSA2"
)){
String
tradeStatus
=
notifyMap
.
get
(
"trade_status"
);
boolean
notifyResult
=
false
;
if
(
AlipayConstant
.
AlipayTradeStateEnum
.
TRADE_SUCCESS
.
name
().
equals
(
tradeStatus
)
||
AlipayConstant
.
AlipayTradeStateEnum
.
TRADE_FINISHED
.
name
().
equals
(
tradeStatus
))
{
String
gmtPaymentStr
=
notifyMap
.
get
(
"gmt_payment"
);
// 付款时间
LocalDateTime
timeEnd
=
null
;
if
(!
StringUtil
.
isEmpty
(
gmtPaymentStr
))
{
timeEnd
=
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
gmtPaymentStr
);
}
notifyResult
=
this
.
completeSuccessOrder
(
dragonOrdersDto
,
notifyMap
.
get
(
"trade_no"
),
timeEnd
,
notifyMap
.
toString
());
}
else
{
notifyResult
=
this
.
completeFailOrder
(
dragonOrdersDto
,
notifyMap
.
toString
());
}
if
(
notifyResult
){
returnStr
=
"success"
;
}
}
else
{
// 验证失败
log
.
error
(
"ali
pay notify fail code:{} msg:{} "
,
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getCode
(),
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getMessage
());
return
returnStr
;
}
}
catch
(
AlipayApi
Exception
e
)
{
log
.
error
(
"
ali
pay notify fail 验签失败:e:{}"
,
e
);
log
.
error
(
"
ali
pay notify fail 验签失败:code:{} msg:{}"
,
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getCode
(),
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getMessage
());
//
if (AlipaySignature.rsaCheckV1(notifyMap, merchantPubKey, "UTF-8", "RSA2")){
//
String tradeStatus = notifyMap.get("trade_status");
//
boolean notifyResult = false;
//
//
if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.name().equals(tradeStatus)
//
||AlipayConstant.AlipayTradeStateEnum.TRADE_FINISHED.name().equals(tradeStatus)) {
//
//
String gmtPaymentStr = notifyMap.get("gmt_payment");// 付款时间
//
LocalDateTime timeEnd = null;
//
if (!StringUtil.isEmpty(gmtPaymentStr)) {
//
timeEnd = DateUtil.Formatter.yyyyMMddHHmmss.parse(gmtPaymentStr);
//
}
//
notifyResult = this.completeSuccessOrder(dragonOrdersDto, notifyMap.get("trade_no"), timeEnd, notifyMap.toString());
//
} else {
//
notifyResult = this.completeFailOrder(dragonOrdersDto, notifyMap.toString());
//
}
//
if(notifyResult){
//
returnStr = "success";
//
}
//
} else {// 验证失败
// log.error("union
pay notify fail code:{} msg:{} ",DragonErrorCodeEnum.TRADE_ALIPAY_SIGN_ERROR.getCode(),DragonErrorCodeEnum.TRADE_ALIPAY_SIGN_ERROR.getMessage());
//
return returnStr;
//
}
}
catch
(
Exception
e
)
{
log
.
error
(
"
union
pay notify fail 验签失败:e:{}"
,
e
);
log
.
error
(
"
union
pay notify fail 验签失败:code:{} msg:{}"
,
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getCode
(),
DragonErrorCodeEnum
.
TRADE_ALIPAY_SIGN_ERROR
.
getMessage
());
}
log
.
info
(
"返回支付通道{}信息{}"
,
payType
,
returnStr
);
log
.
info
(
"
ali
pay-->notify-->end payType:{} deviceFrom:{}"
,
payType
,
deviceFrom
);
log
.
info
(
"
union
pay-->notify-->end payType:{} deviceFrom:{}"
,
payType
,
deviceFrom
);
return
returnStr
;
}
@Override
public
DragonPayOrderQueryRespDto
checkOrderStatus
(
String
code
)
{
DragonOrdersDto
ordersDto
=
dataUtils
.
getPayOrderByCode
(
code
);
Map
<
String
,
Object
>
resultMap
=
ali
payBiz
.
tradeQuery
(
code
);
Map
<
String
,
Object
>
resultMap
=
union
payBiz
.
tradeQuery
(
code
);
DragonPayOrderQueryRespDto
respDto
=
dragonPayBiz
.
buildPayOrderQueryRespDto
(
ordersDto
);
if
(
"10000"
.
equals
(
resultMap
.
get
(
"code"
)))
{
// 当返回状态为“TRADE_FINISHED”交易成功结束和“TRADE_SUCCESS”支付成功时更新交易状态
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/biz/UnionpayBiz.java
View file @
16fee3db
This diff is collapsed.
Click to expand it.
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/constant/UnionpayConstant.java
View file @
16fee3db
...
...
@@ -10,24 +10,6 @@ package com.liquidnet.service.dragon.channel.unionpay.constant;
* @date 2021/11/8 18:12
*/
public
class
UnionpayConstant
{
public
enum
UnionpayTradeStateEnum
{
TRADE_CLOSED
(
"TRADE_CLOSED"
,
"交易关闭"
),
TRADE_FINISHED
(
"TRADE_FINISHED"
,
"支付完成"
),
TRADE_SUCCESS
(
"TRADE_SUCCESS"
,
"支付成功"
),
WAIT_BUYER_PAY
(
"WAIT_BUYER_PAY"
,
"交易创建"
),
FAIL
(
""
,
"支付失败"
);
private
String
code
;
private
String
message
;
UnionpayTradeStateEnum
(
String
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
String
getCode
()
{
return
code
;
}
}
//默认配置的是UTF-8
public
static
String
encoding
=
"UTF-8"
;
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/req/UnionpayBaseReq.java
0 → 100644
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
req
;
import
lombok.Data
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: UnionpayBaseReq
* @Package com.liquidnet.service.dragon.channel.unionpay.req
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/10 11:20
*/
@Data
public
class
UnionpayBaseReq
{
/***银联全渠道系统,产品参数***/
private
String
version
;
private
String
encoding
;
private
String
signMethod
;
private
String
txnType
;
private
String
txnSubType
;
private
String
bizType
;
private
String
channelType
;
/***商户接入参数***/
private
String
merId
;
private
String
accessType
;
private
String
orderId
;
private
String
txnTime
;
private
String
txnAmt
;
private
String
currencyCode
;
private
String
backUrl
;
/***app支付接入***/
private
String
accType
;
//
/***wap支付接入***/
private
String
riskRateInfo
;
private
String
frontUrl
;
private
String
payTimeout
;
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/req/UnionpayTradePayReq.java
View file @
16fee3db
...
...
@@ -4,28 +4,19 @@ import com.alibaba.fastjson.JSON;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class:
Ali
payTradePayReq
* @Package com.liquidnet.service.dragon.channel.
ali
pay.req
* @class:
Union
payTradePayReq
* @Package com.liquidnet.service.dragon.channel.
union
pay.req
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/9 17:50
*/
@Data
public
class
UnionpayTradePayReq
implements
Serializable
,
Cloneable
{
public
class
UnionpayTradePayReq
extends
UnionpayBaseReq
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
-
5827961038383330701L
;
private
String
productCode
;
private
BigDecimal
totalAmount
;
private
String
subject
;
private
String
body
;
private
String
outTradeNo
;
private
String
timeExpire
;
private
String
notifyUrl
;
private
String
timestamp
;
@Override
public
String
toString
(){
return
JSON
.
toJSONString
(
this
);
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/strategy/impl/AbstractUnionPayStrategy.java
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
strategy
.
impl
;
import
com.
liquidnet.commons.lang.util.DateUtil
;
import
com.
alibaba.fastjson.JSON
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.dragon.biz.DragonServiceCommonBiz
;
import
com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq
;
import
com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.req.UnionpayTradePayReq
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConfig
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConstants
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.IUnionpayStrategy
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseReqDto
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseRespDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
java.math.BigDecimal
;
import
java.util.Map
;
/**
...
...
@@ -29,34 +33,27 @@ public abstract class AbstractUnionPayStrategy implements IUnionpayStrategy {
private
DragonPayBiz
dragonPayBiz
;
@Autowired
private
DragonServiceCommonBiz
dragonServiceCommonBiz
;
private
SDKConfig
sdkConfig
;
@Autowired
private
DragonServiceCommonBiz
dragonServiceCommonBiz
;
protected
String
productCode
=
"QUICK_WAP_PAY"
;
@Value
(
"${liquidnet.dragon.unionpay.merchantId}"
)
private
String
merchantId
;
@Override
public
ResponseDto
<
DragonPayBaseRespDto
>
dragonPay
(
DragonPayBaseReqDto
dragonPayBaseReqDto
)
{
//设置productCode
setProductCode
();
AlipayTradePayReq
alipayTradePayReq
=
AlipayTradePayReq
.
getNew
();
alipayTradePayReq
.
setProductCode
(
this
.
productCode
);
alipayTradePayReq
.
setTotalAmount
(
dragonPayBaseReqDto
.
getPrice
());
alipayTradePayReq
.
setSubject
(
dragonPayBaseReqDto
.
getName
());
alipayTradePayReq
.
setBody
(
dragonPayBaseReqDto
.
getDetail
());
//dragon中支付编号
alipayTradePayReq
.
setOutTradeNo
(
dragonPayBaseReqDto
.
getCode
());
//设置订单过期时间
String
timeExpire
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
dragonPayBaseReqDto
.
getCreateDate
()).
plusMinutes
(
Long
.
parseLong
(
dragonPayBaseReqDto
.
getExpireTime
())),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
alipayTradePayReq
.
setTimeExpire
(
timeExpire
);
alipayTradePayReq
.
setNotifyUrl
(
this
.
getNotifyUrl
());
alipayTradePayReq
.
setTimestamp
(
dragonPayBaseReqDto
.
getCreateDate
());
//构造公共请求参数
UnionpayTradePayReq
payReq
=
this
.
buildRequestParamMap
(
dragonPayBaseReqDto
);
//构造个性化参数
payReq
=
this
.
appendRequestParam
(
payReq
,
dragonPayBaseReqDto
);
//调用支付
long
startTime
=
System
.
currentTimeMillis
();
Map
<
String
,
Object
>
result
=
this
.
executePay
(
alipayTradeP
ayReq
);
// log.info("dragonPay:ali
pay:"+dragonPayBaseReqDto.getDeviceFrom()+" response xmlStr: {} ", JSON.toJSONString(result));
log
.
info
(
"
ali
pay-dragonPay->耗时:{}"
,(
System
.
currentTimeMillis
()
-
startTime
)+
"毫秒"
);
Map
<
String
,
String
>
result
=
this
.
executePay
(
p
ayReq
);
log
.
debug
(
"dragonPay:union
pay:"
+
dragonPayBaseReqDto
.
getDeviceFrom
()+
" response xmlStr: {} "
,
JSON
.
toJSONString
(
result
));
log
.
info
(
"
union
pay-dragonPay->耗时:{}"
,(
System
.
currentTimeMillis
()
-
startTime
)+
"毫秒"
);
//拼接返回参数
DragonPayBaseRespDto
respDto
=
buildCommonRespDto
(
dragonPayBaseReqDto
);
respDto
=
this
.
buildResponseDto
(
respDto
,
result
);
...
...
@@ -69,20 +66,48 @@ public abstract class AbstractUnionPayStrategy implements IUnionpayStrategy {
/**
* 支付请求
* @param
alipayTradeP
ayReq
* @param
p
ayReq
* @return
*/
protected
abstract
Map
<
String
,
Object
>
executePay
(
AlipayTradePayReq
alipayTradeP
ayReq
);
protected
abstract
Map
<
String
,
String
>
executePay
(
UnionpayTradePayReq
p
ayReq
);
/**
* 设置
productCode
* 设置
notifyUrl
*/
protected
abstract
void
setProductCode
();
protected
abstract
String
getNotifyUrl
();
/**
* 设置notifyUrl
* 构造请求参数
* @param dragonPayBaseReqDto
* @return
*/
protected
abstract
String
getNotifyUrl
();
protected
UnionpayTradePayReq
buildRequestParamMap
(
DragonPayBaseReqDto
dragonPayBaseReqDto
){
UnionpayTradePayReq
payReq
=
UnionpayTradePayReq
.
getNew
();
payReq
.
setVersion
(
sdkConfig
.
getVersion
());
payReq
.
setEncoding
(
SDKConstants
.
UTF_8_ENCODING
);
payReq
.
setSignMethod
(
sdkConfig
.
getSignMethod
());
payReq
.
setTxnType
(
"01"
);
payReq
.
setTxnSubType
(
"01"
);
payReq
.
setBizType
(
"000201"
);
payReq
.
setChannelType
(
"08"
);
payReq
.
setMerId
(
merchantId
);
payReq
.
setAccessType
(
"0"
);
payReq
.
setOrderId
(
dragonPayBaseReqDto
.
getCode
());
payReq
.
setTxnTime
(
dragonPayBaseReqDto
.
getCreateDate
());
payReq
.
setTxnAmt
(
dragonPayBaseReqDto
.
getPrice
().
multiply
(
BigDecimal
.
valueOf
(
100L
)).
intValue
()+
""
);
payReq
.
setCurrencyCode
(
"156"
);
payReq
.
setBackUrl
(
this
.
getNotifyUrl
());
return
payReq
;
};
/**
* 追加请求参数
* @param payReq
* @return
*/
abstract
UnionpayTradePayReq
appendRequestParam
(
UnionpayTradePayReq
payReq
,
DragonPayBaseReqDto
dragonPayBaseReqDto
);
/**
* 构造公共返回参数
...
...
@@ -91,6 +116,7 @@ public abstract class AbstractUnionPayStrategy implements IUnionpayStrategy {
*/
protected
DragonPayBaseRespDto
buildCommonRespDto
(
DragonPayBaseReqDto
dragonPayBaseReqDto
){
DragonPayBaseRespDto
respDto
=
new
DragonPayBaseRespDto
();
respDto
.
setPayType
(
dragonPayBaseReqDto
.
getPayType
());
respDto
.
setCode
(
dragonPayBaseReqDto
.
getCode
());
respDto
.
setOrderCode
(
dragonPayBaseReqDto
.
getOrderCode
());
DragonPayBaseRespDto
.
PayData
payData
=
new
DragonPayBaseRespDto
.
PayData
();
...
...
@@ -101,6 +127,6 @@ public abstract class AbstractUnionPayStrategy implements IUnionpayStrategy {
/**
* 构造返回参数
*/
abstract
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
Object
>
respResult
);
abstract
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
String
>
respResult
);
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/strategy/impl/UnionpayStrategyAppImpl.java
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
strategy
.
impl
;
import
com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz
;
import
com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.dragon.channel.unionpay.biz.UnionpayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.req.UnionpayTradePayReq
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.annotation.StrategyUnionpayHandler
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseReqDto
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseRespDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -17,7 +19,7 @@ import java.util.Map;
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class:
AlipayStrategyWa
pImpl
* @class:
UnionpayStrategyAp
pImpl
* @Package com.liquidnet.service.dragon.channel.unionpay.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/08 18:34
...
...
@@ -26,9 +28,6 @@ import java.util.Map;
@Component
@StrategyUnionpayHandler
(
DragonConstant
.
DeviceFromEnum
.
APP
)
public
class
UnionpayStrategyAppImpl
extends
AbstractUnionPayStrategy
{
@Value
(
"${liquidnet.dragon.alipay.gataway-url}"
)
private
String
alipayGatewayUrl
;
@Value
(
"${liquidnet.dragon.url}"
)
private
String
notifyUrl
;
...
...
@@ -36,26 +35,30 @@ public class UnionpayStrategyAppImpl extends AbstractUnionPayStrategy {
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
AlipayBiz
ali
payBiz
;
private
UnionpayBiz
union
payBiz
;
@Override
protected
Map
<
String
,
Object
>
executePay
(
AlipayTradePayReq
alipayTradeP
ayReq
)
{
return
alipayBiz
.
tradeAppPay
(
alipayTradeP
ayReq
);
protected
Map
<
String
,
String
>
executePay
(
UnionpayTradePayReq
p
ayReq
)
{
return
unionpayBiz
.
tradeAppPay
(
p
ayReq
);
}
protected
void
setProductCode
()
{
this
.
productCode
=
"QUICK_MSECURITY_PAY"
;
@Override
protected
String
getNotifyUrl
()
{
return
notifyUrl
+
"/notify/unionpay/app"
;
}
@Override
protected
String
getNotifyUrl
()
{
// notifyUrl = "/notify/app/alipay/1";
return
notifyUrl
+
"/notify/alipay/app"
;
UnionpayTradePayReq
appendRequestParam
(
UnionpayTradePayReq
payReq
,
DragonPayBaseReqDto
dragonPayBaseReqDto
)
{
payReq
.
setAccType
(
"01"
);
payReq
.
setChannelType
(
"08"
);
return
payReq
;
}
@Override
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
Object
>
respResult
)
{
payBaseRespDto
.
getPayData
().
setOrderStr
(
respResult
.
get
(
"body"
).
toString
());
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
String
>
respResult
)
{
if
(
StringUtil
.
isNotNull
(
respResult
)&&
respResult
.
get
(
"tn"
)!=
null
){
payBaseRespDto
.
getPayData
().
setPrepayId
(
respResult
.
get
(
"tn"
));
}
return
payBaseRespDto
;
}
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/strategy/impl/UnionpayStrategyWapImpl.java
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
strategy
.
impl
;
import
com.liquidnet.service.dragon.channel.alipay.biz.AlipayBiz
;
import
com.liquidnet.service.dragon.channel.alipay.req.AlipayTradePayReq
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.dragon.channel.unionpay.biz.UnionpayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.req.UnionpayTradePayReq
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConfig
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.annotation.StrategyUnionpayHandler
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseReqDto
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseRespDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -17,8 +22,8 @@ import java.util.Map;
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class:
Ali
payStrategyWapImpl
* @Package com.liquidnet.service.dragon.channel.
ali
pay.strategy.impl
* @class:
Union
payStrategyWapImpl
* @Package com.liquidnet.service.dragon.channel.
union
pay.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/10 14:34
*/
...
...
@@ -26,9 +31,6 @@ import java.util.Map;
@Service
@StrategyUnionpayHandler
(
DragonConstant
.
DeviceFromEnum
.
WAP
)
public
class
UnionpayStrategyWapImpl
extends
AbstractUnionPayStrategy
{
@Value
(
"${liquidnet.dragon.alipay.gataway-url}"
)
private
String
alipayGatewayUrl
;
@Value
(
"${liquidnet.dragon.url}"
)
private
String
notifyUrl
;
...
...
@@ -36,26 +38,39 @@ public class UnionpayStrategyWapImpl extends AbstractUnionPayStrategy {
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
AlipayBiz
alipayBiz
;
private
UnionpayBiz
unionpayBiz
;
@Autowired
private
SDKConfig
sdkConfig
;
@Override
protected
Map
<
String
,
Object
>
executePay
(
AlipayTradePayReq
alipayTradeP
ayReq
)
{
return
alipayBiz
.
tradeWapPay
(
alipayTradeP
ayReq
);
protected
Map
<
String
,
String
>
executePay
(
UnionpayTradePayReq
p
ayReq
)
{
return
unionpayBiz
.
tradeWapPay
(
p
ayReq
);
}
protected
void
setProductCode
()
{
this
.
productCode
=
"QUICK_WAP_PAY"
;
@Override
protected
String
getNotifyUrl
()
{
return
notifyUrl
+
"/notify/unionpay/wap"
;
}
@Override
protected
String
getNotifyUrl
()
{
// notifyUrl = "/notify/wap/alipay/1";
return
notifyUrl
+
"/notify/alipay/wap"
;
UnionpayTradePayReq
appendRequestParam
(
UnionpayTradePayReq
payReq
,
DragonPayBaseReqDto
dragonPayBaseReqDto
)
{
//设置订单过期时间
String
timeExpire
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
dragonPayBaseReqDto
.
getCreateDate
()).
plusMinutes
(
Long
.
parseLong
(
dragonPayBaseReqDto
.
getExpireTime
())),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
payReq
.
setChannelType
(
"07"
);
payReq
.
setRiskRateInfo
(
dragonPayBaseReqDto
.
getName
());
payReq
.
setFrontUrl
(
dragonPayBaseReqDto
.
getReturnUrl
());
payReq
.
setPayTimeout
(
timeExpire
);
return
payReq
;
}
@Override
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
Object
>
respResult
)
{
payBaseRespDto
.
getPayData
().
setRedirectUrl
(
alipayGatewayUrl
+
"?"
+
respResult
.
get
(
"body"
));
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
String
>
respResult
)
{
payBaseRespDto
.
getPayData
().
setRedirectUrl
(
sdkConfig
.
getFrontTransUrl
());
if
(
StringUtil
.
isNotNull
(
respResult
)){
payBaseRespDto
.
getPayData
().
setOrderStr
(
JsonUtils
.
toJson
(
respResult
));
}
return
payBaseRespDto
;
}
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/strategy/impl/UnionpayStrategyWapPageImpl.java
0 → 100644
View file @
16fee3db
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
strategy
.
impl
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.service.dragon.channel.unionpay.biz.UnionpayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.constant.UnionpayConstant
;
import
com.liquidnet.service.dragon.channel.unionpay.req.UnionpayTradePayReq
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.AcpService
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConfig
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.annotation.StrategyUnionpayHandler
;
import
com.liquidnet.service.dragon.constant.DragonConstant
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseReqDto
;
import
com.liquidnet.service.dragon.dto.DragonPayBaseRespDto
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: UnionpayStrategyWapImpl
* @Package com.liquidnet.service.dragon.channel.unionpay.strategy.impl
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/7/10 14:34
*/
@Slf4j
@Service
@StrategyUnionpayHandler
(
DragonConstant
.
DeviceFromEnum
.
WAPPAGE
)
public
class
UnionpayStrategyWapPageImpl
extends
AbstractUnionPayStrategy
{
@Value
(
"${liquidnet.dragon.url}"
)
private
String
notifyUrl
;
@Autowired
StringRedisTemplate
stringRedisTemplate
;
@Autowired
private
UnionpayBiz
unionpayBiz
;
@Autowired
private
SDKConfig
sdkConfig
;
@Override
protected
Map
<
String
,
String
>
executePay
(
UnionpayTradePayReq
payReq
)
{
return
unionpayBiz
.
tradeWapPay
(
payReq
);
}
@Override
protected
String
getNotifyUrl
()
{
return
notifyUrl
+
"/notify/unionpay/wap"
;
}
@Override
UnionpayTradePayReq
appendRequestParam
(
UnionpayTradePayReq
payReq
,
DragonPayBaseReqDto
dragonPayBaseReqDto
)
{
//设置订单过期时间
String
timeExpire
=
DateUtil
.
format
(
DateUtil
.
Formatter
.
yyyyMMddHHmmss
.
parse
(
dragonPayBaseReqDto
.
getCreateDate
()).
plusMinutes
(
Long
.
parseLong
(
dragonPayBaseReqDto
.
getExpireTime
())),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
payReq
.
setChannelType
(
"07"
);
payReq
.
setRiskRateInfo
(
dragonPayBaseReqDto
.
getName
());
payReq
.
setFrontUrl
(
dragonPayBaseReqDto
.
getReturnUrl
());
payReq
.
setPayTimeout
(
timeExpire
);
return
payReq
;
}
@Override
DragonPayBaseRespDto
buildResponseDto
(
DragonPayBaseRespDto
payBaseRespDto
,
Map
<
String
,
String
>
respResult
)
{
String
requestFrontUrl
=
sdkConfig
.
getFrontTransUrl
();
//获取请求银联的前台地址:对应属性文件acp_sdk.properties文件中的acpsdk.frontTransUrl
String
html
=
AcpService
.
createAutoFormHtml
(
requestFrontUrl
,
respResult
,
UnionpayConstant
.
encoding
);
//生成自动跳转的Html表单
log
.
info
(
"打印请求HTML,此为请求报文,为联调排查问题的依据:"
+
html
);
payBaseRespDto
.
getPayData
().
setRedirectUrl
(
html
);
return
payBaseRespDto
;
}
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/wepay/strategy/impl/AbstractWepayStrategy.java
View file @
16fee3db
...
...
@@ -133,6 +133,7 @@ public abstract class AbstractWepayStrategy implements IWepayStrategy {
DragonPayBaseRespDto
respDto
=
new
DragonPayBaseRespDto
();
respDto
.
setCode
(
dragonPayBaseReqDto
.
getCode
());
respDto
.
setOrderCode
(
dragonPayBaseReqDto
.
getOrderCode
());
respDto
.
setPayType
(
dragonPayBaseReqDto
.
getPayType
());
DragonPayBaseRespDto
.
PayData
payData
=
new
DragonPayBaseRespDto
.
PayData
();
payData
.
setAppId
(
respWepayDto
.
getAppid
());
payData
.
setNonceStr
(
nonceStr
);
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/controller/PayController.java
View file @
16fee3db
...
...
@@ -44,7 +44,7 @@ public class PayController {
@ApiOperation
(
"Dragon支付"
)
@ApiResponse
(
code
=
200
,
message
=
"接口返回对象参数"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"payType"
,
value
=
"支付类型:alipay,wepay,
iappay"
,
example
=
"ali
pay"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"payType"
,
value
=
"支付类型:alipay,wepay,
unionpay,applepay"
,
example
=
"union
pay"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"deviceFrom"
,
value
=
"设备来源:web,wap,app,js,apple"
,
example
=
"wap"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"type"
,
value
=
"业务类型:TICKET,PRODUCT,COST,MBEANS,LIVE,VIDEO,VIP,CLUB,STRAWBERRY"
,
example
=
"TICKET"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"price"
,
value
=
"支付金额"
,
example
=
"0.1"
),
...
...
@@ -53,8 +53,8 @@ public class PayController {
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"orderCode"
,
value
=
"订单编号"
,
example
=
"ORDER0001"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"clientIp"
,
value
=
"客户端ip"
,
example
=
"127.0.0.1"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"notifyUrl"
,
value
=
"通知url"
,
example
=
"devdragon.zhengzai.tv"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"createDate"
,
value
=
"订单创建时间"
,
example
=
"2021-
07-13
13:00:00"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"expireTime"
,
value
=
"订单过期时间"
,
example
=
"
5
"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"createDate"
,
value
=
"订单创建时间"
,
example
=
"2021-
11-10
13:00:00"
),
@ApiImplicitParam
(
type
=
"form"
,
required
=
true
,
dataType
=
"String"
,
name
=
"expireTime"
,
value
=
"订单过期时间"
,
example
=
"
1000
"
),
})
@ResponseBody
public
ResponseDto
<
DragonPayBaseRespDto
>
dragonPay
(
...
...
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