Merge remote-tracking branch 'origin/wzj-main' into wzj-main

This commit is contained in:
huk 2025-09-26 15:59:28 +08:00
commit 8b9a963bc6
8 changed files with 57 additions and 38 deletions

View File

@ -73,11 +73,14 @@ public class AppPayController {
if (user == null) {
return R.notLogin();
}
//先生成充值订单
chargeBO.setMemberId(user.getUserId());
chargeBO.setMethod(paymentMethodEnum.getCode());
chargeBusiness.charge(chargeBO);
payParam.setSn(chargeBO.getCode());
if(payParam.getOrderType().equals("RECHARGE")){
//先生成充值订单
chargeBO.setMemberId(user.getUserId());
chargeBO.setMethod(paymentMethodEnum.getCode());
chargeBusiness.charge(chargeBO);
payParam.setSn(chargeBO.getCode());
}
return cashierSupport.payment(paymentMethodEnum, paymentClientEnum, request, response, payParam);
} catch (ServiceException se) {
log.info("支付异常", se);

View File

@ -270,7 +270,7 @@ wechat:
mch-serial-no: 6BA681D9B219034D6F7851F57D61BE9317AB48FD # 商户证书序列号
api-v3-key: T9iE71aHSmjtM35z4bDLuU3gFX8s2I2h # APIv3密钥
private-key-path: "/java/cert/apiclient_key.pem" # 商户私钥文件路径
transfer-notify-url: https://wuzhongjie.com.cn/prod-api/api/transfer/callback # 转账回调地址
transfer-notify-url: https://wuzhongjie.com.cn/prod-api/trans/withdraw/callback # 转账回调地址
app-id: wxebcdaea31881caab # 应用ID
secret: 71826d76bad096ec5407897c6ed1391f # 应用密钥
mini-program:

View File

@ -50,4 +50,6 @@ public interface OrderService extends IService<Order> {
void sendMessage(Long orderId);
void paySuccess(String orderNo,String payNo,Integer payType);
}

View File

@ -3,6 +3,7 @@ package com.wzj.soopin.order.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.text.StrBuilder;
import cn.hutool.core.util.RandomUtil;
@ -530,5 +531,45 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
}
}
@Override
public void paySuccess(String orderNo,String payNo,Integer payType) {
// 根据订单编号查询订单信息
Order order = getByNo(orderNo);
Assert.notNull(order, "订单不存在");
// 生成订单核销码信息
verificationCodeService.generateVerificationCode(order);
// 更新订单信息
this.updateById(Order.builder()
.id(order.getId())
.status(OrderStatusEnum.VERIFY.getValue())
.paymentTime(LocalDateTime.now())
.payType(payType)
.build());
//发出消息
MqUtil.sendIMMessage(buildMQMessage(order));
}
private MQMessage buildMQMessage(Order order) {
Map<String, Object> params = new HashMap<>();
params.put("orderID", order.getId());
params.put("amount", order.getTotalAmount());
//取订单的第一个商品
List<OrderItem> orderItems = orderItemMapper.findByOrderId(order.getId());
if (CollectionUtil.isNotEmpty(orderItems)) {
params.put("name", orderItems.get(0).getProductName());
params.put("pic", orderItems.get(0).getPic());
params.put("price", orderItems.get(0).getSalePrice());
params.put("amount", orderItems.get(0).getQuantity());
}
MQMessage mqMessage = new MQMessage();
mqMessage.setTag(MessageActionEnum.ORDER_PAY.name());
mqMessage.setMessageType(MQMessageType.IM.name());
mqMessage.setToUserId(order.getMemberId());
mqMessage.setData(params);
return mqMessage;
}
}

View File

@ -98,7 +98,6 @@ public class WithdrawController {
//更新提现状态
service.withdrawCallback(id);
return R.ok();
}

View File

@ -97,32 +97,6 @@ public class WxPayController {
}
return response;
}
/**
* 微信商户零线转账 - 回调通知
* @Context注解 把HTTP请求上下文对象注入进来HttpServletRequestHttpServletResponseUriInfo
* @return
*/
@Operation(summary = "微信商户零线转账 - 回调通知")
@RequestMapping(value = "/callback", method = {RequestMethod.GET, RequestMethod.POST})
@Log(title = "微信商户零线转账 - 回调通知", businessType = BusinessType.INSERT)
public ResponseEntity<Map<String, String>> wxPayCallback(@Context HttpServletRequest request) {
Map<String,String> errMap = new HashMap<>();
try {
log.info("微信商户零线转账 - 回调通知 /wxpay/callback");
Map<String, String> resMap = (Map<String, String>) wxPayService.wxPaySuccessCallback(request);
return new ResponseEntity<>(resMap, HttpStatus.OK);
} catch (ServiceException e){
errMap.put("code", "FAIL");
errMap.put("message", e.getMessage());
return new ResponseEntity<>(errMap, HttpStatus.BAD_REQUEST);
} catch (Exception e) {
log.error("微信商户零线转账 - 回调通知 /wxpay/callback异常", e);
errMap.put("code", "FAIL");
errMap.put("message", "服务器内部错误");
return new ResponseEntity<>(errMap, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
/**
* 商家转账 - 商户单号查询转账单
* @param outBillNo 商户系统内部的商家单号

View File

@ -54,14 +54,14 @@ public class OrderCashier implements CashierExecute {
Order order = orderService.getByNo(payParam.getSn());
// //如果订单已支付则不能发器支付
if (!order.getStatus().equals(OrderStatusEnum.UNPAID.name())) {
if (!order.getStatus().equals(OrderStatusEnum.UNPAID.getValue())) {
throw new ServiceException(ResultCode.PAY_DOUBLE_ERROR);
}
//如果订单状态不是待付款则抛出异常
if (!order.getStatus().equals(OrderStatusEnum.UNPAID.getValue())) {
throw new ServiceException(ResultCode.PAY_BAN);
}
cashierParam.setPrice(order.getPayAmount().longValue());
cashierParam.setPrice(order.getTotalAmount().longValue());
//
// try {
// BaseSetting baseSetting = JSONUtil.toBean(settingService.get(SettingEnum.BASE_SETTING.name()).getSettingValue(), BaseSetting.class);
@ -92,9 +92,8 @@ public class OrderCashier implements CashierExecute {
PayParam payParam = paymentSuccessParams.getPayParam();
if (payParam.getOrderType().equals(CashierEnum.ORDER.name())) {
// orderService.payOrder(payParam.getSn(),
// paymentSuccessParams.getPaymentMethod(),
// paymentSuccessParams.getReceivableNo());
orderService.paySuccess(payParam.getSn(),
paymentSuccessParams.getReceivableNo(),paymentSuccessParams.getPaymentMethod());
log.info("订单{}支付成功,金额{},方式{}", payParam.getSn(),
paymentSuccessParams.getPaymentMethod(),
paymentSuccessParams.getReceivableNo());

View File

@ -84,6 +84,7 @@ docker run -d \
docker run -d \
--name minio \
--restart always \
-p 9000:9000 \
-p 9001:9001 \
-e TZ=Asia/Shanghai \