import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.ResourceBundle;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.yinhe.bean.Cart;
import com.yinhe.bean.CartItem;
import com.yinhe.bean.Orderitem;
import com.yinhe.bean.Orders;
import com.yinhe.bean.User;
import com.yinhe.service.OrderService;
import com.yinhe.utils.CommonsUtils;
import com.yinhe.utils.PaymentUtil;
public class OrderServlet extends BaseServlet {
private OrderService os = new OrderService();
//我的订单
public void list(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Orders> ordersList = os.findAllOrders(((User)request.getSession().getAttribute("user")).getUid());
request.setAttribute("ordersList", ordersList);
request.getRequestDispatcher("/order_list.jsp").forward(request,
response);
}
public void submitOrders(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
if (request.getSession().getAttribute("user") == null) {
response.getWriter()
.println(
"<script>alert('请登录!');location.href='login.jsp';</script>");
// response.sendRedirect("/ShopStore/login.jsp");
}
// 将购物车中的商品存储在数据库中
Cart cart = (Cart) request.getSession().getAttribute("cart");
// 封装Orders对象
Orders orders = new Orders();
orders.setOid(CommonsUtils.getUUID());
orders.setTotal(cart.getTotal());
orders.setOrdertime(new Date());
orders.setUid(((User) request.getSession().getAttribute("user"))
.getUid());
// 订单插入数据库
os.addOrder(orders);
// 封装订单子项
Map<String, CartItem> map = cart.getCartItems();
ArrayList<Orderitem> orderitems = new ArrayList<Orderitem>();
for (Map.Entry<String, CartItem> entry : map.entrySet()) {
Orderitem orderitem = new Orderitem();
// 设置购买数量
orderitem.setCount(entry.getValue().getBuyNum());
orderitem.setItemid(CommonsUtils.getUUID());
orderitem.setOid(orders.getOid());
orderitem.setPid(entry.getValue().getProduct().getPid());
orderitem.setProduct(entry.getValue().getProduct());
orderitem.setSubtotal(entry.getValue().getSubTotal());
// 保存到数据库中
os.addOrderItem(orderitem);
// 添加到orderitems中
orderitems.add(orderitem);
}
// 将订单子项赋值给orders
orders.setOrderitems(orderitems);
request.setAttribute("orders", orders);
request.getSession().removeAttribute("cart");
request.getRequestDispatcher("/order_info.jsp").forward(request,
response);
}
public void confirmSubmitOrder(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 1.更新orders的三个字段
Map<String, String[]> properties = request.getParameterMap();
Orders order = new Orders();
try {
BeanUtils.populate(order, properties);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
os.updateOrder(order);
// 2.跳转到支付页面
// 获得 支付必须基本数据
String orderid = request.getParameter("orderid");
String money = "0.01";
// 银行
String pd_FrpId = request.getParameter("pd_FrpId");
// 发给支付公司需要哪些数据
String p0_Cmd = "Buy";
String p1_MerId = ResourceBundle.getBundle("merchantInfo").getString(
"p1_MerId");
String p2_Order = orderid;
String p3_Amt = money;
String p4_Cur = "CNY";
String p5_Pid = "";
String p6_Pcat = "";
String p7_Pdesc = "";
// 支付成功回调地址 ---- 第三方支付公司会访问、用户访问
// 第三方支付可以访问网址
String p8_Url = ResourceBundle.getBundle("merchantInfo").getString(
"responseURL");
String p9_SAF = "";
String pa_MP = "";
String pr_NeedResponse = "1";
// 加密hmac 需要密钥
String keyValue = ResourceBundle.getBundle("merchantInfo").getString(
"keyValue");
String hmac = PaymentUtil.buildHmac(p0_Cmd, p1_MerId, p2_Order, p3_Amt,
p4_Cur, p5_Pid, p6_Pcat, p7_Pdesc, p8_Url, p9_SAF, pa_MP,
pd_FrpId, pr_NeedResponse, keyValue);
// 生成url --- url?
String url = "https://www.yeepay.com/app-merchant-proxy/node?pd_FrpId="
+ pd_FrpId + "&p0_Cmd=" + p0_Cmd + "&p1_MerId=" + p1_MerId
+ "&p2_Order=" + p2_Order + "&p3_Amt=" + p3_Amt + "&p4_Cur="
+ p4_Cur + "&p5_Pid=" + p5_Pid + "&p6_Pcat=" + p6_Pcat
+ "&p7_Pdesc=" + p7_Pdesc + "&p8_Url=" + p8_Url + "&p9_SAF="
+ p9_SAF + "&pa_MP=" + pa_MP + "&pr_NeedResponse="
+ pr_NeedResponse + "&hmac=" + hmac;
// 重定向到第三方支付平台
response.sendRedirect(url);
}
}
支付页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>会员登录</title>
<link rel="stylesheet" href="css/bootstrap.min.css" type="text/css" />
<script src="js/jquery-1.11.3.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<!-- 引入自定义css文件 style.css -->
<link rel="stylesheet" href="css/style.css" type="text/css" />
<style>
body {
margin-top: 20px;
margin: 0 auto;
}
.carousel-inner .item img {
width: 100%;
height: 300px;
}
</style>
</head>
<body>
<!-- 引入header.jsp -->
<jsp:include page="/header.jsp"></jsp:include>
<div class="container">
<div class="row">
<div style="margin: 0 auto; margin-top: 10px; width: 950px;">
<strong>订单详情</strong>
<table class="table table-bordered">
<tbody>
<tr class="warning">
<th colspan="5">订单编号:${orders.oid}</th>
</tr>
<tr class="warning">
<th>图片</th>
<th>商品</th>
<th>价格</th>
<th>数量</th>
<th>小计</th>
</tr>
<c:forEach var="orderitem" items="${orders.orderitems}">
<tr class="active">
<td width="60" width="40%"><input type="hidden" name="id"
value="22"> <img
src="${pageContext.request.contextPath}/${orderitem.product.pimage}"
width="70" height="60"></td>
<td width="30%"><a target="_blank">${orderitem.product.pname}</a></td>
<td width="20%">¥${orderitem.product.shop_price}</td>
<td width="10%">${orderitem.count}</td>
<td width="15%"><span class="subtotal">¥${orderitem.subtotal}</span></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div style="text-align: right; margin-right: 120px;">
商品金额: <strong style="color: #ff6600;">¥${orders.total}元</strong>
</div>
</div>
<div>
<hr />
<form action="${pageContext.request.contextPath}/mlogin/order?method=confirmSubmitOrder" class="form-horizontal"
style="margin-top: 5px; margin-left: 150px;" id="orderForm" method="post">
<input type="hidden" name="orderid" value="${orders.oid}">
<input type="hidden" name="orderid" value="${orders.total}">
<div class="form-group">
<label for="username" class="col-sm-1 control-label">地址</label>
<div class="col-sm-5">
<input type="text" class="form-control" id="username"
name="address" placeholder="请输入收货地址">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-1 control-label">收货人</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="inputPassword3"
placeholder="请输收货人" name="name">
</div>
</div>
<div class="form-group">
<label for="confirmpwd" class="col-sm-1 control-label">电话</label>
<div class="col-sm-5">
<input type="password" class="form-control" id="confirmpwd"
placeholder="请输入联系方式" name="telephone">
</div>
</div>
<hr />
<div style="margin-top: 5px; margin-left: 150px;">
<strong>选择银行:</strong>
<p>
<br /> <input type="radio" name="pd_FrpId" value="ICBC-NET-B2C"
checked="checked" />工商银行 <img src="${pageContext.request.contextPath }/bank_img/icbc.bmp"
align="middle" /> <input type="radio"
name="pd_FrpId" value="BOC-NET-B2C" />中国银行 <img
src="${pageContext.request.contextPath }/bank_img/bc.bmp" align="middle" />
<input type="radio" name="pd_FrpId" value="ABC-NET-B2C" />农业银行 <img
src="${pageContext.request.contextPath }/bank_img/abc.bmp" align="middle" /> <br /> <br /> <input
type="radio" name="pd_FrpId" value="BOCO-NET-B2C" />交通银行 <img
src="./bank_img/bcc.bmp" align="middle" />
<input type="radio" name="pd_FrpId" value="PINGANBANK-NET" />平安银行
<img src="${pageContext.request.contextPath }/bank_img/pingan.bmp" align="middle" />
<input type="radio" name="pd_FrpId" value="CCB-NET-B2C" />建设银行 <img
src="${pageContext.request.contextPath }/bank_img/ccb.bmp" align="middle" /> <br /> <br /> <input
type="radio" name="pd_FrpId" value="CEB-NET-B2C" />光大银行 <img
src="${pageContext.request.contextPath }/bank_img/guangda.bmp" align="middle" />
<input type="radio" name="pd_FrpId" value="CMBCHINA-NET-B2C" />招商银行
<img src="${pageContext.request.contextPath }/bank_img/cmb.bmp" align="middle" />
</p>
<hr />
<p style="text-align: right; margin-right: 100px;">
<a
href="javascript:document.getElementById('orderForm').submit();">
<img src="./images/finalbutton.gif" width="204" height="51"
border="0" />
</a>
</p>
<hr />
</div>
</form>
</div>
</div>
<!-- 引入footer.jsp -->
<jsp:include page="/footer.jsp"></jsp:include>
</body>
</html>