计算机课程设计-ssm在线点餐系统(沙箱支付)-javaweb外卖系统

73 篇文章 3 订阅

计算机课程设计-ssm在线点餐系统(沙箱支付)-javaweb外卖系统

1 开发环境及工具下载

  • 开发语言:Java
  • 后台:SSM(Spring+SpringMVC+Mybatis)
  • 前端:HTML+CSS+JavaScript+Layui
  • 数据库:MySQL
  • 工具:Idea、Eclipse、MyEclipse (选其一)
  • 其他:jdk1.8、maven、微信开发者工具

eclipse 下载
mysql 5.7 下载
jdk 1.8 下载
tomcat 8.0 下载
maven 3.5 下载
idea 下载

2 功能模块

2.1 管理员功能

  • 登录
  • 添加菜品
  • 修改菜品
  • 用户管理
  • 设置VIP用户
  • 订单管理
  • 导出订单信息表
  • 销售统计
  • 投诉中心

2.2 用户功能

  • 注册
  • 登录
  • 查询菜品
  • 选择菜品
  • 修改个人信息
  • 添地址管理
  • 提交订单
  • 沙箱
  • 订单投诉

3 部分运行界面

3.1 用户部分运行界面

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 管理员部分运行界面

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4 更多推荐

SpringBoot医药管理系统
springboot校园表白墙小程序
java航空订票系统

5 支付功能代码实现

 /**
 * @program:OrderFood
 * @description:支付接口
 */
@Controller
@RequestMapping("/Alipay")
public class PayController {
    long l = System.currentTimeMillis();

    @Autowired
    OrderService service;
    /**
     * 购物车
     *
     * @return
     */
    @RequestMapping(value = "/Shopcart")
    public String Shopcart() {
        return  "pay";
    }

    /**
     * 结算界面
     * @return
     */
    @ResponseBody
    @RequestMapping(value = "/PayPage")
    public String  payController (HttpServletRequest request, HttpServletResponse response) throws IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        System.out.println("payPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP");

        HttpSession session=request.getSession();
        System.out.println(session.getAttribute("lastorder"));
        Order order=(Order)session.getAttribute("lastorder");

        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.APP_ID, AlipayConfig.APP_PRIVATE_KEY, "json", AlipayConfig.CHARSET, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.sign_type);
        //设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

        //商户订单号,商户网站订单系统中唯一订单号,必填
        String out_trade_no =""+order.getOrderid();
        System.out.println(out_trade_no);
        //付款金额,必填  ShopName
        String total_amount =""+order.getAllprice();
        Double totalAmount = Double.valueOf(total_amount);
        System.out.println(total_amount);
        //订单名称,必填
        String subject ="订单:"+order.toString();
        System.out.println(subject);
        //商品描述,可空
        String body =request.getParameter("购物测试");
        // 该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
        String timeout_express = "1c";
        alipayRequest.setBizContent("{\"out_trade_no\":\"" + out_trade_no + "\","
                + "\"total_amount\":" + totalAmount + ","
                + "\"subject\":\"" + subject + "\","
                + "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");
        //请求
        String form = "";
        try {
            form = alipayClient.pageExecute(alipayRequest).getBody(); //调用SDK生成表单
        } catch (AlipayApiException e) {
            e.printStackTrace();
        }
        response.setContentType("text/html;charset=" + AlipayConfig.CHARSET);
        response.getWriter().write(form);//直接将完整的表单html输出到页面
        response.getWriter().flush();
        response.getWriter().close();
        return form;
    }

    /**
     * 同步跳转
     *
     * @param request
     * @throws Exception
     */
    @ResponseBody
    @RequestMapping("/returnUrl")
    public void returnUrl(HttpServletRequest request,HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView();

        // 获取支付宝GET过来反馈信息(官方固定代码)
        Map<String, String> params = new HashMap<String, String>();
        Map<String, String[]> requestParams = request.getParameterMap();
        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            params.put(name, valueStr);
        }
        boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.sign_type); // 调用SDK验证签名

        // 返回界面
        if (signVerified) {
            System.out.println("前往支付成功页面");
            response.sendRedirect("/index.do");
        } else {
            System.out.println("前往支付失败页面");
            response.setContentType("text/html;charset=utf-8");
            PrintWriter printWriter = response.getWriter();
            HttpSession session=request.getSession();
            System.out.println(session.getAttribute("lastorder"));
            Order order=(Order)session.getAttribute("lastorder");
            service.delSer(order.getOrderid());
            printWriter.print("<script>alert('支付失败!!!');window.location='/myorder.do';</script>");

        }
    }

    /**
     * 支付宝服务器异步通知
     *
     * @param request
     * @throws Exception
     */
    @ResponseBody
    @RequestMapping("/notifyUrl")
    public void notifyUrl(HttpServletRequest request) throws Exception {
        // 获取支付宝GET过来反馈信息
        Map<String, String> params = new HashMap<String, String>();
        Map<String, String[]> requestParams = request.getParameterMap();
        for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
            String name = (String) iter.next();
            String[] values = (String[]) requestParams.get(name);
            String valueStr = "";
            for (int i = 0; i < values.length; i++) {
                valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
            }
            params.put(name, valueStr);
        }

        boolean signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.CHARSET, AlipayConfig.sign_type); // 调用SDK验证签名

        if (signVerified) { // 验证成功 更新订单信息
            System.out.println("异步通知成功");
            // 商户订单号
            String out_trade_no = request.getParameter("out_trade_no");
            // 交易状态
            String trade_status = request.getParameter("trade_status");
            // 修改数据库
        } else {
            System.out.println("异步通知失败");
        }
    }
}

注意:该项目只展示部分功能,如需了解,评论区咨询即可。
希望和大家多多交流!!
源码项目、定制开发、代码讲解、答辩辅导

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值