记得上下班打卡 | 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
2599db37
Commit
2599db37
authored
Nov 17, 2021
by
zhengfuxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
银联订单查询。
parent
2035c8db
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
67 additions
and
23 deletions
+67
-23
DragonErrorCodeEnum.java
...iquidnet/service/dragon/constant/DragonErrorCodeEnum.java
+2
-0
PayChannelStrategyUnionpayImpl.java
...channel/strategy/impl/PayChannelStrategyUnionpayImpl.java
+31
-2
UnionpayBiz.java
...dnet/service/dragon/channel/unionpay/biz/UnionpayBiz.java
+13
-20
UnionpayConstant.java
...ce/dragon/channel/unionpay/constant/UnionpayConstant.java
+20
-0
AcpService.java
...idnet/service/dragon/channel/unionpay/sdk/AcpService.java
+1
-1
No files found.
liquidnet-bus-api/liquidnet-service-dragon-api/src/main/java/com/liquidnet/service/dragon/constant/DragonErrorCodeEnum.java
View file @
2599db37
...
@@ -27,6 +27,8 @@ public enum DragonErrorCodeEnum {
...
@@ -27,6 +27,8 @@ public enum DragonErrorCodeEnum {
TRADE_ALIPAY_QUERY_ERROR
(
"PAY0010010"
,
"支付宝订单查询失败!"
),
TRADE_ALIPAY_QUERY_ERROR
(
"PAY0010010"
,
"支付宝订单查询失败!"
),
TRADE_UNIONPAY_QUERY_ERROR
(
"PAY0040002"
,
"银联订单查询失败,因缓存消失,查询不到订单导致!"
),
TRADE_WEPAY_SIGN_ERROR
(
"PAY0020001"
,
"微信签名异常!"
),
TRADE_WEPAY_SIGN_ERROR
(
"PAY0020001"
,
"微信签名异常!"
),
TRADE_UNIONPAY_SIGN_ERROR
(
"PAY0040001"
,
"银联签名异常!"
),
TRADE_UNIONPAY_SIGN_ERROR
(
"PAY0040001"
,
"银联签名异常!"
),
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/strategy/impl/PayChannelStrategyUnionpayImpl.java
View file @
2599db37
...
@@ -8,6 +8,7 @@ import com.liquidnet.service.dragon.channel.alipay.constant.AlipayConstant;
...
@@ -8,6 +8,7 @@ import com.liquidnet.service.dragon.channel.alipay.constant.AlipayConstant;
import
com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler
;
import
com.liquidnet.service.dragon.channel.strategy.annotation.StrategyPayChannelHandler
;
import
com.liquidnet.service.dragon.channel.strategy.biz.DragonPayBiz
;
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.biz.UnionpayBiz
;
import
com.liquidnet.service.dragon.channel.unionpay.constant.UnionpayConstant
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.AcpService
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.AcpService
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConstants
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConstants
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.UnionpayStrategyContext
;
import
com.liquidnet.service.dragon.channel.unionpay.strategy.UnionpayStrategyContext
;
...
@@ -118,9 +119,37 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
...
@@ -118,9 +119,37 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
@Override
@Override
public
DragonPayOrderQueryRespDto
checkOrderStatus
(
String
code
)
{
public
DragonPayOrderQueryRespDto
checkOrderStatus
(
String
code
)
{
// 查看是哪个deviceForm 的支付
DragonOrdersDto
ordersDto
=
dataUtils
.
getPayOrderByCode
(
code
);
DragonOrdersDto
ordersDto
=
dataUtils
.
getPayOrderByCode
(
code
);
Map
<
String
,
Object
>
resultMap
=
unionpayBiz
.
tradeQuery
(
code
);
if
(
null
==
ordersDto
){
throw
new
LiquidnetServiceException
(
DragonErrorCodeEnum
.
TRADE_UNIONPAY_QUERY_ERROR
.
getCode
(),
DragonErrorCodeEnum
.
TRADE_UNIONPAY_QUERY_ERROR
.
getMessage
());
}
DragonPayOrderQueryRespDto
respDto
=
dragonPayBiz
.
buildPayOrderQueryRespDto
(
ordersDto
);
DragonPayOrderQueryRespDto
respDto
=
dragonPayBiz
.
buildPayOrderQueryRespDto
(
ordersDto
);
//判断是wap还是app
if
(
ordersDto
.
getPaymentType
().
contains
(
"WAP"
)){
//wap类型查询订单
Map
<
String
,
String
>
resultMap
=
unionpayBiz
.
tradeQuery
(
code
);
if
((
"00"
).
equals
(
resultMap
.
get
(
"respCode"
))){
//如果查询交易成功
String
origRespCode
=
resultMap
.
get
(
"origRespCode"
);
if
((
UnionpayConstant
.
UnionTradeStateEnum
.
TRADE_SUCCESS
).
equals
(
origRespCode
)||
UnionpayConstant
.
UnionTradeStateEnum
.
TRADE_DEFECTIVENESS_SUCCESS
.
equals
(
origRespCode
)){
//交易成功
respDto
.
setStatus
(
Integer
.
valueOf
(
DragonConstant
.
PayStatusEnum
.
STATUS_PAID
.
getCode
()));
}
else
if
((
"03"
).
equals
(
origRespCode
)||
(
"04"
).
equals
(
origRespCode
)||
(
"05"
).
equals
(
origRespCode
)){
//订单处理中或交易状态未明,需稍后发起交易状态查询交易 【如果最终尚未确定交易是否成功请以对账文件为准】
respDto
.
setStatus
(
Integer
.
valueOf
(
DragonConstant
.
PayStatusEnum
.
STATUS_UNPAID
.
getCode
()));
}
else
{
//其他应答码为交易失败
//TODO
respDto
.
setStatus
(
Integer
.
valueOf
(
DragonConstant
.
PayStatusEnum
.
STATUS_PAY_FAIL
.
getCode
()));
}
}
}
else
{
//app类型查询订单
}
/* DragonPayOrderQueryRespDto respDto = dragonPayBiz.buildPayOrderQueryRespDto(ordersDto);
if ("10000".equals(resultMap.get("code"))) {
if ("10000".equals(resultMap.get("code"))) {
// 当返回状态为“TRADE_FINISHED”交易成功结束和“TRADE_SUCCESS”支付成功时更新交易状态
// 当返回状态为“TRADE_FINISHED”交易成功结束和“TRADE_SUCCESS”支付成功时更新交易状态
if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.getCode().equals(resultMap.get("tradeStatus"))
if (AlipayConstant.AlipayTradeStateEnum.TRADE_SUCCESS.getCode().equals(resultMap.get("tradeStatus"))
...
@@ -134,7 +163,7 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
...
@@ -134,7 +163,7 @@ public class PayChannelStrategyUnionpayImpl extends AbstractPayChannelStrategyIm
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode()));
respDto.setStatus(Integer.valueOf(DragonConstant.PayStatusEnum.STATUS_UNPAID.getCode()));
}else{
}else{
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getCode(),DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getMessage());
throw new LiquidnetServiceException(DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getCode(),DragonErrorCodeEnum.TRADE_ALIPAY_QUERY_ERROR.getMessage());
}
}
*/
return
respDto
;
return
respDto
;
}
}
}
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/biz/UnionpayBiz.java
View file @
2599db37
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
biz
;
package
com
.
liquidnet
.
service
.
dragon
.
channel
.
unionpay
.
biz
;
import
com.liquidnet.common.exception.LiquidnetServiceException
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.dragon.channel.unionpay.constant.UnionpayConstant
;
import
com.liquidnet.service.dragon.channel.unionpay.constant.UnionpayConstant
;
...
@@ -7,6 +8,7 @@ import com.liquidnet.service.dragon.channel.unionpay.req.UnionpayTradePayReq;
...
@@ -7,6 +8,7 @@ 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.AcpService
;
import
com.liquidnet.service.dragon.channel.unionpay.sdk.SDKConfig
;
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.sdk.SDKConstants
;
import
com.liquidnet.service.dragon.constant.DragonErrorCodeEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
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
;
...
@@ -190,16 +192,14 @@ public class UnionpayBiz {
...
@@ -190,16 +192,14 @@ public class UnionpayBiz {
/**
/**
* 订单查询
*
wap 银联
订单查询
*
*
* @return
* @return
*/
*/
public
Map
<
String
,
Object
>
tradeQuery
(
String
outTradeNo
)
{
public
Map
<
String
,
String
>
tradeQuery
(
String
outTradeNo
)
{
log
.
info
(
"UnionpayBiz.tradeQuery-->> "
);
log
.
info
(
"UnionpayBiz.tradeQuery-->> "
);
String
txnTime
=
DateUtil
.
format
(
LocalDateTime
.
now
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmssTrim
);
String
txnTime
=
DateUtil
.
format
(
LocalDateTime
.
now
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmssTrim
);
Map
<
String
,
String
>
data
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
>
data
=
new
HashMap
<
String
,
String
>();
/***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/
/***银联全渠道系统,产品参数,除了encoding自行选择外其他不需修改***/
data
.
put
(
"version"
,
sdkConfig
.
getVersion
());
//版本号
data
.
put
(
"version"
,
sdkConfig
.
getVersion
());
//版本号
data
.
put
(
"encoding"
,
UnionpayConstant
.
encoding
);
//字符集编码 可以使用UTF-8,GBK两种方式
data
.
put
(
"encoding"
,
UnionpayConstant
.
encoding
);
//字符集编码 可以使用UTF-8,GBK两种方式
...
@@ -207,27 +207,21 @@ public class UnionpayBiz {
...
@@ -207,27 +207,21 @@ public class UnionpayBiz {
data
.
put
(
"txnType"
,
"00"
);
//交易类型 00-默认
data
.
put
(
"txnType"
,
"00"
);
//交易类型 00-默认
data
.
put
(
"txnSubType"
,
"00"
);
//交易子类型 默认00
data
.
put
(
"txnSubType"
,
"00"
);
//交易子类型 默认00
data
.
put
(
"bizType"
,
"000201"
);
//业务类型
data
.
put
(
"bizType"
,
"000201"
);
//业务类型
/***商户接入参数***/
/***商户接入参数***/
data
.
put
(
"merId"
,
merchantId
);
//商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试
data
.
put
(
"merId"
,
merchantId
);
//商户号码,请改成自己申请的商户号或者open上注册得来的777商户号测试
data
.
put
(
"accessType"
,
"0"
);
//接入类型,商户接入固定填0,不需修改
data
.
put
(
"accessType"
,
"0"
);
//接入类型,商户接入固定填0,不需修改
/***要调通交易以下字段必须修改***/
/***要调通交易以下字段必须修改***/
data
.
put
(
"orderId"
,
outTradeNo
);
//****商户订单号,每次发交易测试需修改为被查询的交易的订单号
data
.
put
(
"orderId"
,
outTradeNo
);
//****商户订单号,每次发交易测试需修改为被查询的交易的订单号
data
.
put
(
"txnTime"
,
txnTime
);
//****订单发送时间,每次发交易测试需修改为被查询的交易的订单发送时间
data
.
put
(
"txnTime"
,
txnTime
);
//****订单发送时间,每次发交易测试需修改为被查询的交易的订单发送时间
/**请求参数设置完毕,以下对请求参数进行签名并发送http post请求,接收同步应答报文------------->**/
/**请求参数设置完毕,以下对请求参数进行签名并发送http post请求,接收同步应答报文------------->**/
Map
<
String
,
String
>
reqData
=
acpService
.
sign
(
data
,
UnionpayConstant
.
encoding
);
//报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。
Map
<
String
,
String
>
reqData
=
acpService
.
sign
(
data
,
UnionpayConstant
.
encoding
);
//报文中certId,signature的值是在signData方法中获取并自动赋值的,只要证书配置正确即可。
String
url
=
sdkConfig
.
get
SingleQuery
Url
();
//交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.singleQueryUrl
String
url
=
sdkConfig
.
get
BackTrans
Url
();
//交易请求url从配置文件读取对应属性文件acp_sdk.properties中的 acpsdk.singleQueryUrl
Map
<
String
,
String
>
rspData
=
acpService
.
post
(
reqData
,
url
,
UnionpayConstant
.
encoding
);
//发送请求报文并接受同步应答(默认连接超时时间30秒,读取返回结果超时时间30秒);这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过
Map
<
String
,
String
>
rspData
=
acpService
.
post
(
reqData
,
url
,
UnionpayConstant
.
encoding
);
//发送请求报文并接受同步应答(默认连接超时时间30秒,读取返回结果超时时间30秒);这里调用signData之后,调用submitUrl之前不能对submitFromData中的键值对做任何修改,如果修改会导致验签不通过
/**对应答码的处理,请根据您的业务逻辑来编写程序,以下应答码处理逻辑仅供参考------------->**/
/**对应答码的处理,请根据您的业务逻辑来编写程序,以下应答码处理逻辑仅供参考------------->**/
//应答码规范参考open.unionpay.com帮助中心 下载 产品接口规范 《平台接入接口规范-第5部分-附录》
//应答码规范参考open.unionpay.com帮助中心 下载 产品接口规范 《平台接入接口规范-第5部分-附录》
if
(!
rspData
.
isEmpty
()){
if
(!
rspData
.
isEmpty
()){
if
(
acpService
.
validate
(
rspData
,
UnionpayConstant
.
encoding
)){
if
(
acpService
.
validate
(
rspData
,
UnionpayConstant
.
encoding
)){
log
.
info
(
"验证签名成功"
);
/* if(("00").equals(rspData.get("respCode"))){//如果查询交易成功
if
((
"00"
).
equals
(
rspData
.
get
(
"respCode"
))){
//如果查询交易成功
String origRespCode = rspData.get("origRespCode");
String origRespCode = rspData.get("origRespCode");
if(("00").equals(origRespCode)){
if(("00").equals(origRespCode)){
//交易成功,更新商户订单状态
//交易成功,更新商户订单状态
...
@@ -246,21 +240,20 @@ public class UnionpayBiz {
...
@@ -246,21 +240,20 @@ public class UnionpayBiz {
}else{//查询交易本身失败,如应答码10/11检查查询报文是否正确
}else{//查询交易本身失败,如应答码10/11检查查询报文是否正确
//TODO
//TODO
}
}
*/
}
else
{
}
else
{
log
.
error
(
"验证签名失败"
);
log
.
error
(
"
wap 银联订单查询,
验证签名失败"
);
//TODO 检查验证签名失败的原因
throw
new
LiquidnetServiceException
(
DragonErrorCodeEnum
.
TRADE_UNIONPAY_SIGN_ERROR
.
TRADE_ALIPAY_QUERY_ERROR
.
getCode
(),
DragonErrorCodeEnum
.
TRADE_UNIONPAY_SIGN_ERROR
.
getMessage
());
}
}
}
else
{
}
else
{
//未返回正确的http状态
//未返回正确的http状态
log
.
error
(
"未获取到返回报文或返回http状态码非200"
);
log
.
error
(
"
wap 银联订单查询,
未获取到返回报文或返回http状态码非200"
);
}
}
/*String reqMessage = this.genHtmlResult(reqData);
String
reqMessage
=
this
.
genHtmlResult
(
reqData
);
String rspMessage = this.genHtmlResult(rspData);
String rspMessage = this.genHtmlResult(rspData);
log.info("请求报文:<br/>"+reqMessage+"<br/>");
log.info("请求报文:<br/>"+reqMessage+"<br/>");
log
.
info
(
"应答报文:</br>"
+
rspMessage
+
""
);
log.info("应答报文:</br>"+rspMessage+"");
*/
return
null
;
return
rspData
;
}
}
public
Map
<
String
,
Object
>
appSingleRefund
()
public
Map
<
String
,
Object
>
appSingleRefund
()
...
...
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/constant/UnionpayConstant.java
View file @
2599db37
...
@@ -12,4 +12,24 @@ package com.liquidnet.service.dragon.channel.unionpay.constant;
...
@@ -12,4 +12,24 @@ package com.liquidnet.service.dragon.channel.unionpay.constant;
public
class
UnionpayConstant
{
public
class
UnionpayConstant
{
//默认配置的是UTF-8
//默认配置的是UTF-8
public
static
String
encoding
=
"UTF-8"
;
public
static
String
encoding
=
"UTF-8"
;
public
enum
UnionTradeStateEnum
{
TRADE_CLOSED
(
"TRADE_CLOSED"
,
"交易关闭"
),
TRADE_FINISHED
(
"TRADE_FINISHED"
,
"支付完成"
),
TRADE_DEFECTIVENESS_SUCCESS
(
"A6"
,
"有缺陷的成功"
),
TRADE_SUCCESS
(
"00"
,
"支付成功"
),
WAIT_BUYER_PAY
(
"WAIT_BUYER_PAY"
,
"交易创建"
),
FAIL
(
"01"
,
"支付失败"
);
private
String
code
;
private
String
message
;
UnionTradeStateEnum
(
String
code
,
String
message
)
{
this
.
code
=
code
;
this
.
message
=
message
;
}
public
String
getCode
()
{
return
code
;
}
}
}
}
liquidnet-bus-service/liquidnet-service-dragon/liquidnet-service-dragon-impl/src/main/java/com/liquidnet/service/dragon/channel/unionpay/sdk/AcpService.java
View file @
2599db37
...
@@ -316,7 +316,7 @@ public class AcpService {
...
@@ -316,7 +316,7 @@ public class AcpService {
return
null
;
return
null
;
}
}
Map
<
String
,
String
>
result
=
SDKUtil
.
parseRespString
(
new
String
(
respBytes
,
encoding
));
Map
<
String
,
String
>
result
=
SDKUtil
.
parseRespString
(
new
String
(
respBytes
,
encoding
));
log
.
info
(
"应答参数:"
+
result
);
log
.
info
(
"
银联
应答参数:"
+
result
);
return
result
;
return
result
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
"post失败:"
+
e
.
getMessage
(),
e
);
log
.
error
(
"post失败:"
+
e
.
getMessage
(),
e
);
...
...
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