Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
rtjl
Project
Project
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
Graph
比较
统计图
议题
0
议题
0
列表
看板
标记
Milestones
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
注册表
注册表
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
svn
rtjl
Commits
8daf516a
提交
8daf516a
authored
1月 10, 2020
作者:
liupengfei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
--no commit message
上级
c7e8c0f0
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
111 行增加
和
11 行删除
+111
-11
ReceiveController.java
...java/com/zrqx/third/pay/controller/ReceiveController.java
+106
-9
WeChatPayImpl.java
...zrqx/third/pay/interfaces/payType/impl/WeChatPayImpl.java
+5
-2
没有找到文件。
app/third/src/main/java/com/zrqx/third/pay/controller/ReceiveController.java
浏览文件 @
8daf516a
...
...
@@ -3,6 +3,7 @@ package com.zrqx.third.pay.controller;
import
java.io.DataInputStream
;
import
java.io.IOException
;
import
java.io.UnsupportedEncodingException
;
import
java.math.BigDecimal
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.Map
;
...
...
@@ -24,8 +25,13 @@ import org.springframework.web.bind.annotation.ResponseBody;
import
com.alipay.api.AlipayApiException
;
import
com.alipay.api.internal.util.AlipaySignature
;
import
com.zrqx.core.client.form.third.pay.PayResultForm
;
import
com.zrqx.core.client.member.fg.FgPersonalMemberClient
;
import
com.zrqx.core.client.order.fg.FgOrderClient
;
import
com.zrqx.core.client.third.PayClient
;
import
com.zrqx.core.client.vo.order.OrderPayVo
;
import
com.zrqx.core.enums.order.OrderTypeEnum
;
import
com.zrqx.core.enums.third.pay.PayTypeEnum
;
import
com.zrqx.core.exception.BaseException
;
import
com.zrqx.core.util.response.CallBack
;
import
com.zrqx.third.pay.config.WXPay
;
import
com.zrqx.third.pay.config.WXPayConfig
;
...
...
@@ -60,6 +66,15 @@ public class ReceiveController {
@Autowired
private
PayClient
payClient
;
@Autowired
private
FgOrderClient
orderClient
;
@Autowired
private
WXPayConfig
config
;
@Autowired
private
FgPersonalMemberClient
personalMemberClient
;
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
ReceiveController
.
class
);
@ApiOperation
(
value
=
"支付宝服务器异步通知页面"
,
notes
=
"支付宝服务器异步通知页面"
)
...
...
@@ -107,6 +122,8 @@ public class ReceiveController {
String
trade_no
=
request
.
getParameter
(
"trade_no"
);
// 交易状态
String
trade_status
=
request
.
getParameter
(
"trade_status"
);
// 付款金额
String
total_amount
=
request
.
getParameter
(
"total_amount"
);
if
(
trade_status
.
equals
(
"TRADE_FINISHED"
))
{
// 判断该笔订单是否在商户网站中已经做过处理
// 如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
...
...
@@ -121,11 +138,46 @@ public class ReceiveController {
// 注意:
// 付款完成后,支付宝系统发送该交易状态通知
logger
.
info
(
request
.
getParameter
(
"out_trade_no"
)
+
"支付宝支付成功------开始调用pay--------------"
);
CallBack
<
Boolean
>
result
=
payClient
.
returnPayResult
(
new
PayResultForm
(
out_trade_no
,
String
.
valueOf
(
PayTypeEnum
.
ALIPAY
.
getCode
())));
logger
.
info
(
request
.
getParameter
(
"out_trade_no"
)
+
"支付宝回调远程调用pay结束:"
+
(
result
==
null
?
false
:
result
.
getData
()));
//logger.info(request.getParameter("out_trade_no") + "支付宝支付成功------开始调用pay--------------");
//CallBack<Boolean> result = payClient.returnPayResult(new PayResultForm(out_trade_no,
// String.valueOf(PayTypeEnum.ALIPAY.getCode())));
//logger.info(request.getParameter("out_trade_no") + "支付宝回调远程调用pay结束:" + (result == null ? false : result.getData()));
// 修改订单状态
logger
.
info
(
out_trade_no
+
"开始查询订单详情-------------------"
);
CallBack
<
OrderPayVo
>
orderPayVoResult
=
orderClient
.
getOrderPayVo
(
out_trade_no
);
if
(
orderPayVoResult
==
null
||
orderPayVoResult
.
getData
()
==
null
)
{
logger
.
error
(
"订单:"
+
out_trade_no
+
"获取订单详情失败"
);
throw
new
BaseException
(-
3
,
"获取订单详情失败"
);
}
OrderPayVo
orderPayVo
=
orderPayVoResult
.
getData
();
logger
.
info
(
out_trade_no
+
"获取订单详情成功:\n"
+
orderPayVo
);
if
(!
orderPayVo
.
getPayment
().
equals
(
total_amount
)){
// TODO 支付金额和订单金额不一致 处理流程
logger
.
warn
(
"订单金额与支付金额不一致; "
);
}
logger
.
info
(
out_trade_no
+
"开始修改订单状态-------------------"
);
PayResultForm
form
=
new
PayResultForm
();
form
.
setOut_trade_no
(
out_trade_no
);
form
.
setPayType
(
PayTypeEnum
.
ALIPAY
.
getCode
());
CallBack
<
Boolean
>
result
=
orderClient
.
updateOrderStatus
(
form
);
if
(
result
==
null
||
!
result
.
getData
())
{
logger
.
error
(
"订单:"
+
out_trade_no
+
"订单状态修改失败"
);
throw
new
BaseException
(-
3
,
"订单状态修改失败"
);
}
logger
.
info
(
form
.
getOut_trade_no
()
+
"修改订单状态成功-------------------"
);
if
(
orderPayVo
.
getOrderType
().
equals
(
OrderTypeEnum
.
VIP
.
getCode
())){
//如果是开通vip订单,修改用户信息
logger
.
info
(
"third1服务:开始修改用户信息-------------------"
);
CallBack
<
Boolean
>
re
=
personalMemberClient
.
addVipMember
(
out_trade_no
);
if
(
re
.
hasEntity
()){
if
(
re
.
getData
()
==
true
){
logger
.
info
(
"-----修改用户信息成功-------------------"
);
}
else
{
logger
.
error
(
"修改用户信息失败"
);
}
}
}
}
mark
=
"success"
;
}
else
{
// 验证失败
...
...
@@ -194,7 +246,7 @@ public class ReceiveController {
@ApiOperation
(
"微信回调"
)
@PostMapping
(
"/notify_wechat"
)
public
void
weChatNotify
(
HttpServletRequest
request
,
HttpServletResponse
response
){
public
String
weChatNotify
(
HttpServletRequest
request
,
HttpServletResponse
response
){
logger
.
info
(
"微信支付回调开始--------------------"
);
DataInputStream
in
;
String
wxNotifyXml
=
""
;
...
...
@@ -210,7 +262,6 @@ public class ReceiveController {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
WXPayConfig
config
=
new
WXPayConfig
();
WXPay
wxpay
;
try
{
wxpay
=
new
WXPay
(
config
);
...
...
@@ -228,9 +279,52 @@ public class ReceiveController {
String
out_trade_no
=
notifyMap
.
get
(
"out_trade_no"
);
// 微信支付订单号
String
transaction_id
=
notifyMap
.
get
(
"transaction_id"
);
// 付款金额 分
String
total_amount
=
notifyMap
.
get
(
"total_fee"
);
// 修改订单状态
logger
.
info
(
out_trade_no
+
"开始查询订单详情-------------------"
);
CallBack
<
OrderPayVo
>
orderPayVoResult
=
orderClient
.
getOrderPayVo
(
out_trade_no
);
if
(
orderPayVoResult
==
null
||
orderPayVoResult
.
getData
()
==
null
)
{
logger
.
error
(
"订单:"
+
out_trade_no
+
"获取订单详情失败"
);
throw
new
BaseException
(-
3
,
"获取订单详情失败"
);
}
OrderPayVo
orderPayVo
=
orderPayVoResult
.
getData
();
logger
.
info
(
out_trade_no
+
"获取订单详情成功:\n"
+
orderPayVo
);
BigDecimal
tempDataBig
=
new
BigDecimal
(
orderPayVo
.
getPayment
());
// 元换算为 分
String
amount
=
tempDataBig
.
multiply
(
new
BigDecimal
(
100
d
)).
intValue
()
+
""
;
if
(!
amount
.
equals
(
total_amount
)){
// TODO 支付金额和订单金额不一致 处理流程
logger
.
warn
(
"订单金额与支付金额不一致; "
);
}
logger
.
info
(
out_trade_no
+
"开始修改订单状态-------------------"
);
PayResultForm
form
=
new
PayResultForm
();
form
.
setOut_trade_no
(
out_trade_no
);
form
.
setPayType
(
PayTypeEnum
.
WECHAT
.
getCode
());
CallBack
<
Boolean
>
result
=
orderClient
.
updateOrderStatus
(
form
);
if
(
result
==
null
||
!
result
.
getData
())
{
logger
.
error
(
"订单:"
+
out_trade_no
+
"订单状态修改失败"
);
throw
new
BaseException
(-
3
,
"订单状态修改失败"
);
}
logger
.
info
(
form
.
getOut_trade_no
()
+
"修改订单状态成功-------------------"
);
if
(
orderPayVo
.
getOrderType
().
equals
(
OrderTypeEnum
.
VIP
.
getCode
())){
//如果是开通vip订单,修改用户信息
logger
.
info
(
"third1服务:开始修改用户信息-------------------"
);
CallBack
<
Boolean
>
re
=
personalMemberClient
.
addVipMember
(
out_trade_no
);
if
(
re
.
hasEntity
()){
if
(
re
.
getData
()
==
true
){
logger
.
info
(
"-----修改用户信息成功-------------------"
);
}
else
{
logger
.
error
(
"修改用户信息失败"
);
}
}
}
// 订单金额、单位为分
String
total_fee
=
notifyMap
.
get
(
"total_fee"
);
/*
String total_fee =notifyMap.get("total_fee");
logger.info(notifyMap.get("out_trade_no") + "微信支付成功调用order修改状态--------------------");
CallBack<Boolean> result = payClient.returnPayResult(new PayResultForm(PayTypeEnum.WECHAT.getCode(), out_trade_no));
logger.info(notifyMap.get("out_trade_no") + "微信回调远程调用order完成:" + (result == null ? false : result.getData()));
...
...
@@ -241,11 +335,13 @@ public class ReceiveController {
} else {
logger.error(notifyMap.get("out_trade_no") + "响应微信回调失败:" + notifyMap);
}
logger
.
info
(
notifyMap
.
get
(
"out_trade_no"
)
+
"微信支付回调结束--------------------"
);
logger.info(notifyMap.get("out_trade_no") + "微信支付回调结束--------------------");
*/
}
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
logger
.
info
(
"微信支付成功,开始跳转页面"
);
return
"index"
;
}
...
...
@@ -253,6 +349,7 @@ public class ReceiveController {
@GetMapping
(
"/returnUrl"
)
public
String
aliReturnUrl
(
ServletRequest
request
)
throws
UnsupportedEncodingException
,
AlipayApiException
{
logger
.
info
(
request
.
getParameter
(
"out_trade_no"
)
+
"支付宝支付回调开始--------------------returnUrl"
);
// String mark = "";
Map
<
String
,
String
>
params
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
[]>
requestParams
=
request
.
getParameterMap
();
...
...
@@ -270,7 +367,6 @@ public class ReceiveController {
boolean
signVerified
=
AlipaySignature
.
rsaCheckV1
(
params
,
alipay_public_key
,
charset
,
sign_type
);
// 调用SDK验证签名
if
(
signVerified
)
{
// 商户订单号
String
out_trade_no
=
request
.
getParameter
(
"out_trade_no"
);
...
...
@@ -280,6 +376,7 @@ public class ReceiveController {
// 付款金额
String
total_amount
=
request
.
getParameter
(
"total_amount"
);
// 收款支付宝账号对应的支付宝唯一用户号
// String seller_id =request.getParameter("seller_id");
...
...
app/third/src/main/java/com/zrqx/third/pay/interfaces/payType/impl/WeChatPayImpl.java
浏览文件 @
8daf516a
...
...
@@ -4,6 +4,7 @@ import java.beans.BeanInfo;
import
java.beans.Introspector
;
import
java.beans.PropertyDescriptor
;
import
java.math.BigDecimal
;
import
java.text.SimpleDateFormat
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashMap
;
...
...
@@ -186,12 +187,14 @@ public class WeChatPayImpl extends PayTypeAdapter{
return
null
;
WecartQueryReturn
wecartQueryReturn
=
new
WecartQueryReturn
();
// 创建 JavaBean 对象
BeanUtils
.
populate
(
wecartQueryReturn
,
resp
);
if
(
wecartQueryReturn
!=
null
&&
"SUCCESS"
.
equals
(
wecartQueryReturn
.
getReturn_code
())){
if
(
!
"SUCCESS"
.
equals
(
wecartQueryReturn
.
getReturn_code
())){
return
CallBack
.
fail
();
}
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyyMMddHHmmss"
);
Date
dateTime
=
simpleDateFormat
.
parse
(
wecartQueryReturn
.
getTime_end
());
boolean
isPay
=
"SUCCESS"
.
equals
(
wecartQueryReturn
.
getResult_code
())
&&
"SUCCESS"
.
equals
(
wecartQueryReturn
.
getTrade_state
());
PayQueryReturnVo
PayQueryReturnVo
=
new
PayQueryReturnVo
(
PayTypeEnum
.
WECHAT
.
getCode
(),
isPay
,
wecartQueryReturn
.
getTransaction_id
(),
new
Date
(
wecartQueryReturn
.
getTime_end
())
,
wecartQueryReturn
.
getTotal_fee
(),
wecartQueryReturn
.
getTransaction_id
(),
dateTime
,
wecartQueryReturn
.
getTotal_fee
(),
wecartQueryReturn
.
getOut_trade_no
(),
wecartQueryReturn
.
getReturn_msg
());
return
CallBack
.
success
(
PayQueryReturnVo
);
}
catch
(
Exception
e
)
{
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论