提交 005c93a7 作者: xiaowang

充值订单支付

上级 7d936f14
......@@ -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>
......
......@@ -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;
}
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;
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,26 @@ 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);
}
} catch (IOException e) {
e.printStackTrace();
}
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
public ResultBody closeOrder(String orderNo) {
Config config = wxConfigUtils.createConfig();
......
......@@ -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:
......
......@@ -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 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论