Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
payment-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
payment-ci-test
Commits
e75a9d35
提交
e75a9d35
authored
7月 21, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
订单关闭、订单查询
上级
13aa392e
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
118 行增加
和
8 行删除
+118
-8
WechatPayController.java
.../java/com/mmc/payment/controller/WechatPayController.java
+15
-4
WechatPayDao.java
src/main/java/com/mmc/payment/dao/WechatPayDao.java
+2
-0
WxPayLogVO.java
src/main/java/com/mmc/payment/model/vo/order/WxPayLogVO.java
+37
-0
WechatPayServiceImpl.java
...va/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
+55
-4
WechatPayService.java
src/main/java/com/mmc/payment/service/WechatPayService.java
+4
-0
WechatPayDao.xml
src/main/resources/mapper/WechatPayDao.xml
+5
-0
没有找到文件。
src/main/java/com/mmc/payment/controller/WechatPayController.java
浏览文件 @
e75a9d35
...
...
@@ -7,10 +7,7 @@ import io.swagger.annotations.Api;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -42,4 +39,18 @@ public class WechatPayController extends BaseController {
public
Map
payCallback
(
HttpServletRequest
request
)
{
return
wechatPayService
.
payCallback
(
request
);
}
@ApiOperation
(
value
=
"关闭订单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"closeOrder"
)
public
ResultBody
closeOrder
(
String
orderNo
)
{
return
wechatPayService
.
closeOrder
(
orderNo
);
}
@ApiOperation
(
value
=
"查询订单"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@GetMapping
(
"queryOrder"
)
public
ResultBody
queryOrder
(
String
orderNo
)
{
return
wechatPayService
.
queryOrder
(
orderNo
);
}
}
src/main/java/com/mmc/payment/dao/WechatPayDao.java
浏览文件 @
e75a9d35
...
...
@@ -15,4 +15,6 @@ public interface WechatPayDao {
WxPayLogDO
selectWxPayInfoByOrderNo
(
String
orderNo
);
void
updateWxPayLog
(
WxPayLogDO
wxPayLogDO
);
void
deleteWxPayLogByOrderNo
(
String
orderNo
);
}
src/main/java/com/mmc/payment/model/vo/order/WxPayLogVO.java
0 → 100644
浏览文件 @
e75a9d35
package
com
.
mmc
.
payment
.
model
.
vo
.
order
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author LW
* @date 2023/7/19 17:16
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public
class
WxPayLogVO
{
@ApiModelProperty
(
"订单号"
)
private
String
outTradeNo
;
@ApiModelProperty
(
"付款银行"
)
private
String
bankType
;
@ApiModelProperty
(
"附加信息"
)
private
String
attach
;
@ApiModelProperty
(
"支付成功时间"
)
private
String
successTime
;
@ApiModelProperty
(
"支付者openid"
)
private
String
wxNotifyOpenid
;
@ApiModelProperty
(
"总金额"
)
private
Integer
wxNotifyTotal
;
@ApiModelProperty
(
"用户支付金额"
)
private
Integer
wxNotifyPayerTotal
;
@ApiModelProperty
(
"交易类型"
)
private
String
tradeType
;
@ApiModelProperty
(
"交易状态"
)
private
String
tradeState
;
@ApiModelProperty
(
"交易状态描述"
)
private
String
tradeStateDesc
;
}
src/main/java/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
浏览文件 @
e75a9d35
...
...
@@ -9,19 +9,18 @@ import com.mmc.payment.enums.OrderPayStatus;
import
com.mmc.payment.feign.UserAppApi
;
import
com.mmc.payment.model.dto.user.UserAccountSimpleDTO
;
import
com.mmc.payment.model.vo.order.OrderRequestParamsVO
;
import
com.mmc.payment.model.vo.order.WxPayLogVO
;
import
com.mmc.payment.service.WechatPayService
;
import
com.mmc.payment.util.WxConfigUtils
;
import
com.wechat.pay.java.core.Config
;
import
com.wechat.pay.java.core.cipher.SignatureResult
;
import
com.wechat.pay.java.core.exception.ServiceException
;
import
com.wechat.pay.java.core.notification.NotificationConfig
;
import
com.wechat.pay.java.core.notification.NotificationParser
;
import
com.wechat.pay.java.core.notification.RequestParam
;
import
com.wechat.pay.java.service.partnerpayments.jsapi.model.Transaction
;
import
com.wechat.pay.java.service.payments.jsapi.JsapiService
;
import
com.wechat.pay.java.service.payments.jsapi.model.Amount
;
import
com.wechat.pay.java.service.payments.jsapi.model.Payer
;
import
com.wechat.pay.java.service.payments.jsapi.model.PrepayRequest
;
import
com.wechat.pay.java.service.payments.jsapi.model.PrepayResponse
;
import
com.wechat.pay.java.service.payments.jsapi.model.*
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
...
...
@@ -173,4 +172,56 @@ public class WechatPayServiceImpl implements WechatPayService {
}
return
result
;
}
@Override
public
ResultBody
closeOrder
(
String
orderNo
)
{
Config
config
=
wxConfigUtils
.
createConfig
();
// 构建service
JsapiService
jsapiService
=
new
JsapiService
.
Builder
().
config
(
config
).
build
();
CloseOrderRequest
closeRequest
=
new
CloseOrderRequest
();
closeRequest
.
setMchid
(
userSystemConstant
.
getMchid
());
closeRequest
.
setOutTradeNo
(
orderNo
);
// 方法没有返回值,意味着成功时API返回204 No Content
jsapiService
.
closeOrder
(
closeRequest
);
// 删除数据库记录
wechatPayDao
.
deleteWxPayLogByOrderNo
(
orderNo
);
return
ResultBody
.
success
();
}
@Override
public
ResultBody
queryOrder
(
String
orderNo
)
{
// 查询订单的交易号
WxPayLogDO
wxPayLogDO
=
wechatPayDao
.
selectWxPayInfoByOrderNo
(
orderNo
);
if
(
wxPayLogDO
==
null
)
{
return
ResultBody
.
error
(
"订单不存在!"
);
}
if
(
wxPayLogDO
.
getTradeState
().
equals
(
OrderPayStatus
.
WAIT
.
getStatus
()))
{
return
ResultBody
.
error
(
"该订单暂未发起交易!"
);
}
Config
config
=
wxConfigUtils
.
createConfig
();
// 构建service
JsapiService
service
=
new
JsapiService
.
Builder
().
config
(
config
).
build
();
QueryOrderByIdRequest
queryRequest
=
new
QueryOrderByIdRequest
();
queryRequest
.
setMchid
(
userSystemConstant
.
getMchid
());
queryRequest
.
setTransactionId
(
wxPayLogDO
.
getTransactionId
());
try
{
com
.
wechat
.
pay
.
java
.
service
.
payments
.
model
.
Transaction
result
=
service
.
queryOrderById
(
queryRequest
);
WxPayLogVO
wxPayLogVO
=
new
WxPayLogVO
();
wxPayLogVO
.
setOutTradeNo
(
result
.
getOutTradeNo
());
wxPayLogVO
.
setBankType
(
result
.
getBankType
());
wxPayLogVO
.
setAttach
(
result
.
getAttach
());
wxPayLogVO
.
setSuccessTime
(
result
.
getSuccessTime
());
wxPayLogVO
.
setWxNotifyOpenid
(
result
.
getPayer
().
getOpenid
());
wxPayLogVO
.
setWxNotifyTotal
(
result
.
getAmount
().
getTotal
());
wxPayLogVO
.
setWxNotifyPayerTotal
(
result
.
getAmount
().
getPayerTotal
());
wxPayLogVO
.
setTradeType
(
result
.
getTradeType
().
toString
());
wxPayLogVO
.
setTradeState
(
result
.
getTradeState
().
toString
());
wxPayLogVO
.
setTradeStateDesc
(
result
.
getTradeStateDesc
());
return
ResultBody
.
success
(
wxPayLogVO
);
}
catch
(
ServiceException
e
)
{
return
ResultBody
.
error
(
e
.
getErrorCode
(),
e
.
getMessage
());
}
}
}
src/main/java/com/mmc/payment/service/WechatPayService.java
浏览文件 @
e75a9d35
...
...
@@ -16,4 +16,8 @@ public interface WechatPayService {
ResultBody
orderPay
(
OrderRequestParamsVO
orderRequestParamsVO
,
Integer
userAccountId
,
HttpServletRequest
request
)
throws
IOException
;
Map
payCallback
(
HttpServletRequest
request
);
ResultBody
closeOrder
(
String
orderNo
);
ResultBody
queryOrder
(
String
orderNo
);
}
src/main/resources/mapper/WechatPayDao.xml
浏览文件 @
e75a9d35
...
...
@@ -31,6 +31,11 @@
trade_state_desc = #{tradeStateDesc}
where order_no = #{outTradeNo}
</update>
<delete
id=
"deleteWxPayLogByOrderNo"
>
delete
from wx_pay_log
where order_no = #{orderNo}
</delete>
<select
id=
"selectWxPayInfoByOrderNo"
resultType=
"com.mmc.payment.entity.order.WxPayLogDO"
>
SELECT id,
order_port,
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论