package com.webshoprsmex.controller;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSONObject;
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.alipay.api.request.AlipayTradeRefundRequest;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.webshoprsmex.config.AlipayConfig;
import com.webshoprsmex.model.Cart;
import com.webshoprsmex.model.Item;
import com.webshoprsmex.model.Order;
import com.webshoprsmex.model.Orderitem;
import com.webshoprsmex.model.Payrecord;
import com.webshoprsmex.model.User;
import com.webshoprsmex.service.CartService;
import com.webshoprsmex.service.ItemService;
import com.webshoprsmex.service.OrderService;
import com.webshoprsmex.service.OrderitemService;
import com.webshoprsmex.service.PayrecordService;
import com.webshoprsmex.service.RefundrecordService;
import com.webshoprsmex.util.Constant;
import com.webshoprsmex.util.DateUtil;
/**
* 前台订单控制器
*/
@Controller
@Scope("prototype")
@RequestMapping(value = "front/order")
public class FrontOrderController extends BaseController{
@Autowired
private ItemService itemService;//注入商品业务类
@Autowired
private CartService cartService;//注入购物车业务类
@Autowired
private OrderService orderService;//注入订单业务类
@Autowired
private OrderitemService orderitemService;//注入订单详情业务类
@Autowired
private PayrecordService payrecordService;//注入支付记录业务类
@Autowired
private RefundrecordService refundrecordService;//注入退款记录业务类
/**
* 分页带参数查询,我的订单
* @param map
* @param pageNum
* @param pageSize
* @return
*/
@RequestMapping("/list")
public String list(ModelMap map,
@RequestParam(value="pageNum", defaultValue="1") int pageNum,
@RequestParam(value="pageSize", defaultValue = Constant.pageSize) int pageSize){
PageHelper.startPage(pageNum, pageSize);
//查询参数集合
params.add(new Object[]{"userid","=",getCurrentUser().getId()});
List<Order> list = orderService.find(params);
PageInfo<Order> pageInfo = new PageInfo<Order>(list);
map.put("pageBean", pageInfo);
return "front/order/list";
}
/**
* 跳转到支付页面
* @param orderid
* @return
*/
@RequestMapping("/pay")
public String pay(Integer orderid,Model model){
Order order = orderService.selectByPrimaryKey(orderid);
if(order!=null && order.getUserid()==getCurrentUser().getId() && order.getState()==1){
params.add(new Object[]{"oi.orderid","=",orderid});
List<Orderitem> orderitemList = orderitemService.findJoin(params);
model.addAttribute("order",order);
model.addAttribute("orderitemList",orderitemList);
}
return "front/order/pay";
}
/**
* 支付,跳转到支付宝支付页面
* @param orderid 订单编号
* @param bankname 支付方式
* @param banknum 支付账号
* @return 返回字符串(html格式,是一个表单和一个提交表单的js)
* @throws Exception
*/
@RequestMapping(value = "/doPay", produces = "text/html; charset=UTF-8")
@ResponseBody
public String doPay(Integer orderid,String bankname,String banknum) throws Exception{
//查询订单,只有在订单未支付状态才允许支付
Order order = orderService.selectByPrimaryKey(orderid);
if(order!=null && order.getUserid()==getCurrentUser().getId() && order.getState()==1){
//修改订单的 支付方式和支付账号
order.setBankname(bankname);
order.setBanknum(banknum);
orderService.updateByPrimaryKeySelective(order);
//获得初始化的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 = new String(String.valueOf(orderid).getBytes("ISO-8859-1"),"UTF-8");
//付款金额,必填
String total_amount = new String(order.getTotalprice().getBytes("ISO-8859-1"),"UTF-8");
//商品名称,必填,长度256
String subject = "购物订单!" + DateUtil.getCurrentDate();
//商品描述,可空
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();
return result;
}else{
return "操作异常!";
}
}
/**
* 支付宝支付成功后返回接口
* @return
* @throws Exception
*/
@RequestMapping("/doPayReturn")
public String doPayReturn(ModelMap modelMap) throws Exception{
int success = 0;//支付成功或者失败标记,大于0:成功,0:失败
String message = "";//操作成功或者失败提示
//获取支付宝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);
}
System.out.println(params);
boolean signVerified = false;
try{
//调用SDK验证签名
signVerified = AlipaySignature.rsaCheckV1(params, AlipayConfig.alipay_public_key,
AlipayConfig.charset, AlipayConfig.sign_type);
}catch(Exception exception){
exception.printStackTrace();
}
//验证签名
if(signVerified) {
//商户订单号trade_no
String out_trade_no = new String(request.getParameter("out_trade_no").getBytes("ISO-8859-1"),"UTF-8");
//支付宝交易号out_trade_no
String trade_no = new String(request.getParameter("trade_no").getBytes("ISO-8859-1"),"UTF-8");
//付款金额total_amount
String total_amount = new String(request.getParameter("total_amount").getBytes("ISO-8859-1"),"UTF-8");
//保存返回数据
modelMap.put("out_trade_no", out_trade_no);
modelMap.put("trade_no", trade_no);
modelMap.put("total_amount", total_amount);
//修改订单状态并添加支付记录
Integer orderid = Integer.parseInt(out_trade_no);
success = orderService.doPay(orderid, total_amount, trade_no);
}else {
//验签失败
message = "验签失败!请联系管理员!";
}
modelMa
没有合适的资源?快使用搜索试试~ 我知道了~
基于智能推荐的农产品网上选购系统源代码
共840个文件
jpg:143个
jar:110个
png:93个
需积分: 5 1 下载量 196 浏览量
2023-03-27
02:32:20
上传
评论 1
收藏 64.02MB RAR 举报
温馨提示
基于智能推荐的农产品网上选购系统源代码
资源推荐
资源详情
资源评论
收起资源包目录
基于智能推荐的农产品网上选购系统源代码 (840个子文件)
111 15KB
FrontOrderController.class 15KB
CFUtil.class 8KB
FrontItemController.class 7KB
AdminIndexController.class 6KB
FrontIndexController.class 5KB
FrontUserController.class 5KB
CommonController.class 5KB
FrontCommentController.class 4KB
MailUtil.class 4KB
FrontCartController.class 4KB
AuthInterceptor.class 4KB
CFDataModelUtil.class 4KB
AdminItemController.class 4KB
CFPrintUtil.class 4KB
FrontScorerecordController.class 4KB
AdminOrderController.class 3KB
AdminTypeController.class 3KB
Order.class 3KB
FrontCollectController.class 3KB
AdminCommentController.class 3KB
AdminUserController.class 3KB
FrontRefundrecordController.class 3KB
FrontPayrecordController.class 3KB
AdminScorerecordController.class 3KB
FrontLoginController.class 3KB
AlipayConfig.class 3KB
AdminCollectController.class 3KB
ItemService.class 3KB
TypeService.class 3KB
OrderService.class 3KB
BaseService.class 3KB
Orderitem.class 2KB
FrontRegisterController.class 2KB
AdminRefundrecordController.class 2KB
Refundrecord.class 2KB
Payrecord.class 2KB
AdminPayrecordController.class 2KB
Item.class 2KB
AdminOrderitemController.class 2KB
FrontOrderitemController.class 2KB
Comment.class 2KB
Scorerecord.class 2KB
Collect.class 2KB
User.class 2KB
ScoreAnalysis.class 2KB
Cart.class 2KB
BaseController.class 1KB
InitAppListener.class 1KB
Constant.class 1KB
CurScoreAnalysis.class 1KB
Admin.class 1KB
DateUtil.class 1KB
OrderitemService.class 1019B
ValcodeModel.class 1007B
CartService.class 995B
ScorerecordService.class 956B
BaseMapper.class 940B
Type.class 905B
ItemMapper.class 607B
RefundrecordService.class 535B
CommonUtil.class 530B
PayrecordService.class 523B
CollectService.class 515B
CommentService.class 515B
AdminService.class 507B
UserService.class 503B
OrderitemMapper.class 454B
CFConstantUtil.class 443B
ScorerecordMapper.class 408B
CartMapper.class 380B
RefundrecordMapper.class 299B
BaseModel.class 298B
PayrecordMapper.class 290B
CollectMapper.class 284B
CommentMapper.class 284B
AdminMapper.class 278B
OrderMapper.class 278B
UserMapper.class 275B
TypeMapper.class 275B
.classpath 851B
org.eclipse.wst.common.component 464B
org.eclipse.wst.jsdt.ui.superType.container 49B
plugins.css 202KB
bootstrap.min.css 152KB
bootstrap.css 117KB
style.css 106KB
animate.min.css 57KB
ionicons.css 56KB
main.css 50KB
ueditor.css 44KB
font-awesome.min.css 35KB
ueditor.min.css 34KB
jquery-ui.min.css 31KB
video-js.css 21KB
image.css 19KB
video.css 15KB
attachment.css 15KB
layer.css 14KB
swiper-bundle.min.css 13KB
共 840 条
- 1
- 2
- 3
- 4
- 5
- 6
- 9
资源评论
叫我豆豆哥哥
- 粉丝: 14
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功