由于微信支付功能个人身份注册的小程序是无法调用相关接口的,所以我们只需要针对 OrderServiceImpl中支付业务逻辑代码部分进行修改即可。方法就是当用户在小程序 点击确认支付后,直接就修改数据库,跳过付款这一步骤。具体方法代码如下
OrderServiceImpl
/**
* 订单支付
*/
@Override
public void payment(OrdersPaymentDTO ordersPaymentDTO) {
//根据订单号获取该订单
Orders orders = orderMapper.getByNumber(ordersPaymentDTO.getOrderNumber());
if (orders.getPayStatus() == Orders.PAID){
//如果该订单已经支付成功,无需再次支付
throw new BaseException("该订单已支付成功,无需重复支付");
}
//还没有支付的话,设置支付状态为已付款,设置结账时间,设置订单状态为待接单
orders.setPayStatus(Orders.PAID);
orders.setCheckoutTime(LocalDateTime.now());
orders.setStatus(Orders.TO_BE_CONFIRMED);
//更新订单
orderMapper.update(orders);
当然了,后续中需要退款的话也是一样的逻辑,直接跳过退款的步骤,修改数据库相应状态就可以。