在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Java语言基础 → 网上书城源码(含数据库脚本,实现了支付宝支付接口)

网上书城源码(含数据库脚本,实现了支付宝支付接口)

Java语言基础

下载此实例
  • 开发语言:Java
  • 实例大小:84.68M
  • 下载次数:127
  • 浏览次数:1149
  • 发布时间:2019-11-20
  • 实例类别:Java语言基础
  • 发 布 人:franklyha
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 网上书城 书城

实例介绍

【实例简介】实现书籍的增删改查,购买和后台管理功能

【实例截图】

from clipboard


from clipboard


from clipboard


from clipboard


from clipboard


from clipboard


from clipboard


from clipboard




from clipboard


from clipboard


from clipboard


from clipboard


from clipboard



【核心代码】

package com.bookStore.client.cart.handler;

import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.bookStore.client.cart.service.ICartService;
import com.bookStore.client.product.service.IProductService;
import com.bookStore.commons.beans.Order;
import com.bookStore.commons.beans.Product;
import com.bookStore.commons.beans.User;
import com.bookStore.utils.AlipayConfig;
import com.bookStore.utils.IdUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

@Controller
@RequestMapping("/client/cart")
public class CartHandler {

    @Autowired
    private IProductService productService;

    @Autowired
    private ICartService cartService;

    @RequestMapping("/addCart.do")
    //id:商品的唯一标识符
    public String addCart(String id, HttpSession session,HttpServletRequest request){
        //根据id查询把哪本书添加到购物车
        Product product = productService.findProductById(id);
        System.out.println(product);
        //第一次往购物车添加商品,创建购物车cart,以后购买就不在需要创建购物车
        // <Product ,Integer>:指定键值对的类型
        //(Map<Product,Integer>):session只能是Object类型的,所以得强转
        //先从session中获取购物车
        Map<Product ,Integer> cart = (Map<Product,Integer>)session.getAttribute("cart");
        //如果cart == null
        if (cart == null){
            //创建购物车
            cart = new HashMap<Product ,Integer>();
        }
        //当key重复时,put方法返回原来的value值
        Integer count = cart.put(product,1);
        //若count原来有值,则购物车存在这本书
        if (count != null){
            //原来的购物车的值 1
            cart.put(product,count 1);
        }
        session.setAttribute("cart",cart);
        return "/client/cart.jsp";

    }

    @RequestMapping("/changeCart.do")
    public String changeCart(String id,Integer count,HttpSession session){
        //根据id获取哪个商品,获取改变数量的商品信息
        Product product = productService.findProductById(id);
       //从session中获取原来的购物车原始数据
        Map<Product,Integer>cart = (Map<Product,Integer>)session.getAttribute("cart");
        //如果商品的数量为0,从购物车中删除该商品信息
        if (count == 0){
            //购物车是map类型的,删除时使用remov,可以删除主键
            cart.remove(product);
        }else {
            //改变购物车中商品的数量
            cart.put(product,count);
        }
        //返回到购物车
        return "/client/cart.jsp";
    }

   @RequestMapping("/createOrder.do")
    public String createOrder(Order order, HttpSession session, Model model) throws Exception{
        //获取下订单的用户信息
        User login_user = (User) session.getAttribute("login_user");
        //获取订单的购物车
        Map<Product,Integer>cart = (Map<Product, Integer>) session.getAttribute("cart");
        order.setId(IdUtils.getUUID());
        order.setUser(login_user);
        //创建订单
        cartService.createOrder(order,cart);
        //把创建完订单后的购物车删除
        session.removeAttribute("cart");
        model.addAttribute("order",order);
        return "/client/confirm.jsp";
    }
    //在“我的账户”-“订单查询”-“未支付”去支付
    @RequestMapping("/goPay.do")
    public String goPay(Order order,String id,String moeny,HttpSession session,Model model){
        //获取下订单的用户信息
        User login_user = (User) session.getAttribute("login_user");
        //获取订单的购物车
        Map<Product,Integer>cart = (Map<Product, Integer>) session.getAttribute("cart");
        order.setUser(login_user);
        //把创建完订单后的购物车删除
        session.removeAttribute("cart");
        model.addAttribute("order",order);
        return "/client/confirm.jsp";
    }

    @RequestMapping("/pay.do")
    public void pay(String id, String money, String name, HttpServletResponse response) throws Exception {
        //获得初始化的AlipayClient
        AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_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 = id;
        //付款金额,必填
        String total_amount = money;
        //订单名称,必填
        String subject = name;
        //商品描述,可空
        String body = "";

        alipayRequest.setBizContent("{\"out_trade_no\":\""  out_trade_no  "\","
                  "\"total_amount\":\""  total_amount  "\","
                  "\"subject\":\""  subject  "\","
                  "\"body\":\""  body  "\","
                  "\"product_code\":\"FAST_INSTANT_TRADE_PAY\"}");

        //请求
        String result = alipayClient.pageExecute(alipayRequest).getBody();

        response.setContentType("text/html");
        //输出
        response.getWriter().println(result);

    }

    @RequestMapping("/paysuccess.do")
    public String paysuccess(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]   ",";
            }
            //乱码解决,这段代码在出现乱码时使用
            valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
            params.put(name, valueStr);
        }

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

        //——请在这里编写您的程序(以下代码仅作参考)——
        if(signVerified) {
            //商户订单号
            String id = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");

            //支付宝交易号
            String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");

            //付款金额
            String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
            //付款成功之后,去修改订单的付款状态,支付状态变为1
            cartService.paySuccess(id);  //传的参数是这次付款成功的订单号,这次付款成功的订单
            return "/client/paysuccess.jsp";
        }else {
            return "/client/payfail.jsp";
        }
    }
}

标签: 网上书城 书城

实例下载地址

网上书城源码(含数据库脚本,实现了支付宝支付接口)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警