springboot 实现 订单 和 微信扫码支付 功能

1:下面是简单生成订单和支付的流程

后端实现

1: 首先开发 生成订单接口,根据订单查询接口,

生成微信支付的二维码的接口,查询订单支付的状态的接口

 

@Api(tags="订单接口")
@RestController
@RequestMapping("/orderservice/order")
@CrossOrigin
public class EduOrderController {

    @Autowired
    private EduOrderService eduOrderService;

    /**
     * 创建订单
     * @param courseId
     * @param request
     * @return
     */
    @ApiOperation(value = "创建订单接口")
    @PostMapping("createdOrder/{courseId}")
    public R createdOrder(
            @ApiParam(name="courseId" , value = "课程id",defaultValue = "")
            @PathVariable(value = "courseId") String courseId,HttpServletRequest request){
        String orderNo = eduOrderService.createdOrder(courseId,request);
        return R.ok().data("orderId",orderNo);
    }

    /**
     * 根据订单号查询订单信息
     * @param orderNo
     * @return
     */
    @ApiOperation("根据订单id获取订单信息")
    @GetMapping("getOrder/{orderNo}")
    public R getOrder(
            @ApiParam(value = "orderNo", name="订单号" ,defaultValue = "")
            @PathVariable(value = "orderNo") String orderNo){
        QueryWrapper<EduOrder> queryWrapper = new QueryWrapper<EduOrder>();
        queryWrapper.eq("order_no",orderNo);
        EduOrder one = eduOrderService.getOne(queryWrapper);
        return R.ok().data("data",one);
    }
}
@Api(tags = "支付日志接口")
@RestController
@RequestMapping("/orderservice/paylog")
@CrossOrigin
public class EduPayLogController {

    @Autowired
    private EduPayLogService eduPayLogService;

    //生成微信支付二维码接口
    //参数是订单号
    @GetMapping("createNative/{orderNo}")
    public R createNative(@PathVariable String orderNo) {
        //返回信息,包含二维码地址,还有其他需要的信息
        Map map = eduPayLogService.createNatvie(orderNo);
        System.out.println("****返回二维码map集合:"+map);
        return R.ok().data(map);
    }

    //查询订单支付状态
    //参数:订单号,根据订单号查询 支付状态
    @GetMapping("queryPayStatus/{orderNo}")
    public R queryPayStatus(@PathVariable String orderNo) {
        Map<String,String> map = eduPayLogService.queryPayStatus(orderNo);
        System.out.println("*****查询订单状态map集合:"+map);
        if(map == null) {
            return R.error().message("支付出错了");
        }
        //如果返回map里面不为空,通过map获取订单状态
        if(map.get("trade_state").equals("SUCCESS")) {//支付成功
            //添加记录到支付表,更新订单表订单状态
            eduPayLogService.updateOrdersStatus(map);
            return R.ok().message("支付成功");
        }
        return R.ok().code(25000).message("支付中");

    }
}

前台实现:

参考pages/orders和pay下面的文件

猜你喜欢

转载自blog.csdn.net/qq_39564710/article/details/113745082