Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
payment
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
payment
Commits
bd9911d7
提交
bd9911d7
authored
9月 06, 2023
作者:
xiaowang
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop'
上级
0e95460c
8b03126b
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
211 行增加
和
3 行删除
+211
-3
deployment.yaml
kustomization/base/deployment.yaml
+5
-0
kustomization.yaml
kustomization/overlays/dev/kustomization.yaml
+1
-1
pom.xml
pom.xml
+11
-0
WechatPayController.java
.../java/com/mmc/payment/controller/WechatPayController.java
+9
-0
AuthSignatureFilter.java
...main/java/com/mmc/payment/filter/AuthSignatureFilter.java
+2
-1
OrderRequestParamsVO.java
.../com/mmc/payment/model/vo/order/OrderRequestParamsVO.java
+3
-1
TopUpOrderVO.java
...in/java/com/mmc/payment/model/vo/wallet/TopUpOrderVO.java
+29
-0
PublishMsg.java
src/main/java/com/mmc/payment/mq/PublishMsg.java
+12
-0
DirectExchangeConfig.java
.../java/com/mmc/payment/mq/config/DirectExchangeConfig.java
+43
-0
RabbitmqConstant.java
...in/java/com/mmc/payment/mq/constant/RabbitmqConstant.java
+24
-0
PublishMsgImpl.java
src/main/java/com/mmc/payment/mq/impl/PublishMsgImpl.java
+29
-0
WechatPayServiceImpl.java
...va/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
+29
-0
application-dev.yml
src/main/resources/application-dev.yml
+7
-0
application-prod.yml
src/main/resources/application-prod.yml
+7
-0
没有找到文件。
kustomization/base/deployment.yaml
浏览文件 @
bd9911d7
...
...
@@ -76,6 +76,11 @@ spec:
secretKeyRef
:
name
:
iuav-secret
key
:
WECHAT_APPLET_SECRET
-
name
:
RABBITMQ_PASSWORD
valueFrom
:
secretKeyRef
:
name
:
iuav-secret
key
:
RABBITMQ_PASSWORD
volumes
:
-
name
:
log-of-app
hostPath
:
...
...
kustomization/overlays/dev/kustomization.yaml
浏览文件 @
bd9911d7
...
...
@@ -14,4 +14,4 @@ patches:
images
:
-
name
:
REGISTRY/NAMESPACE/IMAGE:TAG
newName
:
mmc-registry.cn-shenzhen.cr.aliyuncs.com/sharefly-dev/payment
newTag
:
01f38f32f51899d7bdc6a4ec9743138ad2011e65
newTag
:
fd973dad9131dc9bae45573c0847dd344ec84f9a
pom.xml
浏览文件 @
bd9911d7
...
...
@@ -60,6 +60,17 @@
<artifactId>
mysql-connector-java
</artifactId>
<!--<scope>runtime</scope>-->
</dependency>
<!-- RabbitMQ -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-amqp
</artifactId>
</dependency>
<dependency>
<groupId>
com.rabbitmq
</groupId>
<artifactId>
amqp-client
</artifactId>
<version>
5.5.0
</version>
<!-- 支持开源所有版本 -->
</dependency>
<!--swagger-->
<dependency>
...
...
src/main/java/com/mmc/payment/controller/WechatPayController.java
浏览文件 @
bd9911d7
...
...
@@ -10,6 +10,7 @@ import io.swagger.annotations.ApiOperation;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
...
...
@@ -64,6 +65,14 @@ public class WechatPayController extends BaseController {
return
wechatPayService
.
applyRefund
(
applyRefundVO
);
}
@ApiIgnore
@ApiOperation
(
value
=
"feign-申请退款"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"feignApplyRefund"
)
public
ResultBody
feignApplyRefund
(
@RequestBody
ApplyRefundVO
applyRefundVO
)
{
return
wechatPayService
.
applyRefund
(
applyRefundVO
);
}
@ApiOperation
(
value
=
"退款异步通知"
)
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"OK"
,
response
=
ResultBody
.
class
)})
@PostMapping
(
"refundCallback"
)
...
...
src/main/java/com/mmc/payment/filter/AuthSignatureFilter.java
浏览文件 @
bd9911d7
...
...
@@ -40,7 +40,8 @@ public class AuthSignatureFilter implements AuthFilter {
*/
private
static
final
String
[]
IGNORE_URLS
=
{
"/payment/swagger-resources"
,
"/payment/v2/api-docs"
,
"/payment/repocash/walletUsers"
,
"/payment/doc.html"
,
"/payment/actuator/health/readiness"
,
"/payment/wechat/payCallback"
,
"/payment/wechat/refundCallback"
};
"/payment/actuator/health/readiness"
,
"/payment/wechat/payCallback"
,
"/payment/wechat/refundCallback"
,
"/payment/wechat/feignApplyRefund"
};
/*无需加密狗无需登录白名单*/
private
static
final
String
[]
USE_KEY
=
{
"/oms/account/loginByUsbKey"
};
...
...
src/main/java/com/mmc/payment/model/vo/order/OrderRequestParamsVO.java
浏览文件 @
bd9911d7
...
...
@@ -22,7 +22,9 @@ public class OrderRequestParamsVO implements Serializable {
private
String
description
;
@ApiModelProperty
(
value
=
"订单金额(分为单位)"
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"订单来源 0:产品商城 1:租赁订单 2:培训订单 ...其他后续加"
)
@ApiModelProperty
(
value
=
"订单来源 0:产品商城 1:租赁订单 2:培训订单
3:充值云享金
...其他后续加"
)
private
Integer
orderPort
;
@ApiModelProperty
(
value
=
"附加参数 :附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。"
)
private
String
attach
;
}
src/main/java/com/mmc/payment/model/vo/wallet/TopUpOrderVO.java
0 → 100644
浏览文件 @
bd9911d7
package
com
.
mmc
.
payment
.
model
.
vo
.
wallet
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* @Author LW
* @date 2023/8/23 13:37
* 概要:
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public
class
TopUpOrderVO
{
@ApiModelProperty
(
value
=
"支付用户的openid"
)
private
String
openid
;
@ApiModelProperty
(
value
=
"订单编号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"金额(分)"
)
private
Integer
amount
;
@ApiModelProperty
(
value
=
"订单状态"
)
private
String
tradeState
;
@ApiModelProperty
(
value
=
"交易状态描述"
)
private
String
tradeStateDesc
;
}
src/main/java/com/mmc/payment/mq/PublishMsg.java
0 → 100644
浏览文件 @
bd9911d7
package
com
.
mmc
.
payment
.
mq
;
import
com.mmc.payment.model.vo.wallet.TopUpOrderVO
;
/**
* @Author LW
* @date 2023/8/23 11:30
* 概要:
*/
public
interface
PublishMsg
{
void
sendNewTopUpOrder
(
TopUpOrderVO
topUpOrder
,
String
routingKey
);
}
src/main/java/com/mmc/payment/mq/config/DirectExchangeConfig.java
0 → 100644
浏览文件 @
bd9911d7
package
com
.
mmc
.
payment
.
mq
.
config
;
import
com.mmc.payment.mq.constant.RabbitmqConstant
;
import
org.springframework.amqp.core.Binding
;
import
org.springframework.amqp.core.BindingBuilder
;
import
org.springframework.amqp.core.DirectExchange
;
import
org.springframework.amqp.core.Queue
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author: lw
* @Date: 2023/8/23 11:26
*/
@Configuration
public
class
DirectExchangeConfig
{
@Bean
public
DirectExchange
directExchange
()
{
return
new
DirectExchange
(
RabbitmqConstant
.
USER_TOP_UP_DIRECT_EXCHANGE
);
}
@Bean
public
Queue
directQueue1
()
{
return
new
Queue
(
RabbitmqConstant
.
USER_TOP_UP_DIRECT_QUEUE
,
true
);
}
@Bean
public
Binding
bindingDirect1
()
{
Binding
binding
=
BindingBuilder
.
bind
(
directQueue1
()).
to
(
directExchange
()).
with
(
RabbitmqConstant
.
USER_TOP_UP_ROUTING_KEY
);
return
binding
;
}
@Bean
public
Queue
directQueue2
()
{
return
new
Queue
(
RabbitmqConstant
.
USER_TOP_UP_SUCCESS_QUEUE
,
true
);
}
@Bean
public
Binding
bindingDirect2
()
{
Binding
binding
=
BindingBuilder
.
bind
(
directQueue2
()).
to
(
directExchange
()).
with
(
RabbitmqConstant
.
USER_TOP_UP_SUCCESS_ROUTING_KEY
);
return
binding
;
}
}
src/main/java/com/mmc/payment/mq/constant/RabbitmqConstant.java
0 → 100644
浏览文件 @
bd9911d7
package
com
.
mmc
.
payment
.
mq
.
constant
;
/**
* @author: lw
* @Date: 2023/8/23 11:26
*/
public
class
RabbitmqConstant
{
/**
* 用户充值订单交换机
*/
public
final
static
String
USER_TOP_UP_DIRECT_EXCHANGE
=
"USER_TOP_UP_DIRECT_EXCHANGE"
;
/**
* 充值订单队列、routing_key
*/
public
final
static
String
USER_TOP_UP_DIRECT_QUEUE
=
"USER_TOP_UP_DIRECT_QUEUE"
;
public
final
static
String
USER_TOP_UP_ROUTING_KEY
=
"USER_TOP_UP_ROUTING_KEY"
;
/**
* 充值成功队列、routing_key
*/
public
final
static
String
USER_TOP_UP_SUCCESS_QUEUE
=
"USER_TOP_UP_SUCCESS_QUEUE"
;
public
final
static
String
USER_TOP_UP_SUCCESS_ROUTING_KEY
=
"USER_TOP_UP_SUCCESS_ROUTING_KEY"
;
}
src/main/java/com/mmc/payment/mq/impl/PublishMsgImpl.java
0 → 100644
浏览文件 @
bd9911d7
package
com
.
mmc
.
payment
.
mq
.
impl
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.mmc.payment.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.payment.mq.PublishMsg
;
import
com.mmc.payment.mq.constant.RabbitmqConstant
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* @Author LW
* @date 2023/8/23 13:42
* 概要:
*/
@Slf4j
@Service
public
class
PublishMsgImpl
implements
PublishMsg
{
@Autowired
RabbitTemplate
rabbitTemplate
;
@Override
public
void
sendNewTopUpOrder
(
TopUpOrderVO
topUpOrder
,
String
routingKey
)
{
log
.
info
(
"############云享飞pro-充值订单-RabbitMQ-Send-##########"
);
log
.
info
(
"sendNewTopUpOrder:{},routingKey:{}"
,
JSONObject
.
toJSONString
(
topUpOrder
),
routingKey
);
rabbitTemplate
.
convertAndSend
(
RabbitmqConstant
.
USER_TOP_UP_DIRECT_EXCHANGE
,
routingKey
,
JSONObject
.
toJSONString
(
topUpOrder
));
}
}
src/main/java/com/mmc/payment/service/Impl/WechatPayServiceImpl.java
浏览文件 @
bd9911d7
...
...
@@ -17,6 +17,9 @@ import com.mmc.payment.model.vo.order.ApplyRefundVO;
import
com.mmc.payment.model.vo.order.OrderRequestParamsVO
;
import
com.mmc.payment.model.vo.order.UserPayInfoVO
;
import
com.mmc.payment.model.vo.order.WxPayLogVO
;
import
com.mmc.payment.model.vo.wallet.TopUpOrderVO
;
import
com.mmc.payment.mq.PublishMsg
;
import
com.mmc.payment.mq.constant.RabbitmqConstant
;
import
com.mmc.payment.service.WechatPayService
;
import
com.mmc.payment.util.WxConfigUtils
;
import
com.wechat.pay.java.core.Config
;
...
...
@@ -61,6 +64,8 @@ public class WechatPayServiceImpl implements WechatPayService {
UserAppApi
userAppApi
;
@Resource
WxConfigUtils
wxConfigUtils
;
@Resource
PublishMsg
publishMsg
;
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
...
...
@@ -85,6 +90,7 @@ public class WechatPayServiceImpl implements WechatPayService {
Payer
payer
=
new
Payer
();
payer
.
setOpenid
(
userSimpleInfo
.
getOpenid
());
prepayRequest
.
setPayer
(
payer
);
prepayRequest
.
setAttach
(
orderRequestParamsVO
.
getAttach
());
prepayRequest
.
setAppid
(
userSystemConstant
.
getWxAppId
());
prepayRequest
.
setMchid
(
userSystemConstant
.
getMchid
());
prepayRequest
.
setDescription
(
orderRequestParamsVO
.
getDescription
());
...
...
@@ -191,12 +197,35 @@ public class WechatPayServiceImpl implements WechatPayService {
wxPayLogDO
.
setTradeStateDesc
(
transaction
.
getTradeStateDesc
());
wechatPayDao
.
updateWxPayLog
(
wxPayLogDO
);
result
.
put
(
"code"
,
"SUCCESS"
);
if
(
"TOP_UP"
.
equals
(
transaction
.
getAttach
()))
{
// 充值订单,发送mq消息进行操作
sendTopUpMsg
(
transaction
,
0
);
}
if
(
"TOP_UP"
.
equals
(
transaction
.
getAttach
())
&&
"SUCCESS"
.
equals
(
transaction
.
getTradeState
().
toString
()))
{
// 发送充值成功消息
sendTopUpMsg
(
transaction
,
1
);
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
return
result
;
}
private
void
sendTopUpMsg
(
Transaction
transaction
,
Integer
flag
)
{
TopUpOrderVO
topUpOrderVO
=
new
TopUpOrderVO
();
topUpOrderVO
.
setOpenid
(
transaction
.
getPayer
().
getOpenid
());
topUpOrderVO
.
setOrderNo
(
transaction
.
getOutTradeNo
());
topUpOrderVO
.
setAmount
(
transaction
.
getAmount
().
getTotal
());
topUpOrderVO
.
setTradeState
(
transaction
.
getTradeState
().
toString
());
topUpOrderVO
.
setTradeStateDesc
(
transaction
.
getTradeStateDesc
());
if
(
flag
==
0
)
{
publishMsg
.
sendNewTopUpOrder
(
topUpOrderVO
,
RabbitmqConstant
.
USER_TOP_UP_ROUTING_KEY
);
}
if
(
flag
==
1
)
{
publishMsg
.
sendNewTopUpOrder
(
topUpOrderVO
,
RabbitmqConstant
.
USER_TOP_UP_SUCCESS_ROUTING_KEY
);
}
}
@Override
public
ResultBody
closeOrder
(
String
orderNo
)
{
Config
config
=
wxConfigUtils
.
createConfig
();
...
...
src/main/resources/application-dev.yml
浏览文件 @
bd9911d7
...
...
@@ -13,6 +13,13 @@ spring:
jedis
:
pool
:
max-active
:
2
#rabbitMQ
rabbitmq
:
host
:
amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.vpc.mq.amqp.aliyuncs.com
port
:
5672
username
:
MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password
:
${RABBITMQ_PASSWORD}
virtual-host
:
dev
springfox
:
documentation
:
...
...
src/main/resources/application-prod.yml
浏览文件 @
bd9911d7
...
...
@@ -13,6 +13,13 @@ spring:
jedis
:
pool
:
max-active
:
2
#rabbitMQ
rabbitmq
:
host
:
amqp-cn-zvp2ozhnj001.cn-shenzhen.amqp-0.vpc.mq.amqp.aliyuncs.com
port
:
5672
username
:
MjphbXFwLWNuLXp2cDJvemhuajAwMTpMVEFJNEZ6Q3B5ckEzM1BlZ254V1M2WFY=
password
:
${RABBITMQ_PASSWORD}
virtual-host
:
prod
springfox
:
documentation
:
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论