提交 005c93a7 作者: xiaowang

充值订单支付

上级 7d936f14
...@@ -60,6 +60,17 @@ ...@@ -60,6 +60,17 @@
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<!--<scope>runtime</scope>--> <!--<scope>runtime</scope>-->
</dependency> </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--> <!--swagger-->
<dependency> <dependency>
......
...@@ -22,7 +22,9 @@ public class OrderRequestParamsVO implements Serializable { ...@@ -22,7 +22,9 @@ public class OrderRequestParamsVO implements Serializable {
private String description; private String description;
@ApiModelProperty(value = "订单金额(分为单位)") @ApiModelProperty(value = "订单金额(分为单位)")
private Integer amount; private Integer amount;
@ApiModelProperty(value = "订单来源 0:产品商城 1:租赁订单 2:培训订单 ...其他后续加") @ApiModelProperty(value = "订单来源 0:产品商城 1:租赁订单 2:培训订单 3:充值云享金 ...其他后续加")
private Integer orderPort; private Integer orderPort;
@ApiModelProperty(value = "附加参数 :附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用,实际情况下只有支付完成状态才会返回该字段。")
private String attach;
} }
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;
}
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);
}
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 directQueue() {
return new Queue(RabbitmqConstant.USER_TOP_UP_DIRECT_QUEUE, true);
}
@Bean
public Binding bindingDirect() {
Binding binding = BindingBuilder.bind(directQueue()).to(directExchange()).with(RabbitmqConstant.USER_TOP_UP_ROUTING_KEY);
return binding;
}
}
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";
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";
}
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));
}
}
...@@ -17,6 +17,9 @@ import com.mmc.payment.model.vo.order.ApplyRefundVO; ...@@ -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.OrderRequestParamsVO;
import com.mmc.payment.model.vo.order.UserPayInfoVO; import com.mmc.payment.model.vo.order.UserPayInfoVO;
import com.mmc.payment.model.vo.order.WxPayLogVO; 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.service.WechatPayService;
import com.mmc.payment.util.WxConfigUtils; import com.mmc.payment.util.WxConfigUtils;
import com.wechat.pay.java.core.Config; import com.wechat.pay.java.core.Config;
...@@ -61,6 +64,8 @@ public class WechatPayServiceImpl implements WechatPayService { ...@@ -61,6 +64,8 @@ public class WechatPayServiceImpl implements WechatPayService {
UserAppApi userAppApi; UserAppApi userAppApi;
@Resource @Resource
WxConfigUtils wxConfigUtils; WxConfigUtils wxConfigUtils;
@Resource
PublishMsg publishMsg;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
...@@ -85,6 +90,7 @@ public class WechatPayServiceImpl implements WechatPayService { ...@@ -85,6 +90,7 @@ public class WechatPayServiceImpl implements WechatPayService {
Payer payer = new Payer(); Payer payer = new Payer();
payer.setOpenid(userSimpleInfo.getOpenid()); payer.setOpenid(userSimpleInfo.getOpenid());
prepayRequest.setPayer(payer); prepayRequest.setPayer(payer);
prepayRequest.setAttach(orderRequestParamsVO.getAttach());
prepayRequest.setAppid(userSystemConstant.getWxAppId()); prepayRequest.setAppid(userSystemConstant.getWxAppId());
prepayRequest.setMchid(userSystemConstant.getMchid()); prepayRequest.setMchid(userSystemConstant.getMchid());
prepayRequest.setDescription(orderRequestParamsVO.getDescription()); prepayRequest.setDescription(orderRequestParamsVO.getDescription());
...@@ -191,12 +197,26 @@ public class WechatPayServiceImpl implements WechatPayService { ...@@ -191,12 +197,26 @@ public class WechatPayServiceImpl implements WechatPayService {
wxPayLogDO.setTradeStateDesc(transaction.getTradeStateDesc()); wxPayLogDO.setTradeStateDesc(transaction.getTradeStateDesc());
wechatPayDao.updateWxPayLog(wxPayLogDO); wechatPayDao.updateWxPayLog(wxPayLogDO);
result.put("code", "SUCCESS"); result.put("code", "SUCCESS");
if ("TOP_UP".equals(transaction.getAttach())) {
// 充值订单,发送mq消息进行操作
sendTopUpMsg(transaction);
}
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} }
return result; return result;
} }
private void sendTopUpMsg(Transaction transaction) {
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());
publishMsg.sendNewTopUpOrder(topUpOrderVO, RabbitmqConstant.USER_TOP_UP_ROUTING_KEY);
}
@Override @Override
public ResultBody closeOrder(String orderNo) { public ResultBody closeOrder(String orderNo) {
Config config = wxConfigUtils.createConfig(); Config config = wxConfigUtils.createConfig();
......
...@@ -13,6 +13,13 @@ spring: ...@@ -13,6 +13,13 @@ spring:
jedis: jedis:
pool: pool:
max-active: 2 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: springfox:
documentation: documentation:
......
...@@ -13,6 +13,13 @@ spring: ...@@ -13,6 +13,13 @@ spring:
jedis: jedis:
pool: pool:
max-active: 2 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: springfox:
documentation: documentation:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论