package com.liddhome.web;
import java.io.IOException;
import java.math.BigDecimal;
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 org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import com.liddhome.entity.CartItem;
import com.liddhome.entity.Order;
import com.liddhome.entity.OrderItem;
import com.liddhome.entity.User;
import com.liddhome.pager.PageBean;
import com.liddhome.service.CartItemService;
import com.liddhome.service.OrderService;
import com.liddhome.util.commons.CommonUtil;
import com.liddhome.util.payment.PaymentUtil;
@Controller
@RequestMapping("/order")
public class OrderController{
@Autowired
private OrderService orderService;
@Autowired
private CartItemService cartItemService;
private int getPc(HttpServletRequest request){
int pc = 1;
String param = request.getParameter("pc");
if(param!=null && !param.trim().isEmpty()){
try{
pc = Integer.parseInt(param);
}catch(RuntimeException e){ }
}
return pc;
}
private String getUrl(HttpServletRequest request){
String url = request.getRequestURI()+"?"+request.getQueryString();
int index = url.lastIndexOf("&pc=");
if(index!=-1){
url = url.substring(0, index);
}
return url;
}
@RequestMapping("/paymentPre.do")
public String paymentPre(ModelMap map,String oid){
map.addAttribute("order", orderService.load(oid));
return "/jsps/order/pay";
}
/**
* 支付方法
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/payment.do")
public String payment(String oid,String total,String yh) throws IOException{
Properties props = new Properties();
props.load(this.getClass().getClassLoader().getResourceAsStream("payment.properties"));
/*
* 1. 准备13个参数
*/
String p0_Cmd = "Buy";//业务类型,固定值Buy
String p1_MerId = props.getProperty("p1_MerId");//商号编码,在易宝的唯一标识
String p2_Order = oid;//订单编码
String p3_Amt = "0.01";//支付金额 total
String p4_Cur = "CNY";//交易币种,固定值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 = yh;//支付通道
String pr_NeedResponse = "1";//应答机制,固定值1
/*
* 2. 计算hmac
* 需要13个参数
* 需要keyValue
* 需要加密算法
*/
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);
/*
* 3. 重定向到易宝的支付网关
*/
StringBuilder sb = new StringBuilder("https://www.yeepay.com/app-merchant-proxy/node");
sb.append("?").append("p0_Cmd=").append(p0_Cmd);
sb.append("&").append("p1_MerId=").append(p1_MerId);
sb.append("&").append("p2_Order=").append(p2_Order);
sb.append("&").append("p3_Amt=").append(p3_Amt);
sb.append("&").append("p4_Cur=").append(p4_Cur);
sb.append("&").append("p5_Pid=").append(p5_Pid);
sb.append("&").append("p6_Pcat=").append(p6_Pcat);
sb.append("&").append("p7_Pdesc=").append(p7_Pdesc);
sb.append("&").append("p8_Url=").append(p8_Url);
sb.append("&").append("p9_SAF=").append(p9_SAF);
sb.append("&").append("pa_MP=").append(pa_MP);
sb.append("&").append("pd_FrpId=").append(pd_FrpId);
sb.append("&").append("pr_NeedResponse=").append(pr_NeedResponse);
sb.append("&").append("hmac=").append(hmac);
return "redirect:"+sb.toString();
}
/**
* 回馈方法
* 当支付成功时,易宝会访问这里
* 用两种方法访问:
* 1. 引导用户的浏览器重定向(如果用户关闭了浏览器,就不能访问这里了)
* 2. 易宝的服务器会使用点对点通讯的方法访问这个方法。(必须回馈success,不然易宝服务器会一直调用这个方法)
* @param req
* @param resp
* @return
* @throws ServletException
* @throws IOException
*/
@RequestMapping("/back.do")
public String back(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
/*
* 1. 获取12个参数
*/
String p1_MerId = req.getParameter("p1_MerId");
String r0_Cmd = req.getParameter("r0_Cmd");
String r1_Code = req.getParameter("r1_Code");
String r2_TrxId = req.getParameter("r2_TrxId");
String r3_Amt = req.getParameter("r3_Amt");
String r4_Cur = req.getParameter("r4_Cur");
String r5_Pid = req.getParameter("r5_Pid");
String r6_Order = req.getParameter("r6_Order");
String r7_Uid = req.getParameter("r7_Uid");
String r8_MP = req.getParameter("r8_MP");
String r9_BType = req.getParameter("r9_BType");
String hmac = req.getParameter("hmac");
/*
* 2. 获取keyValue
*/
Properties props = new Properties();
props.load(this.getClass().getClassLoader().getResourceAsStream("payment.properties"));
String keyValue = props.getProperty("keyValue");
/*
* 3. 调用PaymentUtil的校验方法来校验调用者的身份
* >如果校验失败:保存错误信息,转发到msg.jsp
* >如果校验通过:
* * 判断访问的方法是重定向还是点对点,如果要是重定向
* 修改订单状态,保存成功信息,转发到msg.jsp
* * 如果是点对点:修改订单状态,返回success
*/
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) {
req.setAttribute("code", "error");
req.setAttribute("msg", "无效的签名,支付失败!(你不是好人)");
return "/jsps/msg";
}
if(r1_Code.equals("1")) {
orderService.updateStatus(r6_Order, 2);
if(r9_BType.equals("1")) {
req.setAttribute("code", "success");
req.setAttribute("msg", "恭喜,支付成功!");
return "/jsps/msg";
} else if(r9_BType.equals("2")) {
resp.getWriter().print("success");
}
}
return null;
}
@RequestMapping("/confirm.do")
public String confirm(ModelMap map,String oid){
int status = orderService.findStatus(oid);
if(status!=3){
map.addAttribute("code", "error");
map.addAttribute("msg", "状态不对,不能确认收货!");
return "/jsps/msg";
}
orderService.updateStatus(oid, 4);//设置状态为确认收货
map.addAttribute("code", "success");
map.addAttribute("msg", "恭喜,交易成功!");
return "/jsps/msg";
}
@RequestMapping("/cancel.do")
public String cancel(ModelMap map,String oid){
int status = orderService.findStatus(oid);
if(status!=1){
map.addAttribute("code", "error");
map.addAttribute("msg", "状态不对,不能取消!");
return "/jsps/msg";
}
orderService.updateStatus(oid, 5);//设置状态为取消
map.addAttribute("code", "success");
map.addAttribute("msg", "您的订单已取消成功!");
return "/jsps/msg";
}
@RequestMapping("/load.do")
public String load(ModelMap map,String oid,String btn)
throws ServletException, IOException {
Order order = orderService.load(oid);
map.addAttribute("order", order);
map.addAttribute("btn", btn);
return "/jsps/order/desc";
}
@RequestMapping("/createOrder.do")
public String createOrder(HttpServletRequest request){
String cartItemIds = request.getParameter("cartItemIds");
List<CartItem> cartItemList = cartItemService.loadCartItems(cartItemIds);
//创建order
Order order = new Order();
order.setOid(CommonUtil.uuid());
or
没有合适的资源?快使用搜索试试~ 我知道了~
基于Maven构建的yosebook-ssm项目设计源码
共614个文件
jpg:201个
js:140个
png:67个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 111 浏览量
2024-04-19
00:13:16
上传
评论
收藏 8.93MB ZIP 举报
温馨提示
本源码为基于Maven构建的yosebook-ssm项目设计,共包含613个文件,其中jpg文件201个,js文件140个,png文件67个,css文件58个,java文件50个,jsp文件40个,bmp文件25个,xml文件20个,properties文件4个,gif文件3个。该项目是用SSM框架开发的,通过Maven管理依赖,使用IntelliJ IDEA作为开发工具,可方便地运行和学习。
资源推荐
资源详情
资源评论
收起资源包目录
基于Maven构建的yosebook-ssm项目设计源码 (614个子文件)
btn.bmp 7KB
gf.bmp 6KB
cmbc.bmp 6KB
pingan.bmp 6KB
post.bmp 6KB
abc.bmp 6KB
cmb.bmp 6KB
dy.bmp 6KB
ccb.bmp 6KB
hx.bmp 6KB
zx.bmp 6KB
sfz.bmp 6KB
bj.bmp 6KB
zheshang.bmp 6KB
sh.bmp 6KB
shpd.bmp 6KB
guangda.bmp 6KB
bh.bmp 6KB
ningbo.bmp 6KB
beijingnongshang.bmp 6KB
bc.bmp 6KB
nanjing.bmp 6KB
icbc.bmp 6KB
bcc.bmp 6KB
cib.bmp 6KB
新建位图图像.bmp 0B
jquery-ui-1.8.14.custom.css 33KB
jquery-ui-1.8.14.custom.css 33KB
jquery.ui.theme.css 18KB
jquery.ui.theme.css 17KB
demos.css 14KB
jquery.ui.datepicker.css 4KB
jquery.ui.datepicker.css 4KB
jquery.datepick.css 4KB
desc.css 3KB
jquery.ui.button.css 2KB
jquery.ui.button.css 2KB
desc.css 2KB
list.css 2KB
regist.css 2KB
login.css 2KB
desc.css 2KB
jquery.ui.core.css 1KB
jquery.ui.core.css 1KB
jquery.ui.tabs.css 1KB
jquery.ui.tabs.css 1KB
pay.css 1KB
jquery.ui.dialog.css 1KB
jquery.ui.dialog.css 1KB
pager.css 1KB
ordersucc.css 1KB
showitem.css 1KB
mymenu.css 1KB
pwd.css 1KB
list.css 1KB
list.css 1KB
add.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.resizable.css 1KB
jquery.ui.slider.css 1KB
jquery.ui.slider.css 1KB
jquery.ui.autocomplete.css 1KB
jquery.ui.autocomplete.css 1KB
desc.css 1KB
jquery.ui.accordion.css 1KB
jquery.ui.accordion.css 1KB
list.css 1KB
add_edit.css 719B
list.css 711B
list.css 664B
main.css 531B
jquery.ui.base.css 427B
jquery.ui.base.css 427B
jquery.ui.progressbar.css 357B
jquery.ui.progressbar.css 357B
main.css 352B
jquery.ui.selectable.css 323B
jquery.ui.selectable.css 323B
main.css 299B
jquery.ui.all.css 291B
jquery.ui.all.css 291B
left.css 221B
left.css 188B
css.css 123B
sprites_orderdetails.gif 9KB
calendar-green.gif 919B
calendar.gif 269B
.gitignore 10B
favicon.ico 1KB
OrderController.java 9KB
AdminBookController.java 8KB
UserController.java 7KB
Book.java 6KB
PaymentUtil.java 5KB
BookServiceImpl.java 5KB
OrderServiceImpl.java 4KB
TestCase.java 4KB
User.java 4KB
UserServiceImpl.java 3KB
AdminCategoryController.java 3KB
共 614 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
沐知全栈开发
- 粉丝: 4774
- 资源: 3372
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功