基本信息
源码名称:网上书城源码(含数据库脚本,实现了支付宝支付接口)
源码大小:84.68M
文件格式:.zip
开发语言:Java
更新时间:2019-11-20
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
实现书籍的增删改查,购买和后台管理功能
实现书籍的增删改查,购买和后台管理功能
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";
}
}
}