Springboot整合微信支付

Springboot整合微信支付

业务流程:

一、生成微信支付二维码

获取以下内容:

2、引入依赖

<dependency>
      <groupId>com.github.wxpay</groupId>
      <artifactId>wxpay-sdk</artifactId>
      <version>0.0.3</version>
 </dependency>

3、定义接口

4、业务实现

二、查询当前支付状态

1、定义接口

//查询订单支付状态
    //参数:订单号,根据订单查询支付状态
    @GetMapping("/getOrderStatus/{orderNo}")
    public R getOrderStatus(@PathVariable String orderNo) {
          
   
        //查询是否存在当前订单
        Map<String,String> map = payLogService.queryPayStatus(orderNo);
        if (map == null) {
          
   
            return R.error().message("支付出错了");
        }
        //存在当前订单,判断当前支付状态
        //通过map获取订单状态
        /**
        *	trade_state:
        *		支付成功:SUCCESS
        *		未支付:NATIVE
        */
        System.out.println(map.get("trade_state"));
        if (map.get("trade_state").equals("SUCCESS"))  {
          
    //支付成功
            //添加记录到支付表,更新订单表订单状态
            payLogService.updateOrderStatus(map);
            return R.ok().message("支付成功......");
        }
        return R.ok().code(25000).message("支付中");
    }
}

2、业务实现

//添加支付记录和更新订单状态
    @Override
    public void updateOrderStatus(Map<String, String> map) {
          
   
        //从map中获取订单号
        String orderNo = map.get("out_trade_no");
        //根据订单号查询出订单信息
        TOrder order = orderService.getOne(new QueryWrapper<TOrder>().lambda().eq(TOrder::getOrderNo, orderNo));
        //更新订单状态
        if (order.getStatus() == 1) {
          
   
            //已经支付
            return;
        } else {
          
   
            order.setStatus(1);
            orderService.updateById(order);
        }
        //向支付表中添加支付记录
        TPayLog payLog = new TPayLog();
        payLog.setOrderNo(orderNo); //订单号
        payLog.setPayTime(new Date()); //订单完成时间
        payLog.setPayType(1);//支付类型
        payLog.setTotalFee(order.getTotalFee());//总金额(分)
        payLog.setTradeState(map.get("trade_state"));//支付状态
        payLog.setTransactionId(map.get("transaction_id")); //流水号
        payLog.setAttr(JSONObject.toJSONString(map)); //其他值

        baseMapper.insert(payLog);
    }
}
经验分享 程序员 微信小程序 职场和发展