Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Jeepay
Commits
deee24e5
Commit
deee24e5
authored
Nov 15, 2017
by
jmdhappy
Browse files
提交转账,退款接口;重构商户通知;修复已知Bug
parent
d5333a0d
Changes
76
Show whitespace changes
Inline
Side-by-side
xxpay4dubbo/xxpay4dubbo-api/src/main/java/org/xxpay/dubbo/api/service/IPayChannel4WxService.java
View file @
deee24e5
...
...
@@ -11,4 +11,12 @@ public interface IPayChannel4WxService {
Map
doWxPayReq
(
String
jsonParam
);
Map
doWxTransReq
(
String
jsonParam
);
Map
getWxTransReq
(
String
jsonParam
);
Map
doWxRefundReq
(
String
jsonParam
);
Map
getWxRefundReq
(
String
jsonParam
);
}
xxpay4dubbo/xxpay4dubbo-api/src/main/java/org/xxpay/dubbo/api/service/IPayOrderService.java
View file @
deee24e5
...
...
@@ -9,13 +9,13 @@ import java.util.Map;
*/
public
interface
IPayOrderService
{
Map
create
PayOrder
(
String
jsonParam
);
Map
create
(
String
jsonParam
);
Map
select
PayOrder
(
String
jsonParam
);
Map
select
(
String
jsonParam
);
Map
select
PayOrder
ByMchIdAndPayOrderId
(
String
jsonParam
);
Map
selectByMchIdAndPayOrderId
(
String
jsonParam
);
Map
select
PayOrder
ByMchIdAndMchOrderNo
(
String
jsonParam
);
Map
selectByMchIdAndMchOrderNo
(
String
jsonParam
);
Map
updateStatus4Ing
(
String
jsonParam
);
...
...
xxpay4dubbo/xxpay4dubbo-api/src/main/java/org/xxpay/dubbo/api/service/IRefundOrderService.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.api.service
;
import
java.util.Map
;
/**
* @author: dingzhiwei
* @date: 17/10/26
* @description: 退款业务
*/
public
interface
IRefundOrderService
{
Map
create
(
String
jsonParam
);
Map
select
(
String
jsonParam
);
Map
selectByMchIdAndRefundOrderId
(
String
jsonParam
);
Map
selectByMchIdAndMchRefundNo
(
String
jsonParam
);
Map
updateStatus4Ing
(
String
jsonParam
);
Map
updateStatus4Success
(
String
jsonParam
);
Map
updateStatus4Complete
(
String
jsonParam
);
Map
sendRefundNotify
(
String
jsonParam
);
}
xxpay4dubbo/xxpay4dubbo-api/src/main/java/org/xxpay/dubbo/api/service/ITransOrderService.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.api.service
;
import
java.util.Map
;
/**
* @author: dingzhiwei
* @date: 17/10/26
* @description: 转账业务
*/
public
interface
ITransOrderService
{
Map
create
(
String
jsonParam
);
Map
select
(
String
jsonParam
);
Map
selectByMchIdAndTransOrderId
(
String
jsonParam
);
Map
selectByMchIdAndMchTransNo
(
String
jsonParam
);
Map
updateStatus4Ing
(
String
jsonParam
);
Map
updateStatus4Success
(
String
jsonParam
);
Map
updateStatus4Complete
(
String
jsonParam
);
Map
sendTransNotify
(
String
jsonParam
);
}
xxpay4dubbo/xxpay4dubbo-service/pom.xml
View file @
deee24e5
...
...
@@ -48,6 +48,11 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-configuration-processor
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<!--wx_pay-->
<dependency>
<groupId>
com.github.binarywang
</groupId>
...
...
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/Notify4
Base
Pay.java
→
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/
Base
Notify4
Mch
Pay.java
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.xxpay.common.constant.PayConstant
;
...
...
@@ -8,8 +9,9 @@ import org.xxpay.common.util.MyLog;
import
org.xxpay.common.util.PayDigestUtil
;
import
org.xxpay.common.util.XXPayUtil
;
import
org.xxpay.dal.dao.model.MchInfo
;
import
org.xxpay.dal.dao.model.MchNotify
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dubbo.service.mq.Mq4PayNotify
;
import
org.xxpay.dubbo.service.mq.Mq4
Mch
PayNotify
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
...
...
@@ -17,19 +19,19 @@ import java.util.HashMap;
import
java.util.Map
;
/**
* @Description: 支付通知处理基类
* @Description:
商户
支付通知处理基类
* @author dingzhiwei jmdhappy@126.com
* @date 2017-
07
-0
5
* @date 2017-
11
-0
1
* @version V1.0
* @Copyright: www.xxpay.org
*/
@Component
public
class
Notify4
Base
Pay
extends
BaseService
{
public
class
Base
Notify4
Mch
Pay
extends
BaseService
4PayOrder
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
Notify4
Base
Pay
.
class
);
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
Base
Notify4
Mch
Pay
.
class
);
@Autowired
private
Mq4PayNotify
mq4PayNotify
;
private
Mq4
Mch
PayNotify
mq4
Mch
PayNotify
;
/**
* 创建响应URL
...
...
@@ -42,30 +44,30 @@ public class Notify4BasePay extends BaseService {
MchInfo
mchInfo
=
super
.
baseSelectMchInfo
(
mchId
);
String
resKey
=
mchInfo
.
getResKey
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"payOrderId"
,
payOrder
.
getPayOrderId
()
==
null
?
""
:
payOrder
.
getPayOrderId
());
// 支付订单号
paramMap
.
put
(
"mchId"
,
payOrder
.
getMchId
()
==
null
?
""
:
payOrder
.
getMchId
());
// 商户ID
paramMap
.
put
(
"mchOrderNo"
,
payOrder
.
getMchOrderNo
()
==
null
?
""
:
payOrder
.
getMchOrderNo
());
// 商户订单号
paramMap
.
put
(
"channelId"
,
payOrder
.
getChannelId
()
==
null
?
""
:
payOrder
.
getChannelId
());
// 渠道ID
paramMap
.
put
(
"amount"
,
payOrder
.
getAmount
()
==
null
?
""
:
payOrder
.
getAmount
()
);
// 支付金额
paramMap
.
put
(
"currency"
,
payOrder
.
getCurrency
()
==
null
?
""
:
payOrder
.
getCurrency
());
// 货币类型
paramMap
.
put
(
"status"
,
payOrder
.
getStatus
()
==
null
?
""
:
payOrder
.
getStatus
());
// 支付状态
paramMap
.
put
(
"clientIp"
,
payOrder
.
getClientIp
()==
null
?
""
:
payOrder
.
getClientIp
());
// 客户端IP
paramMap
.
put
(
"device"
,
payOrder
.
getDevice
()==
null
?
""
:
payOrder
.
getDevice
());
// 设备
paramMap
.
put
(
"subject"
,
payOrder
.
getSubject
()==
null
?
""
:
payOrder
.
getSubject
());
// 商品标题
paramMap
.
put
(
"channelOrderNo"
,
payOrder
.
getChannelOrderNo
()==
null
?
""
:
payOrder
.
getChannelOrderNo
());
// 渠道订单号
paramMap
.
put
(
"param1"
,
payOrder
.
getParam1
()==
null
?
""
:
payOrder
.
getParam1
());
// 扩展参数1
paramMap
.
put
(
"param2"
,
payOrder
.
getParam2
()==
null
?
""
:
payOrder
.
getParam2
());
// 扩展参数2
paramMap
.
put
(
"paySuccTime"
,
payOrder
.
getPaySuccTime
()==
null
?
""
:
payOrder
.
getPaySuccTime
());
// 支付成功时间
paramMap
.
put
(
"backType"
,
backType
==
null
?
""
:
backType
);
paramMap
.
put
(
"payOrderId"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getPayOrderId
()
,
""
)
);
// 支付订单号
paramMap
.
put
(
"mchId"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getMchId
()
,
""
)
);
// 商户ID
paramMap
.
put
(
"mchOrderNo"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getMchOrderNo
()
,
""
)
);
// 商户订单号
paramMap
.
put
(
"channelId"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getChannelId
()
,
""
)
);
// 渠道ID
paramMap
.
put
(
"amount"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getAmount
()
,
""
));
// 支付金额
paramMap
.
put
(
"currency"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getCurrency
()
,
""
)
);
// 货币类型
paramMap
.
put
(
"status"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getStatus
()
,
""
)
);
// 支付状态
paramMap
.
put
(
"clientIp"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getClientIp
()
,
""
)
);
// 客户端IP
paramMap
.
put
(
"device"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getDevice
()
,
""
)
);
// 设备
paramMap
.
put
(
"subject"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getSubject
()
,
""
)
);
// 商品标题
paramMap
.
put
(
"channelOrderNo"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getChannelOrderNo
()
,
""
)
);
// 渠道订单号
paramMap
.
put
(
"param1"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getParam1
()
,
""
)
);
// 扩展参数1
paramMap
.
put
(
"param2"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getParam2
()
,
""
)
);
// 扩展参数2
paramMap
.
put
(
"paySuccTime"
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getPaySuccTime
()
,
""
)
);
// 支付成功时间
paramMap
.
put
(
"backType"
,
ObjectUtils
.
defaultIfNull
(
backType
,
""
)
);
// 先对原文签名
String
reqSign
=
PayDigestUtil
.
getSign
(
paramMap
,
resKey
);
paramMap
.
put
(
"sign"
,
reqSign
);
// 签名
// 签名后再对有中文参数编码
try
{
paramMap
.
put
(
"device"
,
URLEncoder
.
encode
(
payOrder
.
getDevice
()==
null
?
""
:
payOrder
.
getDevice
(),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"subject"
,
URLEncoder
.
encode
(
payOrder
.
getSubject
()==
null
?
""
:
payOrder
.
getSubject
(),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param1"
,
URLEncoder
.
encode
(
payOrder
.
getParam1
()==
null
?
""
:
payOrder
.
getParam1
(),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param2"
,
URLEncoder
.
encode
(
payOrder
.
getParam2
()==
null
?
""
:
payOrder
.
getParam2
(),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"device"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
payOrder
.
getDevice
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"subject"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
payOrder
.
getSubject
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param1"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
payOrder
.
getParam1
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param2"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
payOrder
.
getParam2
(),
""
),
PayConstant
.
RESP_UTF8
));
}
catch
(
UnsupportedEncodingException
e
)
{
_log
.
error
(
"URL Encode exception."
,
e
);
return
null
;
...
...
@@ -76,43 +78,37 @@ public class Notify4BasePay extends BaseService {
return
sb
.
toString
();
}
/**
* 处理支付结果前台页面跳转
*/
public
boolean
doPage
(
PayOrder
payOrder
)
{
String
redirectUrl
=
createNotifyUrl
(
payOrder
,
"1"
);
_log
.
info
(
"redirect to respUrl:"
+
redirectUrl
);
// 前台跳转业务系统
/*try {
response.sendRedirect(redirectUrl);
} catch (IOException e) {
_log.error("XxPay sendRedirect exception. respUrl="+redirectUrl, e);
return false;
}*/
return
true
;
}
/**
* 处理支付结果后台服务器通知
*/
public
void
doNotify
(
PayOrder
payOrder
)
{
public
void
doNotify
(
PayOrder
payOrder
,
boolean
isFirst
)
{
_log
.
info
(
">>>>>> PAY开始回调通知业务系统 <<<<<<"
);
// 发起后台通知业务系统
JSONObject
object
=
createNotifyInfo
(
payOrder
);
JSONObject
object
=
createNotifyInfo
(
payOrder
,
isFirst
);
try
{
mq4PayNotify
.
send
(
object
.
toJSONString
());
mq4
Mch
PayNotify
.
send
(
object
.
toJSONString
());
}
catch
(
Exception
e
)
{
_log
.
error
(
"payOrderId=
{}
,sendMessage error."
,
payOrder
!=
null
?
payOrder
.
getPayOrderId
()
:
""
,
e
);
_log
.
error
(
e
,
"payOrderId=
%s
,sendMessage error."
,
ObjectUtils
.
defaultIfNull
(
payOrder
.
getPayOrderId
()
,
""
)
);
}
_log
.
info
(
">>>>>> PAY回调通知业务系统完成 <<<<<<"
);
}
public
JSONObject
createNotifyInfo
(
PayOrder
payOrder
)
{
public
JSONObject
createNotifyInfo
(
PayOrder
payOrder
,
boolean
isFirst
)
{
String
url
=
createNotifyUrl
(
payOrder
,
"2"
);
if
(
isFirst
)
{
int
result
=
baseInsertMchNotify
(
payOrder
.
getPayOrderId
(),
payOrder
.
getMchId
(),
payOrder
.
getMchOrderNo
(),
PayConstant
.
MCH_NOTIFY_TYPE_PAY
,
url
);
_log
.
info
(
"增加商户通知记录,orderId={},result:{}"
,
payOrder
.
getPayOrderId
(),
result
);
}
int
count
=
0
;
if
(!
isFirst
)
{
MchNotify
mchNotify
=
baseSelectMchNotify
(
payOrder
.
getPayOrderId
());
if
(
mchNotify
!=
null
)
count
=
mchNotify
.
getNotifyCount
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"method"
,
"GET"
);
object
.
put
(
"url"
,
createNotifyUrl
(
payOrder
,
"2"
)
);
object
.
put
(
"url"
,
url
);
object
.
put
(
"orderId"
,
payOrder
.
getPayOrderId
());
object
.
put
(
"count"
,
payOrder
.
getNotifyC
ount
()
);
object
.
put
(
"count"
,
c
ount
);
object
.
put
(
"createTime"
,
System
.
currentTimeMillis
());
return
object
;
}
...
...
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseNotify4MchRefund.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.common.util.MyLog
;
import
org.xxpay.common.util.PayDigestUtil
;
import
org.xxpay.common.util.XXPayUtil
;
import
org.xxpay.dal.dao.model.MchInfo
;
import
org.xxpay.dal.dao.model.MchNotify
;
import
org.xxpay.dal.dao.model.RefundOrder
;
import
org.xxpay.dubbo.service.mq.Mq4MchRefundNotify
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @Description: 商户转账通知处理基类
* @author dingzhiwei jmdhappy@126.com
* @date 2017-11-01
* @version V1.0
* @Copyright: www.xxpay.org
*/
@Component
public
class
BaseNotify4MchRefund
extends
BaseService4RefundOrder
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
BaseNotify4MchRefund
.
class
);
@Autowired
private
Mq4MchRefundNotify
mq4MchRefundNotify
;
/**
* 创建响应URL
* @param refundOrder
* @param backType 1:前台页面;2:后台接口
* @return
*/
public
String
createNotifyUrl
(
RefundOrder
refundOrder
,
String
backType
)
{
String
mchId
=
refundOrder
.
getMchId
();
MchInfo
mchInfo
=
super
.
baseSelectMchInfo
(
mchId
);
String
resKey
=
mchInfo
.
getResKey
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"refundOrderId"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getRefundOrderId
(),
""
));
// 退款订单号
paramMap
.
put
(
"mchId"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getMchId
(),
""
));
// 商户ID
paramMap
.
put
(
"mchOrderNo"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getMchRefundNo
(),
""
));
// 商户订单号
paramMap
.
put
(
"channelId"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getChannelId
(),
""
));
// 渠道ID
paramMap
.
put
(
"refundAmount"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getRefundAmount
(),
""
));
// 退款金额
paramMap
.
put
(
"currency"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getCurrency
(),
""
));
// 货币类型
paramMap
.
put
(
"status"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getStatus
(),
""
));
// 退款状态
paramMap
.
put
(
"result"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getResult
(),
""
));
// 退款结果
paramMap
.
put
(
"clientIp"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getClientIp
(),
""
));
// 客户端IP
paramMap
.
put
(
"device"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getDevice
(),
""
));
// 设备
paramMap
.
put
(
"channelOrderNo"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getChannelOrderNo
(),
""
));
// 渠道订单号
paramMap
.
put
(
"param1"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getParam1
(),
""
));
// 扩展参数1
paramMap
.
put
(
"param2"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getParam2
(),
""
));
// 扩展参数2
paramMap
.
put
(
"refundSuccTime"
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getRefundSuccTime
(),
""
));
// 退款成功时间
paramMap
.
put
(
"backType"
,
backType
==
null
?
""
:
backType
);
// 先对原文签名
String
reqSign
=
PayDigestUtil
.
getSign
(
paramMap
,
resKey
);
paramMap
.
put
(
"sign"
,
reqSign
);
// 签名
// 签名后再对有中文参数编码
try
{
paramMap
.
put
(
"device"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getDevice
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param1"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getParam1
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param2"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getParam2
(),
""
),
PayConstant
.
RESP_UTF8
));
}
catch
(
UnsupportedEncodingException
e
)
{
_log
.
error
(
"URL Encode exception."
,
e
);
return
null
;
}
String
param
=
XXPayUtil
.
genUrlParams
(
paramMap
);
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
refundOrder
.
getNotifyUrl
()).
append
(
"?"
).
append
(
param
);
return
sb
.
toString
();
}
/**
* 处理商户转账后台服务器通知
*/
public
void
doNotify
(
RefundOrder
refundOrder
,
boolean
isFirst
)
{
_log
.
info
(
">>>>>> REFUND开始回调通知业务系统 <<<<<<"
);
// 发起后台通知业务系统
JSONObject
object
=
createNotifyInfo
(
refundOrder
,
isFirst
);
try
{
mq4MchRefundNotify
.
send
(
object
.
toJSONString
());
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"refundOrderId=%s,sendMessage error."
,
ObjectUtils
.
defaultIfNull
(
refundOrder
.
getRefundOrderId
(),
""
));
}
_log
.
info
(
">>>>>> REFUND回调通知业务系统完成 <<<<<<"
);
}
public
JSONObject
createNotifyInfo
(
RefundOrder
refundOrder
,
boolean
isFirst
)
{
String
url
=
createNotifyUrl
(
refundOrder
,
"2"
);
if
(
isFirst
)
{
int
result
=
baseInsertMchNotify
(
refundOrder
.
getRefundOrderId
(),
refundOrder
.
getMchId
(),
refundOrder
.
getMchRefundNo
(),
PayConstant
.
MCH_NOTIFY_TYPE_REFUND
,
url
);
_log
.
info
(
"增加商户通知记录,orderId={},result:{}"
,
refundOrder
.
getRefundOrderId
(),
result
);
}
int
count
=
0
;
if
(!
isFirst
)
{
MchNotify
mchNotify
=
baseSelectMchNotify
(
refundOrder
.
getRefundOrderId
());
if
(
mchNotify
!=
null
)
count
=
mchNotify
.
getNotifyCount
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"method"
,
"GET"
);
object
.
put
(
"url"
,
url
);
object
.
put
(
"orderId"
,
refundOrder
.
getRefundOrderId
());
object
.
put
(
"count"
,
count
);
object
.
put
(
"createTime"
,
System
.
currentTimeMillis
());
return
object
;
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseNotify4MchTrans.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.common.util.MyLog
;
import
org.xxpay.common.util.PayDigestUtil
;
import
org.xxpay.common.util.XXPayUtil
;
import
org.xxpay.dal.dao.model.MchInfo
;
import
org.xxpay.dal.dao.model.MchNotify
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dubbo.service.mq.Mq4MchTransNotify
;
import
java.io.UnsupportedEncodingException
;
import
java.net.URLEncoder
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @Description: 商户转账通知处理基类
* @author dingzhiwei jmdhappy@126.com
* @date 2017-11-01
* @version V1.0
* @Copyright: www.xxpay.org
*/
@Component
public
class
BaseNotify4MchTrans
extends
BaseService4TransOrder
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
BaseNotify4MchTrans
.
class
);
@Autowired
private
Mq4MchTransNotify
mq4MchTransNotify
;
/**
* 创建响应URL
* @param transOrder
* @param backType 1:前台页面;2:后台接口
* @return
*/
public
String
createNotifyUrl
(
TransOrder
transOrder
,
String
backType
)
{
String
mchId
=
transOrder
.
getMchId
();
MchInfo
mchInfo
=
super
.
baseSelectMchInfo
(
mchId
);
String
resKey
=
mchInfo
.
getResKey
();
Map
<
String
,
Object
>
paramMap
=
new
HashMap
<>();
paramMap
.
put
(
"transOrderId"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getTransOrderId
(),
""
));
// 转账订单号
paramMap
.
put
(
"mchId"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getMchId
(),
""
));
// 商户ID
paramMap
.
put
(
"mchOrderNo"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getMchTransNo
(),
""
));
// 商户订单号
paramMap
.
put
(
"channelId"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getChannelId
(),
""
));
// 渠道ID
paramMap
.
put
(
"amount"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getAmount
(),
""
));
// 支付金额
paramMap
.
put
(
"currency"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getCurrency
(),
""
));
// 货币类型
paramMap
.
put
(
"status"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getStatus
(),
""
));
// 转账状态
paramMap
.
put
(
"result"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getResult
(),
""
));
// 转账结果
paramMap
.
put
(
"clientIp"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getClientIp
(),
""
));
// 客户端IP
paramMap
.
put
(
"device"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getDevice
(),
""
));
// 设备
paramMap
.
put
(
"channelOrderNo"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getChannelOrderNo
(),
""
));
// 渠道订单号
paramMap
.
put
(
"param1"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getParam1
(),
""
));
// 扩展参数1
paramMap
.
put
(
"param2"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getParam2
(),
""
));
// 扩展参数2
paramMap
.
put
(
"transSuccTime"
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getTransSuccTime
(),
""
));
// 转账成功时间
paramMap
.
put
(
"backType"
,
backType
==
null
?
""
:
backType
);
// 先对原文签名
String
reqSign
=
PayDigestUtil
.
getSign
(
paramMap
,
resKey
);
paramMap
.
put
(
"sign"
,
reqSign
);
// 签名
// 签名后再对有中文参数编码
try
{
paramMap
.
put
(
"device"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
transOrder
.
getDevice
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param1"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
transOrder
.
getParam1
(),
""
),
PayConstant
.
RESP_UTF8
));
paramMap
.
put
(
"param2"
,
URLEncoder
.
encode
(
ObjectUtils
.
defaultIfNull
(
transOrder
.
getParam2
(),
""
),
PayConstant
.
RESP_UTF8
));
}
catch
(
UnsupportedEncodingException
e
)
{
_log
.
error
(
"URL Encode exception."
,
e
);
return
null
;
}
String
param
=
XXPayUtil
.
genUrlParams
(
paramMap
);
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
transOrder
.
getNotifyUrl
()).
append
(
"?"
).
append
(
param
);
return
sb
.
toString
();
}
/**
* 处理商户转账后台服务器通知
*/
public
void
doNotify
(
TransOrder
transOrder
,
boolean
isFirst
)
{
_log
.
info
(
">>>>>> TRANS开始回调通知业务系统 <<<<<<"
);
// 发起后台通知业务系统
JSONObject
object
=
createNotifyInfo
(
transOrder
,
isFirst
);
try
{
mq4MchTransNotify
.
send
(
object
.
toJSONString
());
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"transOrderId=%s,sendMessage error."
,
ObjectUtils
.
defaultIfNull
(
transOrder
.
getTransOrderId
(),
""
));
}
_log
.
info
(
">>>>>> TRANS回调通知业务系统完成 <<<<<<"
);
}
public
JSONObject
createNotifyInfo
(
TransOrder
transOrder
,
boolean
isFirst
)
{
String
url
=
createNotifyUrl
(
transOrder
,
"2"
);
if
(
isFirst
)
{
int
result
=
baseInsertMchNotify
(
transOrder
.
getTransOrderId
(),
transOrder
.
getMchId
(),
transOrder
.
getMchTransNo
(),
PayConstant
.
MCH_NOTIFY_TYPE_TRANS
,
url
);
_log
.
info
(
"增加商户通知记录,orderId={},result:{}"
,
transOrder
.
getTransOrderId
(),
result
);
}
int
count
=
0
;
if
(!
isFirst
)
{
MchNotify
mchNotify
=
baseSelectMchNotify
(
transOrder
.
getTransOrderId
());
if
(
mchNotify
!=
null
)
count
=
mchNotify
.
getNotifyCount
();
}
JSONObject
object
=
new
JSONObject
();
object
.
put
(
"method"
,
"GET"
);
object
.
put
(
"url"
,
url
);
object
.
put
(
"orderId"
,
transOrder
.
getTransOrderId
());
object
.
put
(
"count"
,
count
);
object
.
put
(
"createTime"
,
System
.
currentTimeMillis
());
return
object
;
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseService.java
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.dal.dao.mapper.MchInfoMapper
;
import
org.xxpay.dal.dao.mapper.MchNotifyMapper
;
import
org.xxpay.dal.dao.mapper.PayChannelMapper
;
import
org.xxpay.dal.dao.mapper.PayOrderMapper
;
import
org.xxpay.dal.dao.model.*
;
import
java.util.Date
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
...
...
@@ -19,15 +22,14 @@ import java.util.List;
@Service
public
class
BaseService
{
@Autowired
private
PayOrderMapper
payOrderMapper
;
@Autowired
private
MchInfoMapper
mchInfoMapper
;
@Autowired
private
PayChannelMapper
payChannelMapper
;
@Autowired
private
MchNotifyMapper
mchNotifyMapper
;
public
MchInfo
baseSelectMchInfo
(
String
mchId
)
{
return
mchInfoMapper
.
selectByPrimaryKey
(
mchId
);
...
...
@@ -43,77 +45,50 @@ public class BaseService {
return
payChannelList
.
get
(
0
);
}
public
int
baseCreatePayOrder
(
PayOrder
payOrder
)
{
return
payOrderMapper
.
insertSelective
(
payOrder
);
}
public
PayOrder
baseSelectPayOrder
(
String
payOrderId
)
{
return
payOrderMapper
.
selectByPrimaryKey
(
payOrderId
);
}
public
PayOrder
baseSelectPayOrderByMchIdAndPayOrderId
(
String
mchId
,
String
payOrderId
)
{
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
List
<
PayOrder
>
payOrderList
=
payOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
payOrderList
)
?
null
:
payOrderList
.
get
(
0
);
}
public
PayOrder
baseSelectPayOrderByMchIdAndMchOrderNo
(
String
mchId
,
String
mchOrderNo
)
{
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andMchOrderNoEqualTo
(
mchOrderNo
);
List
<
PayOrder
>
payOrderList
=
payOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
payOrderList
)
?
null
:
payOrderList
.
get
(
0
);
public
MchNotify
baseSelectMchNotify
(
String
orderId
)
{
return
mchNotifyMapper
.
selectByPrimaryKey
(
orderId
);
}
public
int
baseUpdateStatus4Ing
(
String
payOrderId
,
String
channelOrderNo
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_PAYING
);
if
(
channelOrderNo
!=
null
)
payOrder
.
setChannelOrderNo
(
channelOrderNo
);
payOrder
.
setPaySuccTime
(
System
.
currentTimeMillis
());
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_INIT
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
public
int
baseInsertMchNotify
(
String
orderId
,
String
mchId
,
String
mchOrderNo
,
String
orderType
,
String
notifyUrl
)
{
MchNotify
mchNotify
=
new
MchNotify
();
mchNotify
.
setOrderId
(
orderId
);
mchNotify
.
setMchId
(
mchId
);
mchNotify
.
setMchOrderNo
(
mchOrderNo
);
mchNotify
.
setOrderType
(
orderType
);
mchNotify
.
setNotifyUrl
(
notifyUrl
);
return
mchNotifyMapper
.
insertSelectiveOnDuplicateKeyUpdate
(
mchNotify
);
}
public
int
baseUpdateStatus4Success
(
String
payOrderId
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setPayOrderId
(
payOrderId
);
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_SUCCESS
);
payOrder
.
setPaySuccTime
(
System
.
currentTimeMillis
());
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_PAYING
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
public
int
baseUpdateMchNotifySuccess
(
String
orderId
,
String
result
,
byte
notifyCount
)
{
MchNotify
mchNotify
=
new
MchNotify
();
mchNotify
.
setStatus
(
PayConstant
.
MCH_NOTIFY_STATUS_SUCCESS
);
mchNotify
.
setResult
(
result
);
mchNotify
.
setNotifyCount
(
notifyCount
);
mchNotify
.
setLastNotifyTime
(
new
Date
());
MchNotifyExample
example
=
new
MchNotifyExample
();
MchNotifyExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andOrderIdEqualTo
(
orderId
);
List
values
=
new
LinkedList
<>();
values
.
add
(
PayConstant
.
MCH_NOTIFY_STATUS_NOTIFYING
);
values
.
add
(
PayConstant
.
MCH_NOTIFY_STATUS_FAIL
);
criteria
.
andStatusIn
(
values
);
return
mchNotifyMapper
.
updateByExampleSelective
(
mchNotify
,
example
);
}
public
int
baseUpdateStatus4Complete
(
String
payOrderId
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setPayOrderId
(
payOrderId
);
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_COMPLETE
);
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_SUCCESS
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
public
int
baseUpdateMchNotifyFail
(
String
orderId
,
String
result
,
byte
notifyCount
)
{
MchNotify
mchNotify
=
new
MchNotify
();
mchNotify
.
setStatus
(
PayConstant
.
MCH_NOTIFY_STATUS_FAIL
);
mchNotify
.
setResult
(
result
);
mchNotify
.
setNotifyCount
(
notifyCount
);
mchNotify
.
setLastNotifyTime
(
new
Date
());
MchNotifyExample
example
=
new
MchNotifyExample
();
MchNotifyExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andOrderIdEqualTo
(
orderId
);
List
values
=
new
LinkedList
<>();
values
.
add
(
PayConstant
.
MCH_NOTIFY_STATUS_NOTIFYING
);
values
.
add
(
PayConstant
.
MCH_NOTIFY_STATUS_FAIL
);
return
mchNotifyMapper
.
updateByExampleSelective
(
mchNotify
,
example
);
}
public
int
baseUpdateNotify
(
String
payOrderId
,
byte
count
)
{
PayOrder
newPayOrder
=
new
PayOrder
();
newPayOrder
.
setNotifyCount
(
count
);
newPayOrder
.
setLastNotifyTime
(
System
.
currentTimeMillis
());
newPayOrder
.
setPayOrderId
(
payOrderId
);
return
payOrderMapper
.
updateByPrimaryKeySelective
(
newPayOrder
);
}
public
int
baseUpdateNotify
(
PayOrder
payOrder
)
{
return
payOrderMapper
.
updateByPrimaryKeySelective
(
payOrder
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseService4PayOrder.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.dal.dao.mapper.PayOrderMapper
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dal.dao.model.PayOrderExample
;
import
java.util.List
;
/**
* @author: dingzhiwei
* @date: 17/10/30
* @description:
*/
@Service
public
class
BaseService4PayOrder
extends
BaseService
{
@Autowired
private
PayOrderMapper
payOrderMapper
;
public
int
baseCreatePayOrder
(
PayOrder
payOrder
)
{
return
payOrderMapper
.
insertSelective
(
payOrder
);
}
public
PayOrder
baseSelectPayOrder
(
String
payOrderId
)
{
return
payOrderMapper
.
selectByPrimaryKey
(
payOrderId
);
}
public
PayOrder
baseSelectByMchIdAndPayOrderId
(
String
mchId
,
String
payOrderId
)
{
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
List
<
PayOrder
>
payOrderList
=
payOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
payOrderList
)
?
null
:
payOrderList
.
get
(
0
);
}
public
PayOrder
baseSelectByMchIdAndMchOrderNo
(
String
mchId
,
String
mchOrderNo
)
{
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andMchOrderNoEqualTo
(
mchOrderNo
);
List
<
PayOrder
>
payOrderList
=
payOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
payOrderList
)
?
null
:
payOrderList
.
get
(
0
);
}
public
int
baseUpdateStatus4Ing
(
String
payOrderId
,
String
channelOrderNo
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_PAYING
);
if
(
channelOrderNo
!=
null
)
payOrder
.
setChannelOrderNo
(
channelOrderNo
);
payOrder
.
setPaySuccTime
(
System
.
currentTimeMillis
());
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_INIT
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
}
public
int
baseUpdateStatus4Success
(
String
payOrderId
)
{
return
baseUpdateStatus4Success
(
payOrderId
,
null
);
}
public
int
baseUpdateStatus4Success
(
String
payOrderId
,
String
channelOrderNo
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setPayOrderId
(
payOrderId
);
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_SUCCESS
);
payOrder
.
setPaySuccTime
(
System
.
currentTimeMillis
());
if
(
StringUtils
.
isNotBlank
(
channelOrderNo
))
payOrder
.
setChannelOrderNo
(
channelOrderNo
);
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_PAYING
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
}
public
int
baseUpdateStatus4Complete
(
String
payOrderId
)
{
PayOrder
payOrder
=
new
PayOrder
();
payOrder
.
setPayOrderId
(
payOrderId
);
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_COMPLETE
);
PayOrderExample
example
=
new
PayOrderExample
();
PayOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andPayOrderIdEqualTo
(
payOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
PAY_STATUS_SUCCESS
);
return
payOrderMapper
.
updateByExampleSelective
(
payOrder
,
example
);
}
public
int
baseUpdateNotify
(
String
payOrderId
,
byte
count
)
{
PayOrder
newPayOrder
=
new
PayOrder
();
newPayOrder
.
setNotifyCount
(
count
);
newPayOrder
.
setLastNotifyTime
(
System
.
currentTimeMillis
());
newPayOrder
.
setPayOrderId
(
payOrderId
);
return
payOrderMapper
.
updateByPrimaryKeySelective
(
newPayOrder
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseService4RefundOrder.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.dal.dao.mapper.RefundOrderMapper
;
import
org.xxpay.dal.dao.mapper.TransOrderMapper
;
import
org.xxpay.dal.dao.model.RefundOrder
;
import
org.xxpay.dal.dao.model.RefundOrderExample
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dal.dao.model.TransOrderExample
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author: dingzhiwei
* @date: 17/10/30
* @description:
*/
@Service
public
class
BaseService4RefundOrder
extends
BaseService
{
@Autowired
private
RefundOrderMapper
refundOrderMapper
;
public
int
baseCreateRefundOrder
(
RefundOrder
refundOrder
)
{
return
refundOrderMapper
.
insertSelective
(
refundOrder
);
}
public
RefundOrder
baseSelectRefundOrder
(
String
refundOrderId
)
{
return
refundOrderMapper
.
selectByPrimaryKey
(
refundOrderId
);
}
public
RefundOrder
baseSelectByMchIdAndRefundOrderId
(
String
mchId
,
String
refundOrderId
)
{
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andRefundOrderIdEqualTo
(
refundOrderId
);
List
<
RefundOrder
>
refundOrderList
=
refundOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
refundOrderList
)
?
null
:
refundOrderList
.
get
(
0
);
}
public
RefundOrder
baseSelectByMchIdAndMchRefundNo
(
String
mchId
,
String
mchRefundNo
)
{
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andMchRefundNoEqualTo
(
mchRefundNo
);
List
<
RefundOrder
>
refundOrderList
=
refundOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
refundOrderList
)
?
null
:
refundOrderList
.
get
(
0
);
}
public
int
baseUpdateStatus4Ing
(
String
refundOrderId
,
String
channelOrderNo
)
{
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setStatus
(
PayConstant
.
REFUND_STATUS_REFUNDING
);
if
(
channelOrderNo
!=
null
)
refundOrder
.
setChannelOrderNo
(
channelOrderNo
);
refundOrder
.
setRefundSuccTime
(
new
Date
());
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andRefundOrderIdEqualTo
(
refundOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
REFUND_STATUS_INIT
);
return
refundOrderMapper
.
updateByExampleSelective
(
refundOrder
,
example
);
}
public
int
baseUpdateStatus4Success
(
String
refundOrderId
)
{
return
baseUpdateStatus4Success
(
refundOrderId
,
null
);
}
public
int
baseUpdateStatus4Success
(
String
refundOrderId
,
String
channelOrderNo
)
{
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setRefundOrderId
(
refundOrderId
);
refundOrder
.
setStatus
(
PayConstant
.
REFUND_STATUS_SUCCESS
);
refundOrder
.
setResult
(
PayConstant
.
REFUND_RESULT_SUCCESS
);
refundOrder
.
setRefundSuccTime
(
new
Date
());
if
(
StringUtils
.
isNotBlank
(
channelOrderNo
))
refundOrder
.
setChannelOrderNo
(
channelOrderNo
);
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andRefundOrderIdEqualTo
(
refundOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
REFUND_STATUS_REFUNDING
);
return
refundOrderMapper
.
updateByExampleSelective
(
refundOrder
,
example
);
}
public
int
baseUpdateStatus4Complete
(
String
refundOrderId
)
{
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setRefundOrderId
(
refundOrderId
);
refundOrder
.
setStatus
(
PayConstant
.
REFUND_STATUS_COMPLETE
);
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andRefundOrderIdEqualTo
(
refundOrderId
);
List
values
=
CollectionUtils
.
arrayToList
(
new
Byte
[]
{
PayConstant
.
REFUND_STATUS_SUCCESS
,
PayConstant
.
REFUND_STATUS_FAIL
});
criteria
.
andStatusIn
(
values
);
return
refundOrderMapper
.
updateByExampleSelective
(
refundOrder
,
example
);
}
public
int
baseUpdateStatus4Fail
(
String
refundOrderId
,
String
channelErrCode
,
String
channelErrMsg
)
{
RefundOrder
refundOrder
=
new
RefundOrder
();
refundOrder
.
setStatus
(
PayConstant
.
REFUND_STATUS_FAIL
);
refundOrder
.
setResult
(
PayConstant
.
REFUND_RESULT_FAIL
);
if
(
channelErrCode
!=
null
)
refundOrder
.
setChannelErrCode
(
channelErrCode
);
if
(
channelErrMsg
!=
null
)
refundOrder
.
setChannelErrMsg
(
channelErrMsg
);
RefundOrderExample
example
=
new
RefundOrderExample
();
RefundOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andRefundOrderIdEqualTo
(
refundOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
REFUND_STATUS_REFUNDING
);
return
refundOrderMapper
.
updateByExampleSelective
(
refundOrder
,
example
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/BaseService4TransOrder.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service
;
import
org.apache.commons.lang3.ArrayUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.dal.dao.mapper.TransOrderMapper
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dal.dao.model.TransOrderExample
;
import
java.util.Date
;
import
java.util.LinkedList
;
import
java.util.List
;
/**
* @author: dingzhiwei
* @date: 17/10/30
* @description:
*/
@Service
public
class
BaseService4TransOrder
extends
BaseService
{
@Autowired
private
TransOrderMapper
transOrderMapper
;
public
int
baseCreateTransOrder
(
TransOrder
transOrder
)
{
return
transOrderMapper
.
insertSelective
(
transOrder
);
}
public
TransOrder
baseSelectTransOrder
(
String
transOrderId
)
{
return
transOrderMapper
.
selectByPrimaryKey
(
transOrderId
);
}
public
TransOrder
baseSelectByMchIdAndTransOrderId
(
String
mchId
,
String
transOrderId
)
{
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andTransOrderIdEqualTo
(
transOrderId
);
List
<
TransOrder
>
transOrderList
=
transOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
transOrderList
)
?
null
:
transOrderList
.
get
(
0
);
}
public
TransOrder
baseSelectByMchIdAndMchTransNo
(
String
mchId
,
String
mchTransNo
)
{
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andMchIdEqualTo
(
mchId
);
criteria
.
andMchTransNoEqualTo
(
mchTransNo
);
List
<
TransOrder
>
transOrderList
=
transOrderMapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
transOrderList
)
?
null
:
transOrderList
.
get
(
0
);
}
public
int
baseUpdateStatus4Ing
(
String
transOrderId
,
String
channelOrderNo
)
{
TransOrder
transOrder
=
new
TransOrder
();
transOrder
.
setStatus
(
PayConstant
.
TRANS_STATUS_TRANING
);
if
(
channelOrderNo
!=
null
)
transOrder
.
setChannelOrderNo
(
channelOrderNo
);
transOrder
.
setTransSuccTime
(
new
Date
());
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransOrderIdEqualTo
(
transOrderId
);
List
<
Byte
>
list
=
new
LinkedList
<>();
list
.
add
(
PayConstant
.
TRANS_STATUS_INIT
);
list
.
add
(
PayConstant
.
TRANS_STATUS_FAIL
);
criteria
.
andStatusIn
(
list
);
return
transOrderMapper
.
updateByExampleSelective
(
transOrder
,
example
);
}
public
int
baseUpdateStatus4Success
(
String
transOrderId
)
{
return
baseUpdateStatus4Success
(
transOrderId
,
null
);
}
public
int
baseUpdateStatus4Success
(
String
transOrderId
,
String
channelOrderNo
)
{
TransOrder
transOrder
=
new
TransOrder
();
transOrder
.
setTransOrderId
(
transOrderId
);
transOrder
.
setStatus
(
PayConstant
.
TRANS_STATUS_SUCCESS
);
transOrder
.
setResult
(
PayConstant
.
TRANS_RESULT_SUCCESS
);
transOrder
.
setTransSuccTime
(
new
Date
());
if
(
StringUtils
.
isNotBlank
(
channelOrderNo
))
transOrder
.
setChannelOrderNo
(
channelOrderNo
);
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransOrderIdEqualTo
(
transOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
TRANS_STATUS_TRANING
);
return
transOrderMapper
.
updateByExampleSelective
(
transOrder
,
example
);
}
public
int
baseUpdateStatus4Complete
(
String
transOrderId
)
{
TransOrder
transOrder
=
new
TransOrder
();
transOrder
.
setTransOrderId
(
transOrderId
);
transOrder
.
setStatus
(
PayConstant
.
TRANS_STATUS_COMPLETE
);
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransOrderIdEqualTo
(
transOrderId
);
List
values
=
CollectionUtils
.
arrayToList
(
new
Byte
[]
{
PayConstant
.
TRANS_STATUS_SUCCESS
,
PayConstant
.
TRANS_STATUS_FAIL
});
criteria
.
andStatusIn
(
values
);
return
transOrderMapper
.
updateByExampleSelective
(
transOrder
,
example
);
}
public
int
baseUpdateStatus4Fail
(
String
transOrderId
,
String
channelErrCode
,
String
channelErrMsg
)
{
TransOrder
transOrder
=
new
TransOrder
();
transOrder
.
setStatus
(
PayConstant
.
TRANS_STATUS_FAIL
);
transOrder
.
setResult
(
PayConstant
.
TRANS_RESULT_FAIL
);
if
(
channelErrCode
!=
null
)
transOrder
.
setChannelErrCode
(
channelErrCode
);
if
(
channelErrMsg
!=
null
)
transOrder
.
setChannelErrMsg
(
channelErrMsg
);
TransOrderExample
example
=
new
TransOrderExample
();
TransOrderExample
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andTransOrderIdEqualTo
(
transOrderId
);
criteria
.
andStatusEqualTo
(
PayConstant
.
TRANS_STATUS_TRANING
);
return
transOrderMapper
.
updateByExampleSelective
(
transOrder
,
example
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/NotifyPayServiceImpl.java
View file @
deee24e5
...
...
@@ -9,19 +9,17 @@ import com.github.binarywang.wxpay.config.WxPayConfig;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.github.binarywang.wxpay.service.impl.WxPayServiceImpl
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.StringUtils
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.common.domain.BaseParam
;
import
org.xxpay.common.enumm.RetEnum
;
import
org.xxpay.common.util.JsonUtil
;
import
org.xxpay.common.util.MyLog
;
import
org.xxpay.common.util.ObjectValidUtil
;
import
org.xxpay.common.util.RpcUtil
;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.PayChannel
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dubbo.api.service.INotifyPayService
;
import
org.xxpay.dubbo.service.Notify4
Base
Pay
;
import
org.xxpay.dubbo.service.
Base
Notify4
Mch
Pay
;
import
org.xxpay.dubbo.service.channel.alipay.AlipayConfig
;
import
org.xxpay.dubbo.service.channel.wechat.WxPayUtil
;
...
...
@@ -35,7 +33,7 @@ import java.util.Map;
* @description:
*/
@Service
(
version
=
"1.0.0"
)
public
class
NotifyPayServiceImpl
extends
Notify4
Base
Pay
implements
INotifyPayService
{
public
class
NotifyPayServiceImpl
extends
Base
Notify4
Mch
Pay
implements
INotifyPayService
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
NotifyPayServiceImpl
.
class
);
...
...
@@ -72,7 +70,7 @@ public class NotifyPayServiceImpl extends Notify4BasePay implements INotifyPaySe
payOrder
=
(
PayOrder
)
payContext
.
get
(
"payOrder"
);
byte
payStatus
=
payOrder
.
getStatus
();
// 0:订单生成,1:支付中,-1:支付失败,2:支付成功,3:业务处理完成,-2:订单过期
if
(
payStatus
!=
PayConstant
.
PAY_STATUS_SUCCESS
&&
payStatus
!=
PayConstant
.
PAY_STATUS_COMPLETE
)
{
updatePayOrderRows
=
super
.
baseUpdateStatus4Success
(
payOrder
.
getPayOrderId
());
updatePayOrderRows
=
super
.
baseUpdateStatus4Success
(
payOrder
.
getPayOrderId
()
,
StrUtil
.
toString
(
params
.
get
(
"trade_no"
),
null
)
);
if
(
updatePayOrderRows
!=
1
)
{
_log
.
error
(
"{}更新支付状态失败,将payOrderId={},更新payStatus={}失败"
,
logPrefix
,
payOrder
.
getPayOrderId
(),
PayConstant
.
PAY_STATUS_SUCCESS
);
_log
.
info
(
"{}响应给支付宝结果:{}"
,
logPrefix
,
PayConstant
.
RETURN_ALIPAY_VALUE_FAIL
);
...
...
@@ -87,7 +85,7 @@ public class NotifyPayServiceImpl extends Notify4BasePay implements INotifyPaySe
_log
.
info
(
"{}响应给支付宝结果:{}"
,
logPrefix
,
PayConstant
.
RETURN_ALIPAY_VALUE_SUCCESS
);
return
RpcUtil
.
createBizResult
(
baseParam
,
PayConstant
.
RETURN_ALIPAY_VALUE_SUCCESS
);
}
doNotify
(
payOrder
);
doNotify
(
payOrder
,
true
);
_log
.
info
(
"====== 完成处理支付宝支付回调通知 ======"
);
return
RpcUtil
.
createBizResult
(
baseParam
,
PayConstant
.
RETURN_ALIPAY_VALUE_SUCCESS
);
}
...
...
@@ -126,7 +124,7 @@ public class NotifyPayServiceImpl extends Notify4BasePay implements INotifyPaySe
// 处理订单
byte
payStatus
=
payOrder
.
getStatus
();
// 0:订单生成,1:支付中,-1:支付失败,2:支付成功,3:业务处理完成,-2:订单过期
if
(
payStatus
!=
PayConstant
.
PAY_STATUS_SUCCESS
&&
payStatus
!=
PayConstant
.
PAY_STATUS_COMPLETE
)
{
int
updatePayOrderRows
=
super
.
baseUpdateStatus4Success
(
payOrder
.
getPayOrderId
());
int
updatePayOrderRows
=
super
.
baseUpdateStatus4Success
(
payOrder
.
getPayOrderId
()
,
result
.
getTransactionId
()
);
if
(
updatePayOrderRows
!=
1
)
{
_log
.
error
(
"{}更新支付状态失败,将payOrderId={},更新payStatus={}失败"
,
logPrefix
,
payOrder
.
getPayOrderId
(),
PayConstant
.
PAY_STATUS_SUCCESS
);
return
RpcUtil
.
createBizResult
(
baseParam
,
WxPayNotifyResponse
.
fail
(
"处理订单失败"
));
...
...
@@ -135,7 +133,7 @@ public class NotifyPayServiceImpl extends Notify4BasePay implements INotifyPaySe
payOrder
.
setStatus
(
PayConstant
.
PAY_STATUS_SUCCESS
);
}
// 业务系统后端通知
doNotify
(
payOrder
);
doNotify
(
payOrder
,
true
);
_log
.
info
(
"====== 完成处理微信支付回调通知 ======"
);
return
RpcUtil
.
createBizResult
(
baseParam
,
WxPayNotifyResponse
.
success
(
"OK"
));
}
catch
(
WxPayException
e
)
{
...
...
@@ -168,7 +166,7 @@ public class NotifyPayServiceImpl extends Notify4BasePay implements INotifyPaySe
if
(
payOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
try
{
// 发送业务支付通知
super
.
doNotify
(
payOrder
);
super
.
doNotify
(
payOrder
,
false
);
}
catch
(
Exception
e
)
{
return
RpcUtil
.
createBizResult
(
baseParam
,
0
);
}
...
...
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/PayChannel4AliServiceImpl.java
View file @
deee24e5
...
...
@@ -6,14 +6,12 @@ import com.alibaba.fastjson.JSONObject;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.AlipayClient
;
import
com.alipay.api.DefaultAlipayClient
;
import
com.alipay.api.domain.AlipayTradeAppPayModel
;
import
com.alipay.api.domain.AlipayTradePagePayModel
;
import
com.alipay.api.domain.AlipayTradePrecreateModel
;
import
com.alipay.api.domain.AlipayTradeWapPayModel
;
import
com.alipay.api.request.AlipayTradeAppPayRequest
;
import
com.alipay.api.request.AlipayTradePagePayRequest
;
import
com.alipay.api.request.AlipayTradePrecreateRequest
;
import
com.alipay.api.request.AlipayTradeWapPayRequest
;
import
com.alipay.api.domain.*
;
import
com.alipay.api.request.*
;
import
com.alipay.api.response.AlipayFundTransOrderQueryResponse
;
import
com.alipay.api.response.AlipayFundTransToaccountTransferResponse
;
import
com.alipay.api.response.AlipayTradeFastpayRefundQueryResponse
;
import
com.alipay.api.response.AlipayTradeRefundResponse
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -23,10 +21,16 @@ import org.xxpay.common.enumm.RetEnum;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.PayChannel
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dal.dao.model.RefundOrder
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dubbo.api.service.IPayChannel4AliService
;
import
org.xxpay.dubbo.service.BaseService
;
import
org.xxpay.dubbo.service.BaseService4PayOrder
;
import
org.xxpay.dubbo.service.BaseService4RefundOrder
;
import
org.xxpay.dubbo.service.BaseService4TransOrder
;
import
org.xxpay.dubbo.service.channel.alipay.AlipayConfig
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
...
...
@@ -35,13 +39,22 @@ import java.util.Map;
* @description:
*/
@Service
(
version
=
"1.0.0"
)
public
class
PayChannel4AliServiceImpl
extends
BaseService
implements
IPayChannel4AliService
{
public
class
PayChannel4AliServiceImpl
implements
IPayChannel4AliService
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
PayChannel4AliServiceImpl
.
class
);
@Autowired
private
AlipayConfig
alipayConfig
;
@Autowired
private
BaseService4PayOrder
baseService4PayOrder
;
@Autowired
private
BaseService4TransOrder
baseService4TransOrder
;
@Autowired
private
BaseService4RefundOrder
baseService4RefundOrder
;
@Override
public
Map
doAliPayWapReq
(
String
jsonParam
)
{
String
logPrefix
=
"【支付宝WAP支付下单】"
;
...
...
@@ -52,7 +65,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
payOrderObj
=
baseParam
.
isNullValue
(
"payOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"payOrder"
).
toString
());
PayOrder
payOrder
=
BeanConvertUtils
.
map2Bean
(
payOrderObj
,
PayOrder
.
class
);
PayOrder
payOrder
=
JSON
.
toJavaObject
(
payOrderObj
,
PayOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
payOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
...
...
@@ -60,7 +73,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
String
payOrderId
=
payOrder
.
getPayOrderId
();
String
mchId
=
payOrder
.
getMchId
();
String
channelId
=
payOrder
.
getChannelId
();
PayChannel
payChannel
=
sup
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
PayChannel
payChannel
=
baseService4PayOrd
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradeWapPayRequest
alipay_request
=
new
AlipayTradeWapPayRequest
();
...
...
@@ -95,7 +108,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
e
.
printStackTrace
();
}
_log
.
info
(
"{}生成跳转路径:payUrl={}"
,
logPrefix
,
payUrl
);
sup
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
baseService4PayOrd
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
_log
.
info
(
"{}生成请求支付宝数据,req={}"
,
logPrefix
,
alipay_request
.
getBizModel
());
_log
.
info
(
"###### 商户统一下单处理完成 ######"
);
Map
<
String
,
Object
>
map
=
XXPayUtil
.
makeRetMap
(
PayConstant
.
RETURN_VALUE_SUCCESS
,
""
,
PayConstant
.
RETURN_VALUE_SUCCESS
,
null
);
...
...
@@ -114,7 +127,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
payOrderObj
=
baseParam
.
isNullValue
(
"payOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"payOrder"
).
toString
());
PayOrder
payOrder
=
BeanConvertUtils
.
map2Bean
(
payOrderObj
,
PayOrder
.
class
);
PayOrder
payOrder
=
JSON
.
toJavaObject
(
payOrderObj
,
PayOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
payOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
...
...
@@ -122,7 +135,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
String
payOrderId
=
payOrder
.
getPayOrderId
();
String
mchId
=
payOrder
.
getMchId
();
String
channelId
=
payOrder
.
getChannelId
();
PayChannel
payChannel
=
sup
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
PayChannel
payChannel
=
baseService4PayOrd
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradePagePayRequest
alipay_request
=
new
AlipayTradePagePayRequest
();
...
...
@@ -160,7 +173,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
e
.
printStackTrace
();
}
_log
.
info
(
"{}生成跳转路径:payUrl={}"
,
logPrefix
,
payUrl
);
sup
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
baseService4PayOrd
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
_log
.
info
(
"{}生成请求支付宝数据,req={}"
,
logPrefix
,
alipay_request
.
getBizModel
());
_log
.
info
(
"###### 商户统一下单处理完成 ######"
);
Map
<
String
,
Object
>
map
=
XXPayUtil
.
makeRetMap
(
PayConstant
.
RETURN_VALUE_SUCCESS
,
""
,
PayConstant
.
RETURN_VALUE_SUCCESS
,
null
);
...
...
@@ -179,7 +192,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
payOrderObj
=
baseParam
.
isNullValue
(
"payOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"payOrder"
).
toString
());
PayOrder
payOrder
=
BeanConvertUtils
.
map2Bean
(
payOrderObj
,
PayOrder
.
class
);
PayOrder
payOrder
=
JSON
.
toJavaObject
(
payOrderObj
,
PayOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
payOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
...
...
@@ -187,7 +200,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
String
payOrderId
=
payOrder
.
getPayOrderId
();
String
mchId
=
payOrder
.
getMchId
();
String
channelId
=
payOrder
.
getChannelId
();
PayChannel
payChannel
=
sup
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
PayChannel
payChannel
=
baseService4PayOrd
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradeAppPayRequest
alipay_request
=
new
AlipayTradeAppPayRequest
();
...
...
@@ -209,7 +222,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
}
catch
(
AlipayApiException
e
)
{
e
.
printStackTrace
();
}
sup
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
baseService4PayOrd
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
_log
.
info
(
"{}生成请求支付宝数据,payParams={}"
,
logPrefix
,
payParams
);
_log
.
info
(
"###### 商户统一下单处理完成 ######"
);
Map
<
String
,
Object
>
map
=
XXPayUtil
.
makeRetMap
(
PayConstant
.
RETURN_VALUE_SUCCESS
,
""
,
PayConstant
.
RETURN_VALUE_SUCCESS
,
null
);
...
...
@@ -228,7 +241,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
payOrderObj
=
baseParam
.
isNullValue
(
"payOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"payOrder"
).
toString
());
PayOrder
payOrder
=
BeanConvertUtils
.
map2Bean
(
payOrderObj
,
PayOrder
.
class
);
PayOrder
payOrder
=
JSON
.
toJavaObject
(
payOrderObj
,
PayOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
payOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
...
...
@@ -236,7 +249,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
String
payOrderId
=
payOrder
.
getPayOrderId
();
String
mchId
=
payOrder
.
getMchId
();
String
channelId
=
payOrder
.
getChannelId
();
PayChannel
payChannel
=
sup
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
PayChannel
payChannel
=
baseService4PayOrd
er
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradePrecreateRequest
alipay_request
=
new
AlipayTradePrecreateRequest
();
...
...
@@ -275,7 +288,7 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
e
.
printStackTrace
();
}
_log
.
info
(
"{}生成跳转路径:payUrl={}"
,
logPrefix
,
payUrl
);
sup
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
baseService4PayOrd
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
_log
.
info
(
"{}生成请求支付宝数据,req={}"
,
logPrefix
,
alipay_request
.
getBizModel
());
_log
.
info
(
"###### 商户统一下单处理完成 ######"
);
Map
<
String
,
Object
>
map
=
XXPayUtil
.
makeRetMap
(
PayConstant
.
RETURN_VALUE_SUCCESS
,
""
,
PayConstant
.
RETURN_VALUE_SUCCESS
,
null
);
...
...
@@ -284,4 +297,201 @@ public class PayChannel4AliServiceImpl extends BaseService implements IPayChanne
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
/**
* 支付宝转账,文档:https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
* @param jsonParam
* @return
*/
@Override
public
Map
doAliTransReq
(
String
jsonParam
)
{
String
logPrefix
=
"【支付宝转账】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
transOrderObj
=
baseParam
.
isNullValue
(
"transOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"transOrder"
).
toString
());
TransOrder
transOrder
=
JSON
.
toJavaObject
(
transOrderObj
,
TransOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
transOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
transOrderId
=
transOrder
.
getTransOrderId
();
String
mchId
=
transOrder
.
getMchId
();
String
channelId
=
transOrder
.
getChannelId
();
PayChannel
payChannel
=
baseService4TransOrder
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayFundTransToaccountTransferRequest
request
=
new
AlipayFundTransToaccountTransferRequest
();
AlipayFundTransToaccountTransferModel
model
=
new
AlipayFundTransToaccountTransferModel
();
model
.
setOutBizNo
(
transOrderId
);
model
.
setPayeeType
(
"ALIPAY_LOGONID"
);
// 收款方账户类型
model
.
setPayeeAccount
(
transOrder
.
getChannelUser
());
// 收款方账户
model
.
setAmount
(
AmountUtil
.
convertCent2Dollar
(
transOrder
.
getAmount
().
toString
()));
model
.
setPayerShowName
(
"支付转账"
);
model
.
setPayeeRealName
(
transOrder
.
getUserName
());
model
.
setRemark
(
transOrder
.
getRemarkInfo
());
request
.
setBizModel
(
model
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"transOrderId"
,
transOrderId
);
map
.
put
(
"isSuccess"
,
false
);
try
{
AlipayFundTransToaccountTransferResponse
response
=
client
.
execute
(
request
);
if
(
response
.
isSuccess
())
{
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"channelOrderNo"
,
response
.
getOrderId
());
}
else
{
//出现业务错误
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"sub_code:{},sub_msg:{}"
,
response
.
getSubCode
(),
response
.
getSubMsg
());
map
.
put
(
"channelErrCode"
,
response
.
getSubCode
());
map
.
put
(
"channelErrMsg"
,
response
.
getSubMsg
());
}
}
catch
(
AlipayApiException
e
)
{
_log
.
error
(
e
,
""
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
@Override
public
Map
getAliTransReq
(
String
jsonParam
)
{
String
logPrefix
=
"【支付宝转账查询】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
transOrderObj
=
baseParam
.
isNullValue
(
"transOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"transOrder"
).
toString
());
TransOrder
transOrder
=
JSON
.
toJavaObject
(
transOrderObj
,
TransOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
transOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
transOrderId
=
transOrder
.
getTransOrderId
();
String
mchId
=
transOrder
.
getMchId
();
String
channelId
=
transOrder
.
getChannelId
();
PayChannel
payChannel
=
baseService4PayOrder
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayFundTransOrderQueryRequest
request
=
new
AlipayFundTransOrderQueryRequest
();
AlipayFundTransOrderQueryModel
model
=
new
AlipayFundTransOrderQueryModel
();
model
.
setOutBizNo
(
transOrderId
);
model
.
setOrderId
(
transOrder
.
getChannelOrderNo
());
request
.
setBizModel
(
model
);
Map
<
String
,
Object
>
map
=
XXPayUtil
.
makeRetMap
(
PayConstant
.
RETURN_VALUE_SUCCESS
,
""
,
PayConstant
.
RETURN_VALUE_SUCCESS
,
null
);
map
.
put
(
"transOrderId"
,
transOrderId
);
try
{
AlipayFundTransOrderQueryResponse
response
=
client
.
execute
(
request
);
if
(
response
.
isSuccess
()){
map
.
putAll
((
Map
)
JSON
.
toJSON
(
response
));
map
.
put
(
"isSuccess"
,
true
);
}
else
{
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"sub_code:{},sub_msg:{}"
,
response
.
getSubCode
(),
response
.
getSubMsg
());
map
.
put
(
"channelErrCode"
,
response
.
getSubCode
());
map
.
put
(
"channelErrMsg"
,
response
.
getSubMsg
());
}
}
catch
(
AlipayApiException
e
)
{
_log
.
error
(
e
,
""
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
@Override
public
Map
doAliRefundReq
(
String
jsonParam
)
{
String
logPrefix
=
"【支付宝退款】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
refundOrderObj
=
baseParam
.
isNullValue
(
"refundOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"refundOrder"
).
toString
());
RefundOrder
refundOrder
=
JSON
.
toJavaObject
(
refundOrderObj
,
RefundOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
refundOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
refundOrderId
=
refundOrder
.
getRefundOrderId
();
String
mchId
=
refundOrder
.
getMchId
();
String
channelId
=
refundOrder
.
getChannelId
();
PayChannel
payChannel
=
baseService4PayOrder
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradeRefundRequest
request
=
new
AlipayTradeRefundRequest
();
AlipayTradeRefundModel
model
=
new
AlipayTradeRefundModel
();
model
.
setOutTradeNo
(
refundOrder
.
getPayOrderId
());
model
.
setTradeNo
(
refundOrder
.
getChannelPayOrderNo
());
model
.
setOutRequestNo
(
refundOrderId
);
model
.
setRefundAmount
(
AmountUtil
.
convertCent2Dollar
(
refundOrder
.
getRefundAmount
().
toString
()));
model
.
setRefundReason
(
"正常退款"
);
request
.
setBizModel
(
model
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"refundOrderId"
,
refundOrderId
);
map
.
put
(
"isSuccess"
,
false
);
try
{
AlipayTradeRefundResponse
response
=
client
.
execute
(
request
);
if
(
response
.
isSuccess
()){
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"channelOrderNo"
,
response
.
getTradeNo
());
}
else
{
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"sub_code:{},sub_msg:{}"
,
response
.
getSubCode
(),
response
.
getSubMsg
());
map
.
put
(
"channelErrCode"
,
response
.
getSubCode
());
map
.
put
(
"channelErrMsg"
,
response
.
getSubMsg
());
}
}
catch
(
AlipayApiException
e
)
{
_log
.
error
(
e
,
""
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
@Override
public
Map
getAliRefundReq
(
String
jsonParam
)
{
String
logPrefix
=
"【支付宝退款查询】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
refundOrderObj
=
baseParam
.
isNullValue
(
"refundOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"refundOrder"
).
toString
());
RefundOrder
refundOrder
=
JSON
.
toJavaObject
(
refundOrderObj
,
RefundOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
refundOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
refundOrderId
=
refundOrder
.
getRefundOrderId
();
String
mchId
=
refundOrder
.
getMchId
();
String
channelId
=
refundOrder
.
getChannelId
();
PayChannel
payChannel
=
baseService4PayOrder
.
baseSelectPayChannel
(
mchId
,
channelId
);
alipayConfig
.
init
(
payChannel
.
getParam
());
AlipayClient
client
=
new
DefaultAlipayClient
(
alipayConfig
.
getUrl
(),
alipayConfig
.
getApp_id
(),
alipayConfig
.
getRsa_private_key
(),
AlipayConfig
.
FORMAT
,
AlipayConfig
.
CHARSET
,
alipayConfig
.
getAlipay_public_key
(),
AlipayConfig
.
SIGNTYPE
);
AlipayTradeFastpayRefundQueryRequest
request
=
new
AlipayTradeFastpayRefundQueryRequest
();
AlipayTradeFastpayRefundQueryModel
model
=
new
AlipayTradeFastpayRefundQueryModel
();
model
.
setOutTradeNo
(
refundOrder
.
getPayOrderId
());
model
.
setTradeNo
(
refundOrder
.
getChannelPayOrderNo
());
model
.
setOutRequestNo
(
refundOrderId
);
request
.
setBizModel
(
model
);
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"refundOrderId"
,
refundOrderId
);
try
{
AlipayTradeFastpayRefundQueryResponse
response
=
client
.
execute
(
request
);
if
(
response
.
isSuccess
()){
map
.
putAll
((
Map
)
JSON
.
toJSON
(
response
));
map
.
put
(
"isSuccess"
,
true
);
}
else
{
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"sub_code:{},sub_msg:{}"
,
response
.
getSubCode
(),
response
.
getSubMsg
());
map
.
put
(
"channelErrCode"
,
response
.
getSubCode
());
map
.
put
(
"channelErrMsg"
,
response
.
getSubMsg
());
}
}
catch
(
AlipayApiException
e
)
{
_log
.
error
(
e
,
""
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/PayChannel4WxServiceImpl.java
View file @
deee24e5
...
...
@@ -3,22 +3,26 @@ package org.xxpay.dubbo.service.impl;
import
com.alibaba.dubbo.config.annotation.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.binarywang.wxpay.bean.request.
WxPayUnifiedOrderRequest
;
import
com.github.binarywang.wxpay.bean.result.
WxPayUnifiedOrderResult
;
import
com.github.binarywang.wxpay.bean.request.
*
;
import
com.github.binarywang.wxpay.bean.result.
*
;
import
com.github.binarywang.wxpay.config.WxPayConfig
;
import
com.github.binarywang.wxpay.constant.WxPayConstants
;
import
com.github.binarywang.wxpay.exception.WxPayException
;
import
com.github.binarywang.wxpay.service.WxPayService
;
import
com.github.binarywang.wxpay.service.impl.WxPayServiceImpl
;
import
com.github.binarywang.wxpay.util.SignUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.xxpay.common.constant.PayConstant
;
import
org.xxpay.common.domain.BaseParam
;
import
org.xxpay.common.enumm.RetEnum
;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.PayChannel
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dal.dao.model.RefundOrder
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dubbo.api.service.IPayChannel4WxService
;
import
org.xxpay.dubbo.service.BaseService
;
import
org.xxpay.dubbo.service.BaseService4PayOrder
;
import
org.xxpay.dubbo.service.channel.wechat.WxPayProperties
;
import
org.xxpay.dubbo.service.channel.wechat.WxPayUtil
;
...
...
@@ -41,6 +45,9 @@ public class PayChannel4WxServiceImpl extends BaseService implements IPayChannel
@Resource
private
WxPayProperties
wxPayProperties
;
@Autowired
private
BaseService4PayOrder
baseService4PayOrder
;
public
Map
doWxPayReq
(
String
jsonParam
)
{
String
logPrefix
=
"【微信支付统一下单】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
...
...
@@ -52,7 +59,7 @@ public class PayChannel4WxServiceImpl extends BaseService implements IPayChannel
}
JSONObject
payOrderObj
=
baseParam
.
isNullValue
(
"payOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"payOrder"
).
toString
());
String
tradeType
=
baseParam
.
isNullValue
(
"tradeType"
)
?
null
:
bizParamMap
.
get
(
"tradeType"
).
toString
();
PayOrder
payOrder
=
BeanConvertUtils
.
map2Bean
(
payOrderObj
,
PayOrder
.
class
);
PayOrder
payOrder
=
JSON
.
toJavaObject
(
payOrderObj
,
PayOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
payOrder
,
tradeType
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
...
...
@@ -72,7 +79,7 @@ public class PayChannel4WxServiceImpl extends BaseService implements IPayChannel
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"payOrderId"
,
payOrderId
);
map
.
put
(
"prepayId"
,
wxPayUnifiedOrderResult
.
getPrepayId
());
int
result
=
sup
er
.
baseUpdateStatus4Ing
(
payOrderId
,
wxPayUnifiedOrderResult
.
getPrepayId
()
);
int
result
=
baseService4PayOrd
er
.
baseUpdateStatus4Ing
(
payOrderId
,
null
);
_log
.
info
(
"更新第三方支付订单号:payOrderId={},prepayId={},result={}"
,
payOrderId
,
wxPayUnifiedOrderResult
.
getPrepayId
(),
result
);
switch
(
tradeType
)
{
case
PayConstant
.
WxConstant
.
TRADE_TYPE_NATIVE
:
{
...
...
@@ -132,16 +139,206 @@ public class PayChannel4WxServiceImpl extends BaseService implements IPayChannel
_log
.
info
(
"{}下单返回失败"
,
logPrefix
);
_log
.
info
(
"err_code:{}"
,
e
.
getErrCode
());
_log
.
info
(
"err_code_des:{}"
,
e
.
getErrCodeDes
());
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"微信支付统一下单异常"
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
@Override
public
Map
doWxTransReq
(
String
jsonParam
)
{
String
logPrefix
=
"【微信企业付款】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
try
{
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
transOrderObj
=
baseParam
.
isNullValue
(
"transOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"transOrder"
).
toString
());
TransOrder
transOrder
=
JSON
.
toJavaObject
(
transOrderObj
,
TransOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
transOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
mchId
=
transOrder
.
getMchId
();
String
channelId
=
transOrder
.
getChannelId
();
PayChannel
payChannel
=
super
.
baseSelectPayChannel
(
mchId
,
channelId
);
WxPayConfig
wxPayConfig
=
WxPayUtil
.
getWxPayConfig
(
payChannel
.
getParam
(),
""
,
wxPayProperties
.
getCertRootPath
(),
wxPayProperties
.
getNotifyUrl
());
WxPayService
wxPayService
=
new
WxPayServiceImpl
();
wxPayService
.
setConfig
(
wxPayConfig
);
WxEntPayRequest
wxEntPayRequest
=
buildWxEntPayRequest
(
transOrder
,
wxPayConfig
);
String
transOrderId
=
transOrder
.
getTransOrderId
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
WxEntPayResult
result
;
try
{
result
=
wxPayService
.
entPay
(
wxEntPayRequest
);
_log
.
info
(
"{} >>> 转账成功"
,
logPrefix
);
map
.
put
(
"transOrderId"
,
transOrderId
);
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"channelOrderNo"
,
result
.
getPaymentNo
());
}
catch
(
WxPayException
e
)
{
_log
.
error
(
e
,
"转账失败"
);
//出现业务错误
_log
.
info
(
"{}转账返回失败"
,
logPrefix
);
_log
.
info
(
"err_code:{}"
,
e
.
getErrCode
());
_log
.
info
(
"err_code_des:{}"
,
e
.
getErrCodeDes
());
map
.
put
(
"transOrderId"
,
transOrderId
);
map
.
put
(
"isSuccess"
,
false
);
map
.
put
(
"channelErrCode"
,
e
.
getErrCode
());
map
.
put
(
"channelErrMsg"
,
e
.
getErrCodeDes
());
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"微信转账异常"
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
// return XXPayUtil.makeRetData(XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_SUCCESS, "", PayConstant.RETURN_VALUE_FAIL, "0111", "调用微信支付失败," + e.getErrCode() + ":" + e.getErrCodeDes()), resKey);
@Override
public
Map
getWxTransReq
(
String
jsonParam
)
{
String
logPrefix
=
"【微信企业付款查询】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
try
{
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
transOrderObj
=
baseParam
.
isNullValue
(
"transOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"transOrder"
).
toString
());
TransOrder
transOrder
=
JSON
.
toJavaObject
(
transOrderObj
,
TransOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
transOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
mchId
=
transOrder
.
getMchId
();
String
channelId
=
transOrder
.
getChannelId
();
PayChannel
payChannel
=
super
.
baseSelectPayChannel
(
mchId
,
channelId
);
WxPayConfig
wxPayConfig
=
WxPayUtil
.
getWxPayConfig
(
payChannel
.
getParam
(),
""
,
wxPayProperties
.
getCertRootPath
(),
wxPayProperties
.
getNotifyUrl
());
WxPayService
wxPayService
=
new
WxPayServiceImpl
();
wxPayService
.
setConfig
(
wxPayConfig
);
String
transOrderId
=
transOrder
.
getTransOrderId
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
WxEntPayQueryResult
result
;
try
{
result
=
wxPayService
.
queryEntPay
(
transOrderId
);
_log
.
info
(
"{} >>> 成功"
,
logPrefix
);
map
.
putAll
((
Map
)
JSON
.
toJSON
(
result
));
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"transOrderId"
,
transOrderId
);
}
catch
(
WxPayException
e
)
{
_log
.
error
(
e
,
"失败"
);
//出现业务错误
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"err_code:{}"
,
e
.
getErrCode
());
_log
.
info
(
"err_code_des:{}"
,
e
.
getErrCodeDes
());
map
.
put
(
"channelErrCode"
,
e
.
getErrCode
());
map
.
put
(
"channelErrMsg"
,
e
.
getErrCodeDes
());
map
.
put
(
"isSuccess"
,
false
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"微信
支付统一下单
异常"
);
_log
.
error
(
e
,
"微信
企业付款查询
异常"
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
//return XXPayUtil.makeRetFail(XXPayUtil.makeRetMap(PayConstant.RETURN_VALUE_FAIL, "", PayConstant.RETURN_VALUE_FAIL, PayEnum.ERR_0001));
@Override
public
Map
doWxRefundReq
(
String
jsonParam
)
{
String
logPrefix
=
"【微信退款】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
try
{
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
refundOrderObj
=
baseParam
.
isNullValue
(
"refundOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"refundOrder"
).
toString
());
RefundOrder
refundOrder
=
JSON
.
toJavaObject
(
refundOrderObj
,
RefundOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
refundOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
mchId
=
refundOrder
.
getMchId
();
String
channelId
=
refundOrder
.
getChannelId
();
PayChannel
payChannel
=
super
.
baseSelectPayChannel
(
mchId
,
channelId
);
WxPayConfig
wxPayConfig
=
WxPayUtil
.
getWxPayConfig
(
payChannel
.
getParam
(),
""
,
wxPayProperties
.
getCertRootPath
(),
wxPayProperties
.
getNotifyUrl
());
WxPayService
wxPayService
=
new
WxPayServiceImpl
();
wxPayService
.
setConfig
(
wxPayConfig
);
WxPayRefundRequest
wxPayRefundRequest
=
buildWxPayRefundRequest
(
refundOrder
,
wxPayConfig
);
String
refundOrderId
=
refundOrder
.
getRefundOrderId
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
WxPayRefundResult
result
;
try
{
result
=
wxPayService
.
refund
(
wxPayRefundRequest
);
_log
.
info
(
"{} >>> 下单成功"
,
logPrefix
);
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"refundOrderId"
,
refundOrderId
);
map
.
put
(
"channelOrderNo"
,
result
.
getRefundId
());
}
catch
(
WxPayException
e
)
{
_log
.
error
(
e
,
"下单失败"
);
//出现业务错误
_log
.
info
(
"{}下单返回失败"
,
logPrefix
);
_log
.
info
(
"err_code:{}"
,
e
.
getErrCode
());
_log
.
info
(
"err_code_des:{}"
,
e
.
getErrCodeDes
());
map
.
put
(
"isSuccess"
,
false
);
map
.
put
(
"channelErrCode"
,
e
.
getErrCode
());
map
.
put
(
"channelErrMsg"
,
e
.
getErrCodeDes
());
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"微信退款异常"
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
@Override
public
Map
getWxRefundReq
(
String
jsonParam
)
{
String
logPrefix
=
"【微信退款查询】"
;
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
try
{
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
refundOrderObj
=
baseParam
.
isNullValue
(
"refundOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"refundOrder"
).
toString
());
RefundOrder
refundOrder
=
JSON
.
toJavaObject
(
refundOrderObj
,
RefundOrder
.
class
);
if
(
ObjectValidUtil
.
isInvalid
(
refundOrder
))
{
_log
.
warn
(
"{}失败, {}. jsonParam={}"
,
logPrefix
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
String
mchId
=
refundOrder
.
getMchId
();
String
channelId
=
refundOrder
.
getChannelId
();
PayChannel
payChannel
=
super
.
baseSelectPayChannel
(
mchId
,
channelId
);
WxPayConfig
wxPayConfig
=
WxPayUtil
.
getWxPayConfig
(
payChannel
.
getParam
(),
""
,
wxPayProperties
.
getCertRootPath
(),
wxPayProperties
.
getNotifyUrl
());
WxPayService
wxPayService
=
new
WxPayServiceImpl
();
wxPayService
.
setConfig
(
wxPayConfig
);
String
refundOrderId
=
refundOrder
.
getRefundOrderId
();
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
WxPayRefundQueryResult
result
;
try
{
result
=
wxPayService
.
refundQuery
(
refundOrder
.
getChannelPayOrderNo
(),
refundOrder
.
getPayOrderId
(),
refundOrder
.
getRefundOrderId
(),
refundOrder
.
getChannelOrderNo
());
_log
.
info
(
"{} >>> 成功"
,
logPrefix
);
map
.
putAll
((
Map
)
JSON
.
toJSON
(
result
));
map
.
put
(
"isSuccess"
,
true
);
map
.
put
(
"refundOrderId"
,
refundOrderId
);
}
catch
(
WxPayException
e
)
{
_log
.
error
(
e
,
"失败"
);
//出现业务错误
_log
.
info
(
"{}返回失败"
,
logPrefix
);
_log
.
info
(
"err_code:{}"
,
e
.
getErrCode
());
_log
.
info
(
"err_code_des:{}"
,
e
.
getErrCodeDes
());
map
.
put
(
"channelErrCode"
,
e
.
getErrCode
());
map
.
put
(
"channelErrMsg"
,
e
.
getErrCodeDes
());
map
.
put
(
"isSuccess"
,
false
);
}
return
RpcUtil
.
createBizResult
(
baseParam
,
map
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"微信退款查询异常"
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_WX_PAY_CREATE_FAIL
);
}
}
...
...
@@ -192,7 +389,49 @@ public class PayChannel4WxServiceImpl extends BaseService implements IPayChannel
request
.
setLimitPay
(
limitPay
);
request
.
setOpenid
(
openId
);
request
.
setSceneInfo
(
sceneInfo
);
return
request
;
}
/**
* 构建微信企业付款请求数据
* @param transOrder
* @param wxPayConfig
* @return
*/
WxEntPayRequest
buildWxEntPayRequest
(
TransOrder
transOrder
,
WxPayConfig
wxPayConfig
)
{
// 微信企业付款请求对象
WxEntPayRequest
request
=
new
WxEntPayRequest
();
request
.
setAmount
(
transOrder
.
getAmount
().
intValue
());
// 金额,单位分
String
checkName
=
"NO_CHECK"
;
if
(
transOrder
.
getExtra
()
!=
null
)
checkName
=
JSON
.
parseObject
(
transOrder
.
getExtra
()).
getString
(
"checkName"
);
request
.
setCheckName
(
checkName
);
request
.
setDescription
(
transOrder
.
getRemarkInfo
());
request
.
setReUserName
(
transOrder
.
getUserName
());
request
.
setPartnerTradeNo
(
transOrder
.
getTransOrderId
());
request
.
setDeviceInfo
(
transOrder
.
getDevice
());
request
.
setSpbillCreateIp
(
transOrder
.
getClientIp
());
request
.
setOpenid
(
transOrder
.
getChannelUser
());
return
request
;
}
/**
* 构建微信退款请求数据
* @param refundOrder
* @param wxPayConfig
* @return
*/
WxPayRefundRequest
buildWxPayRefundRequest
(
RefundOrder
refundOrder
,
WxPayConfig
wxPayConfig
)
{
// 微信退款请求对象
WxPayRefundRequest
request
=
new
WxPayRefundRequest
();
request
.
setTransactionId
(
refundOrder
.
getChannelPayOrderNo
());
request
.
setOutTradeNo
(
refundOrder
.
getPayOrderId
());
request
.
setDeviceInfo
(
refundOrder
.
getDevice
());
request
.
setOutRefundNo
(
refundOrder
.
getRefundOrderId
());
request
.
setRefundDesc
(
refundOrder
.
getRemarkInfo
());
request
.
setRefundFee
(
refundOrder
.
getRefundAmount
().
intValue
());
request
.
setRefundFeeType
(
"CNY"
);
request
.
setTotalFee
(
refundOrder
.
getPayAmount
().
intValue
());
return
request
;
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/PayOrderServiceImpl.java
View file @
deee24e5
...
...
@@ -7,7 +7,7 @@ import org.xxpay.common.enumm.RetEnum;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.PayOrder
;
import
org.xxpay.dubbo.api.service.IPayOrderService
;
import
org.xxpay.dubbo.service.BaseService
;
import
org.xxpay.dubbo.service.BaseService
4PayOrder
;
import
java.util.Map
;
...
...
@@ -17,12 +17,12 @@ import java.util.Map;
* @description:
*/
@Service
(
version
=
"1.0.0"
)
public
class
PayOrderServiceImpl
extends
BaseService
implements
IPayOrderService
{
public
class
PayOrderServiceImpl
extends
BaseService
4PayOrder
implements
IPayOrderService
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
PayOrderServiceImpl
.
class
);
@Override
public
Map
create
PayOrder
(
String
jsonParam
)
{
public
Map
create
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
...
...
@@ -44,7 +44,7 @@ public class PayOrderServiceImpl extends BaseService implements IPayOrderService
}
@Override
public
Map
select
PayOrder
(
String
jsonParam
)
{
public
Map
select
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
...
...
@@ -63,7 +63,7 @@ public class PayOrderServiceImpl extends BaseService implements IPayOrderService
}
@Override
public
Map
select
PayOrder
ByMchIdAndPayOrderId
(
String
jsonParam
)
{
public
Map
selectByMchIdAndPayOrderId
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
...
...
@@ -76,14 +76,14 @@ public class PayOrderServiceImpl extends BaseService implements IPayOrderService
_log
.
warn
(
"根据商户号和支付订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
PayOrder
payOrder
=
super
.
baseSelect
PayOrder
ByMchIdAndPayOrderId
(
mchId
,
payOrderId
);
PayOrder
payOrder
=
super
.
baseSelectByMchIdAndPayOrderId
(
mchId
,
payOrderId
);
if
(
payOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
payOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
select
PayOrder
ByMchIdAndMchOrderNo
(
String
jsonParam
)
{
public
Map
selectByMchIdAndMchOrderNo
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
...
...
@@ -96,7 +96,7 @@ public class PayOrderServiceImpl extends BaseService implements IPayOrderService
_log
.
warn
(
"根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
PayOrder
payOrder
=
super
.
baseSelect
PayOrder
ByMchIdAndMchOrderNo
(
mchId
,
mchOrderNo
);
PayOrder
payOrder
=
super
.
baseSelectByMchIdAndMchOrderNo
(
mchId
,
mchOrderNo
);
if
(
payOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
payOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
...
...
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/RefundOrderServiceImpl.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service.impl
;
import
com.alibaba.dubbo.config.annotation.Service
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.xxpay.common.domain.BaseParam
;
import
org.xxpay.common.enumm.RetEnum
;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.RefundOrder
;
import
org.xxpay.dubbo.api.service.IRefundOrderService
;
import
org.xxpay.dubbo.service.BaseService4RefundOrder
;
import
org.xxpay.dubbo.service.mq.Mq4RefundNotify
;
import
java.util.Map
;
/**
* @author: dingzhiwei
* @date: 17/10/30
* @description:
*/
@Service
(
version
=
"1.0.0"
)
public
class
RefundOrderServiceImpl
extends
BaseService4RefundOrder
implements
IRefundOrderService
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
RefundOrderServiceImpl
.
class
);
@Autowired
private
Mq4RefundNotify
mq4RefundNotify
;
@Override
public
Map
create
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"新增退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
refundOrderObj
=
baseParam
.
isNullValue
(
"refundOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"refundOrder"
).
toString
());
if
(
refundOrderObj
==
null
)
{
_log
.
warn
(
"新增退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
RefundOrder
refundOrder
=
BeanConvertUtils
.
map2Bean
(
refundOrderObj
,
RefundOrder
.
class
);
if
(
refundOrder
==
null
)
{
_log
.
warn
(
"新增退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseCreateRefundOrder
(
refundOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
select
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据退款订单号查询退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
refundOrderId
=
baseParam
.
isNullValue
(
"refundOrderId"
)
?
null
:
bizParamMap
.
get
(
"refundOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
refundOrderId
))
{
_log
.
warn
(
"根据退款订单号查询退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
RefundOrder
refundOrder
=
super
.
baseSelectRefundOrder
(
refundOrderId
);
if
(
refundOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
refundOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
selectByMchIdAndRefundOrderId
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据商户号和退款订单号查询退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
mchId
=
baseParam
.
isNullValue
(
"mchId"
)
?
null
:
bizParamMap
.
get
(
"mchId"
).
toString
();
String
refundOrderId
=
baseParam
.
isNullValue
(
"refundOrderId"
)
?
null
:
bizParamMap
.
get
(
"refundOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
mchId
,
refundOrderId
))
{
_log
.
warn
(
"根据商户号和退款订单号查询退款订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
RefundOrder
refundOrder
=
super
.
baseSelectByMchIdAndRefundOrderId
(
mchId
,
refundOrderId
);
if
(
refundOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
refundOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
selectByMchIdAndMchRefundNo
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
mchId
=
baseParam
.
isNullValue
(
"mchId"
)
?
null
:
bizParamMap
.
get
(
"mchId"
).
toString
();
String
mchRefundNo
=
baseParam
.
isNullValue
(
"mchRefundNo"
)
?
null
:
bizParamMap
.
get
(
"mchRefundNo"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
mchId
,
mchRefundNo
))
{
_log
.
warn
(
"根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
RefundOrder
refundOrder
=
super
.
baseSelectByMchIdAndMchRefundNo
(
mchId
,
mchRefundNo
);
if
(
refundOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
refundOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
updateStatus4Ing
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
refundOrderId
=
baseParam
.
isNullValue
(
"refundOrderId"
)
?
null
:
bizParamMap
.
get
(
"refundOrderId"
).
toString
();
String
channelOrderNo
=
baseParam
.
isNullValue
(
"channelOrderNo"
)
?
null
:
bizParamMap
.
get
(
"channelOrderNo"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
refundOrderId
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Ing
(
refundOrderId
,
channelOrderNo
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
updateStatus4Success
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
refundOrderId
=
baseParam
.
isNullValue
(
"refundOrderId"
)
?
null
:
bizParamMap
.
get
(
"refundOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
refundOrderId
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Success
(
refundOrderId
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
updateStatus4Complete
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
refundOrderId
=
baseParam
.
isNullValue
(
"refundOrderId"
)
?
null
:
bizParamMap
.
get
(
"refundOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
refundOrderId
))
{
_log
.
warn
(
"修改退款订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Complete
(
refundOrderId
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
sendRefundNotify
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"发送退款订单处理失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
msg
=
baseParam
.
isNullValue
(
"msg"
)
?
null
:
bizParamMap
.
get
(
"msg"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
msg
))
{
_log
.
warn
(
"发送退款订单处理失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
1
;
try
{
mq4RefundNotify
.
send
(
msg
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
""
);
result
=
0
;
}
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/impl/TransOrderServiceImpl.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service.impl
;
import
com.alibaba.dubbo.config.annotation.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.xxpay.common.domain.BaseParam
;
import
org.xxpay.common.enumm.RetEnum
;
import
org.xxpay.common.util.*
;
import
org.xxpay.dal.dao.model.TransOrder
;
import
org.xxpay.dubbo.api.service.ITransOrderService
;
import
org.xxpay.dubbo.service.BaseService4TransOrder
;
import
org.xxpay.dubbo.service.mq.Mq4TransNotify
;
import
java.util.Map
;
/**
* @author: dingzhiwei
* @date: 17/10/30
* @description:
*/
@Service
(
version
=
"1.0.0"
)
public
class
TransOrderServiceImpl
extends
BaseService4TransOrder
implements
ITransOrderService
{
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
TransOrderServiceImpl
.
class
);
@Autowired
private
Mq4TransNotify
mq4TransNotify
;
@Override
public
Map
create
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"新增转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
JSONObject
transOrderObj
=
baseParam
.
isNullValue
(
"transOrder"
)
?
null
:
JSONObject
.
parseObject
(
bizParamMap
.
get
(
"transOrder"
).
toString
());
if
(
transOrderObj
==
null
)
{
_log
.
warn
(
"新增转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
TransOrder
transOrder
=
BeanConvertUtils
.
map2Bean
(
transOrderObj
,
TransOrder
.
class
);
if
(
transOrder
==
null
)
{
_log
.
warn
(
"新增转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseCreateTransOrder
(
transOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
select
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据转账订单号查询转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
transOrderId
=
baseParam
.
isNullValue
(
"transOrderId"
)
?
null
:
bizParamMap
.
get
(
"transOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
transOrderId
))
{
_log
.
warn
(
"根据转账订单号查询转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
TransOrder
transOrder
=
super
.
baseSelectTransOrder
(
transOrderId
);
if
(
transOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
transOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
selectByMchIdAndTransOrderId
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据商户号和转账订单号查询转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
mchId
=
baseParam
.
isNullValue
(
"mchId"
)
?
null
:
bizParamMap
.
get
(
"mchId"
).
toString
();
String
transOrderId
=
baseParam
.
isNullValue
(
"transOrderId"
)
?
null
:
bizParamMap
.
get
(
"transOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
mchId
,
transOrderId
))
{
_log
.
warn
(
"根据商户号和转账订单号查询转账订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
TransOrder
transOrder
=
super
.
baseSelectByMchIdAndTransOrderId
(
mchId
,
transOrderId
);
if
(
transOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
transOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
selectByMchIdAndMchTransNo
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
mchId
=
baseParam
.
isNullValue
(
"mchId"
)
?
null
:
bizParamMap
.
get
(
"mchId"
).
toString
();
String
mchTransNo
=
baseParam
.
isNullValue
(
"mchTransNo"
)
?
null
:
bizParamMap
.
get
(
"mchTransNo"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
mchId
,
mchTransNo
))
{
_log
.
warn
(
"根据商户号和商户订单号查询支付订单失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
TransOrder
transOrder
=
super
.
baseSelectByMchIdAndMchTransNo
(
mchId
,
mchTransNo
);
if
(
transOrder
==
null
)
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_BIZ_DATA_NOT_EXISTS
);
String
jsonResult
=
JsonUtil
.
object2Json
(
transOrder
);
return
RpcUtil
.
createBizResult
(
baseParam
,
jsonResult
);
}
@Override
public
Map
updateStatus4Ing
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
transOrderId
=
baseParam
.
isNullValue
(
"transOrderId"
)
?
null
:
bizParamMap
.
get
(
"transOrderId"
).
toString
();
String
channelOrderNo
=
baseParam
.
isNullValue
(
"channelOrderNo"
)
?
null
:
bizParamMap
.
get
(
"channelOrderNo"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
transOrderId
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Ing
(
transOrderId
,
channelOrderNo
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
updateStatus4Success
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
transOrderId
=
baseParam
.
isNullValue
(
"transOrderId"
)
?
null
:
bizParamMap
.
get
(
"transOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
transOrderId
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Success
(
transOrderId
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
updateStatus4Complete
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
transOrderId
=
baseParam
.
isNullValue
(
"transOrderId"
)
?
null
:
bizParamMap
.
get
(
"transOrderId"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
transOrderId
))
{
_log
.
warn
(
"修改转账订单状态失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
super
.
baseUpdateStatus4Complete
(
transOrderId
);
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
@Override
public
Map
sendTransNotify
(
String
jsonParam
)
{
BaseParam
baseParam
=
JsonUtil
.
getObjectFromJson
(
jsonParam
,
BaseParam
.
class
);
Map
<
String
,
Object
>
bizParamMap
=
baseParam
.
getBizParamMap
();
if
(
ObjectValidUtil
.
isInvalid
(
bizParamMap
))
{
_log
.
warn
(
"发送转账订单处理失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_NOT_FOUND
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_NOT_FOUND
);
}
String
msg
=
baseParam
.
isNullValue
(
"msg"
)
?
null
:
bizParamMap
.
get
(
"msg"
).
toString
();
if
(
ObjectValidUtil
.
isInvalid
(
msg
))
{
_log
.
warn
(
"发送转账订单处理失败, {}. jsonParam={}"
,
RetEnum
.
RET_PARAM_INVALID
.
getMessage
(),
jsonParam
);
return
RpcUtil
.
createFailResult
(
baseParam
,
RetEnum
.
RET_PARAM_INVALID
);
}
int
result
=
1
;
try
{
mq4TransNotify
.
send
(
msg
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
""
);
result
=
0
;
}
return
RpcUtil
.
createBizResult
(
baseParam
,
result
);
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/mq/Mq4MchNotify.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service.mq
;
import
org.apache.activemq.ScheduledMessage
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.jms.core.JmsTemplate
;
import
org.springframework.jms.core.MessageCreator
;
import
org.springframework.stereotype.Component
;
import
org.xxpay.common.util.MyLog
;
import
org.xxpay.dubbo.service.BaseService4PayOrder
;
import
javax.jms.*
;
import
javax.net.ssl.HttpsURLConnection
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.TrustManager
;
import
javax.net.ssl.X509TrustManager
;
import
java.io.BufferedReader
;
import
java.io.InputStreamReader
;
import
java.net.HttpURLConnection
;
import
java.net.URL
;
import
java.security.cert.CertificateException
;
import
java.security.cert.X509Certificate
;
/**
* @Description: 商户通知MQ统一处理
* @author dingzhiwei jmdhappy@126.com
* @date 2017-10-31
* @version V1.0
* @Copyright: www.xxpay.org
*/
@Component
public
class
Mq4MchNotify
extends
BaseService4PayOrder
{
@Autowired
private
JmsTemplate
jmsTemplate
;
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
Mq4MchNotify
.
class
);
public
void
send
(
Queue
queue
,
String
msg
)
{
_log
.
info
(
"发送MQ消息:msg={}"
,
msg
);
this
.
jmsTemplate
.
convertAndSend
(
queue
,
msg
);
}
/**
* 发送延迟消息
* @param msg
* @param delay
*/
public
void
send
(
Queue
queue
,
String
msg
,
long
delay
)
{
_log
.
info
(
"发送MQ延时消息:msg={},delay={}"
,
msg
,
delay
);
jmsTemplate
.
send
(
queue
,
new
MessageCreator
()
{
public
Message
createMessage
(
Session
session
)
throws
JMSException
{
TextMessage
tm
=
session
.
createTextMessage
(
msg
);
tm
.
setLongProperty
(
ScheduledMessage
.
AMQ_SCHEDULED_DELAY
,
delay
);
tm
.
setLongProperty
(
ScheduledMessage
.
AMQ_SCHEDULED_PERIOD
,
1
*
1000
);
tm
.
setLongProperty
(
ScheduledMessage
.
AMQ_SCHEDULED_REPEAT
,
1
);
return
tm
;
}
});
}
private
static
class
TrustAnyTrustManager
implements
X509TrustManager
{
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
throws
CertificateException
{
}
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
new
X509Certificate
[]
{};
}
}
public
String
httpPost
(
String
url
)
{
StringBuffer
sb
=
new
StringBuffer
();
try
{
URL
console
=
new
URL
(
url
);
if
(
"https"
.
equals
(
console
.
getProtocol
()))
{
SSLContext
sc
=
SSLContext
.
getInstance
(
"SSL"
);
sc
.
init
(
null
,
new
TrustManager
[]
{
new
TrustAnyTrustManager
()
},
new
java
.
security
.
SecureRandom
());
HttpsURLConnection
con
=
(
HttpsURLConnection
)
console
.
openConnection
();
con
.
setSSLSocketFactory
(
sc
.
getSocketFactory
());
con
.
setRequestMethod
(
"POST"
);
con
.
setDoInput
(
true
);
con
.
setDoOutput
(
true
);
con
.
setUseCaches
(
false
);
con
.
setConnectTimeout
(
30
*
1000
);
con
.
setReadTimeout
(
60
*
1000
);
con
.
setRequestProperty
(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
con
.
getInputStream
()),
1024
*
1024
);
while
(
true
)
{
String
line
=
in
.
readLine
();
if
(
line
==
null
)
{
break
;
}
sb
.
append
(
line
);
}
in
.
close
();
}
else
if
(
"http"
.
equals
(
console
.
getProtocol
()))
{
HttpURLConnection
con
=
(
HttpURLConnection
)
console
.
openConnection
();
con
.
setRequestMethod
(
"POST"
);
con
.
setDoInput
(
true
);
con
.
setDoOutput
(
true
);
con
.
setUseCaches
(
false
);
con
.
setConnectTimeout
(
30
*
1000
);
con
.
setReadTimeout
(
60
*
1000
);
con
.
setRequestProperty
(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
BufferedReader
in
=
new
BufferedReader
(
new
InputStreamReader
(
con
.
getInputStream
()),
1024
*
1024
);
while
(
true
)
{
String
line
=
in
.
readLine
();
if
(
line
==
null
)
{
break
;
}
sb
.
append
(
line
);
}
in
.
close
();
}
else
{
_log
.
error
(
"not do protocol. protocol=%s"
,
console
.
getProtocol
());
}
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"httpPost exception. url:%s"
,
url
);
}
return
sb
.
toString
();
}
}
xxpay4dubbo/xxpay4dubbo-service/src/main/java/org/xxpay/dubbo/service/mq/Mq4MchPayNotify.java
0 → 100644
View file @
deee24e5
package
org.xxpay.dubbo.service.mq
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.jms.annotation.JmsListener
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StringUtils
;
import
org.xxpay.common.util.MyLog
;
import
org.xxpay.dubbo.service.BaseService4PayOrder
;
import
javax.jms.Queue
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* @Description: 商户通知MQ统一处理
* @author dingzhiwei jmdhappy@126.com
* @date 2017-10-31
* @version V1.0
* @Copyright: www.xxpay.org
*/
@Component
public
class
Mq4MchPayNotify
extends
Mq4MchNotify
{
@Autowired
private
Queue
mchPayNotifyQueue
;
@Autowired
private
BaseService4PayOrder
baseService4PayOrder
;
private
static
final
MyLog
_log
=
MyLog
.
getLog
(
Mq4MchPayNotify
.
class
);
public
void
send
(
String
msg
)
{
super
.
send
(
mchPayNotifyQueue
,
msg
);
}
@JmsListener
(
destination
=
MqConfig
.
MCH_PAY_NOTIFY_QUEUE_NAME
)
public
void
receive
(
String
msg
)
{
String
logPrefix
=
"【商户支付通知】"
;
_log
.
info
(
"{}接收消息:msg={}"
,
logPrefix
,
msg
);
JSONObject
msgObj
=
JSON
.
parseObject
(
msg
);
String
respUrl
=
msgObj
.
getString
(
"url"
);
String
orderId
=
msgObj
.
getString
(
"orderId"
);
int
count
=
msgObj
.
getInteger
(
"count"
);
if
(
StringUtils
.
isEmpty
(
respUrl
))
{
_log
.
warn
(
"{}商户通知URL为空,respUrl={}"
,
logPrefix
,
respUrl
);
return
;
}
String
httpResult
=
httpPost
(
respUrl
);
int
cnt
=
count
+
1
;
_log
.
info
(
"{}notifyCount={}"
,
logPrefix
,
cnt
);
if
(
"success"
.
equalsIgnoreCase
(
httpResult
)){
// 修改支付订单表
try
{
int
result
=
baseService4PayOrder
.
baseUpdateStatus4Complete
(
orderId
);
_log
.
info
(
"{}修改payOrderId={},订单状态为处理完成->{}"
,
logPrefix
,
orderId
,
result
==
1
?
"成功"
:
"失败"
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"修改订单状态为处理完成异常"
);
}
// 修改通知
try
{
int
result
=
super
.
baseUpdateMchNotifySuccess
(
orderId
,
httpResult
,
(
byte
)
cnt
);
_log
.
info
(
"{}修改商户通知,orderId={},result={},notifyCount={},结果:{}"
,
logPrefix
,
orderId
,
httpResult
,
cnt
,
result
==
1
?
"成功"
:
"失败"
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"修改商户支付通知异常"
);
}
return
;
// 通知成功结束
}
else
{
// 修改通知次数
try
{
int
result
=
super
.
baseUpdateMchNotifyFail
(
orderId
,
httpResult
,
(
byte
)
cnt
);
_log
.
info
(
"{}修改商户通知,orderId={},result={},notifyCount={},结果:{}"
,
logPrefix
,
orderId
,
httpResult
,
cnt
,
result
==
1
?
"成功"
:
"失败"
);
}
catch
(
Exception
e
)
{
_log
.
error
(
e
,
"修改商户支付通知异常"
);
}
if
(
cnt
>
5
)
{
_log
.
info
(
"{}通知次数notifyCount()>5,停止通知"
,
respUrl
,
cnt
);
return
;
}
// 通知失败,延时再通知
msgObj
.
put
(
"count"
,
cnt
);
this
.
send
(
mchPayNotifyQueue
,
msgObj
.
toJSONString
(),
cnt
*
60
*
1000
);
_log
.
info
(
"{}发送延时通知完成,通知次数:{},{}秒后执行通知"
,
respUrl
,
cnt
,
cnt
*
60
);
}
}
}
Prev
1
2
3
4
Next
Write
Preview
Supports
Markdown
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