package cn.itcast.bookstore.order.web.servlet;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.itcast.bookstore.cart.domain.Cart;
import cn.itcast.bookstore.cart.domain.CartItem;
import cn.itcast.bookstore.order.domain.Order;
import cn.itcast.bookstore.order.domain.OrderItem;
import cn.itcast.bookstore.order.service.OrderException;
import cn.itcast.bookstore.order.service.OrderService;
import cn.itcast.bookstore.user.domain.User;
import cn.itcast.commons.CommonUtils;
import cn.itcast.servlet.BaseServlet;
public class OrderServlet extends BaseServlet {
private OrderService orderService = new OrderService();
/**
* 支付之去银行
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String zhiFu(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Properties props = new Properties();
InputStream input = this.getClass().getClassLoader()
.getResourceAsStream("merchantInfo.properties");
props.load(input);
/*
* 准备13参数
*/
String p0_Cmd = "Buy";
String p1_MerId = props.getProperty("p1_MerId");
String p2_Order = request.getParameter("oid");
String p3_Amt = "0.01";
String p4_Cur = "CNY";
String p5_Pid = "";
String p6_Pcat = "";
String p7_Pdesc = "";
String p8_Url = props.getProperty("p8_Url");
String p9_SAF = "";
String pa_MP = "";
String pd_FrpId = request.getParameter("pd_FrpId");
String pr_NeedResponse = "1";
/*
* 计算hmac
*/
String keyValue = props.getProperty("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);
/*
* 连接易宝的网址和13+1个参数
*/
StringBuilder url = new StringBuilder(props.getProperty("url"));
url.append("?p0_Cmd=").append(p0_Cmd);
url.append("&p1_MerId=").append(p1_MerId);
url.append("&p2_Order=").append(p2_Order);
url.append("&p3_Amt=").append(p3_Amt);
url.append("&p4_Cur=").append(p4_Cur);
url.append("&p5_Pid=").append(p5_Pid);
url.append("&p6_Pcat=").append(p6_Pcat);
url.append("&p7_Pdesc=").append(p7_Pdesc);
url.append("&p8_Url=").append(p8_Url);
url.append("&p9_SAF=").append(p9_SAF);
url.append("&pa_MP=").append(pa_MP);
url.append("&pd_FrpId=").append(pd_FrpId);
url.append("&pr_NeedResponse=").append(pr_NeedResponse);
url.append("&hmac=").append(hmac);
System.out.println(url);
/*
* 重定向到易宝
*/
response.sendRedirect(url.toString());
return null;
}
/**
* 这个方法是易宝回调方法 我们必须要判断调用本方法的是不是易宝!
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String back(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 1. 获取11 + 1
*/
String p1_MerId = request.getParameter("p1_MerId");
String r0_Cmd = request.getParameter("r0_Cmd");
String r1_Code = request.getParameter("r1_Code");
String r2_TrxId = request.getParameter("r2_TrxId");
String r3_Amt = request.getParameter("r3_Amt");
String r4_Cur = request.getParameter("r4_Cur");
String r5_Pid = request.getParameter("r5_Pid");
String r6_Order = request.getParameter("r6_Order");
String r7_Uid = request.getParameter("r7_Uid");
String r8_MP = request.getParameter("r8_MP");
String r9_BType = request.getParameter("r9_BType");
String hmac = request.getParameter("hmac");
/*
* 2. 校验访问者是否为易宝!
*/
Properties props = new Properties();
InputStream input = this.getClass().getClassLoader()
.getResourceAsStream("merchantInfo.properties");
props.load(input);
String keyValue = props.getProperty("keyValue");
boolean bool = PaymentUtil.verifyCallback(hmac, p1_MerId, r0_Cmd,
r1_Code, r2_TrxId, r3_Amt, r4_Cur, r5_Pid, r6_Order, r7_Uid,
r8_MP, r9_BType, keyValue);
if(!bool) {//如果校验失败
request.setAttribute("msg", "失败!");
return "f:/jsps/msg.jsp";
}
/*
* 3. 获取状态订单,确定是否要修改订单状态,以及添加积分等业务操作
*/
orderService.zhiFu(r6_Order);//有可能对数据库进行操作,也可能不操作!
/*
* 4. 判断当前回调方式
* 如果为点对点,需要回馈以success开头的字符串
*/
if(r9_BType.equals("2")) {
response.getWriter().print("success");
}
/*
* 5. 保存成功信息,转发到msg.jsp
*/
request.setAttribute("msg", "支付成功!等待卖家发货!");
return "f:/jsps/msg.jsp";
}
/**
* 确认收货
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String confirm(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
/*
* 1. 获取oid参数 2. 调用service方法 > 如果有异常,保存异常信息,转发到msg.jsp 3.
* 保存成功信息,转发到msg.jsp
*/
String oid = request.getParameter("oid");
try {
orderService.confirm(oid);
request.setAttribute("msg", "恭喜,交易成功!");
} catch (OrderException e) {
request.setAttribute("msg", e.getMessage());
}
return "f:/jsps/msg.jsp";
}
/**
* 加载订单
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String load(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 1. 得到oid参数 2. 使用oid调用service方法得到Order 3.
* 保存到request域,转发到/jsps/order/desc.jsp
*/
request.setAttribute("order",
orderService.load(request.getParameter("oid")));
return "f:/jsps/order/desc.jsp";
}
/**
* 我的订单
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String myOrders(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
/*
* 1. 从session得到当前用户,再获取其uid 2.
* 使用uid调用orderService#myOrders(uid)得到该用户的所有订单List<Order> 3.
* 把订单列表保存到request域中,转发到/jsps/order/list.jsp
*/
User user = (User) request.getSession().getAttribute("session_user");
List<Order> orderList = orderService.myOrders(user.getUid());
request.setAttribute("orderList", orderList);
return "f:/jsps/order/list.jsp";
}
/**
* 添加订单 把session中的车用来生成Order对象
*
* @param request
* @param response
* @return
* @throws ServletException
* @throws IOException
*/
public String add(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*
* 1. 从session中得到cart 2. 使用cart生成Order对象 3. 调用service方法完成添加订单 4.
* 保存order到request域中,转发到/jsps/order/desc.jsp
*/
// 从session中获取cart
Cart cart = (Cart) request.getSession().getAttribute("cart");
// 把cart转换成Order对象
/*
* 创建Order对象,并设置属性
*
* Cart --> Order
*/
Order order = new Order();
order.setOid(CommonUtils.uuid());// 设置编号
order.setOrdertime(new Date());// 设置下单时间
order.setState(1);// 设置订单状态为1,表示未付款
User user = (User) request.getSession().getAttribute("session_user");
order.setOwner(user);// 设置订单所有者
order.setTotal(cart.getTotal());// 设置订单的合计,从cart中获取合计
/*
* 创建订单条目集合
*
* cartItemList --> orderItemList
*/
List<OrderItem> orderItemList = new ArrayList<OrderItem>();
// 循环遍历Cart中的所有CartItem,使用
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
5Java+MySQL开发的《网上书城管理系统》 (232个子文件)
bcc.bmp 6KB
icbc.bmp 6KB
guangda.bmp 6KB
cmbc.bmp 6KB
zx.bmp 6KB
bh.bmp 6KB
ccb.bmp 6KB
ningbo.bmp 6KB
shpd.bmp 6KB
abc.bmp 6KB
post.bmp 6KB
cib.bmp 6KB
dy.bmp 6KB
sfz.bmp 6KB
pingan.bmp 6KB
nanjing.bmp 6KB
bj.bmp 6KB
zheshang.bmp 6KB
hx.bmp 6KB
gf.bmp 6KB
cmb.bmp 6KB
bc.bmp 6KB
beijingnongshang.bmp 6KB
sh.bmp 6KB
OrderServlet.class 8KB
OrderDao.class 6KB
AdminAddBookServlet.class 5KB
BookDao.class 4KB
PaymentUtil.class 4KB
PaymentUtil.class 4KB
UserServlet.class 4KB
Demo1.class 3KB
AdminBookServlet.class 3KB
AdminCategoryServlet.class 3KB
CategoryDao.class 2KB
UserDao.class 2KB
Cart.class 2KB
Order.class 2KB
OrderService.class 2KB
CartServlet.class 2KB
BookServlet.class 2KB
BookService.class 2KB
CategoryService.class 2KB
UserService.class 2KB
Book.class 2KB
OrderItem.class 2KB
User.class 1KB
CartItem.class 1KB
CategoryServlet.class 1KB
Category.class 1014B
CategoryException.class 518B
OrderException.class 483B
UserException.class 478B
.classpath 607B
org.eclipse.wst.common.component 465B
org.eclipse.wst.jsdt.ui.superType.container 49B
userpanel.css 21KB
style.css 15KB
style_log.css 12KB
templatemo_style.css 8KB
pagination.css 6KB
ddsmoothmenu.css 2KB
nivo-slider.css 1KB
slimbox2.css 1KB
mymenu.css 1KB
jquery.ui.all.css 291B
login_bgx.gif 38KB
loading1.gif 12KB
loadingpn.gif 7KB
loading.gif 3KB
prevlabel.gif 1KB
nextlabel.gif 1KB
paypal.gif 1KB
closelabel.gif 979B
remove_x.gif 119B
mysql-connector-java-5.1.13-bin.jar 1.36MB
commons-collections-3.2.1.jar 562KB
mchange-commons-0.2.jar 538KB
commons-beanutils-1.8.3.jar 510KB
mail.jar 426KB
xom-1.1.jar 421KB
c3p0-0.9.2-pre1.jar 414KB
commons-lang-2.5.jar 273KB
commons-io-1.4.jar 260KB
json-lib-2.4-jdk15.jar 155KB
commons-fileupload-1.2.2.jar 127KB
commons-logging-1.1.1.jar 126KB
commons-dbutils-1.4.jar 96KB
ezmorph-1.0.6.jar 84KB
activation.jar 53KB
itcast-tools-1.4.2.jar 26KB
c3p0-oracle-thin-extras-0.9.2-pre1.jar 3KB
OrderServlet.java 9KB
OrderDao.java 6KB
PaymentUtil.java 6KB
PaymentUtil.java 6KB
UserServlet.java 5KB
AdminAddBookServlet.java 4KB
Demo1.java 4KB
BookDao.java 3KB
共 232 条
- 1
- 2
- 3
资源评论
Boqinx
- 粉丝: 21
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功