1、在order页面判断在未支付的情况的下点击“登录支付宝重新付款”实现重新付款
<script type="text/javascript">
function openLink(outTradeNo){
alipayForm.target = "newWindow";
var win = window.open("replayOrder?outTradeNo=" + outTradeNo, "newWindow");
win.focus();
window.location.href="initGoods";
}
</script>
<form name="alipayForm" th:object="${alipayForm}" action="replayOrder" method="get">
<div th:if="${#strings.isEmpty(order.isPaid)}">
<span>未付款</span>
<input type="button"
th:onclick="${#strings.concat('openLink(''').concat(order.outTradeNo).concat(''')')}
class="button" th:value="登录支付宝重新付款" />
</div>
2、通过点击按钮执行下列代码,实现跳转到支付宝页面进行支付,
@RequestMapping(value = "replayOrder", method = RequestMethod.GET)
public String replayAlipayOrder(Model model, AlipayForm alipayForm, HttpSession session, Device device) {
GoodsForm goodsForm=new GoodsForm();
List<GoodsForm> commodityType = goodsService.getType();
goodsForm.setCommodityTypeId(commodityType.get(0).getCommodityTypeId());
model.addAttribute("goodsForm", goodsForm);
model.addAttribute("commodityType", commodityType);
log.info("重新支付");
AlipayForm result = cartService.searchAlipayHistory(alipayForm);
alipayForm.setOutTradeNo(result.getOutTradeNo());
alipayForm.setBody(result.getBody());
alipayForm.setPrice(result.getPrice());
alipayForm.setReceiveAddress(result.getReceiveAddress());
alipayForm.setReceiveMobile(result.getReceiveMobile());
alipayForm.setReceiveName(result.getReceiveName());
alipayForm.setReceivePhone(result.getReceivePhone());
alipayForm.setReceiveZip(result.getReceiveZip());
alipayForm.setShowUrl(result.getShowUrl());
alipayForm.setSubject(result.getSubject());
model.addAttribute("alipayForm", alipayForm);
CartForm cartForm = new CartForm();
UVO uvo = (UVO)session.getAttribute("UVO");
if (uvo == null || StringUtils.isEmpty(uvo.getGuestId())) {
return "redirect:/initGuestLogin";
}
cartForm.setGuestId(uvo.getGuestId());
model.addAttribute("cartList", cartService.searchCartList(cartForm));
// model.addAttribute("orderList", cartService.searchOrderList(cartForm));
if (device.isNormal()) {
model.addAttribute("sHtmlText", alipayRequestWeb(alipayForm));
} else {
model.addAttribute("sHtmlText", alipayRequestMobile(alipayForm));
}
return "manager/charge/alipay";
}
3、在跳转到支付成功页面之前会先执行下列代码,
@RequestMapping(value = "initPayResult", method = RequestMethod.GET)
public String initPayResult(Model model, HttpSession session, ReturnForm returnForm, Device device) {
log.info("支付宝处理完毕后返回商户网站");
UVO uvo = (UVO)session.getAttribute("UVO");
CartForm cartForm = new CartForm();
if (uvo != null) {
cartForm.setGuestId(uvo.getGuestId());
} else {
uvo = new UVO();
session.setAttribute("UVO", uvo);
}
model.addAttribute("cartList", cartService.searchCartList(cartForm));
if (device.isNormal()) {
model.addAttribute("returnForm", returnForm);
return "shop/cart/cart-3";
} else {
return "mobile/alipay/payResult";
}
}
4、支付成功会跳转到cart-3,在页面上显示恭喜您,支付成功的字样提示。
<div class="container main">
<p class="breadNav"><a href="#">首页</a><i>></i>个人中心</p>
<div class="row">
<div class="col-md-2 ceterL">
<ul class="centerMenu cf ">
<li ><a href="order">我的订单</a><i></i></li>
<li class="curr"><a href="initCart">我的购物车</a><i></i></li>
<li><a href="initReceive">地址管理</a><i></i></li>
</ul>
</div>
<div class="col-md-10 ceterR">
<ul class="progressBar cf mt15">
<li class="curr"><i class="yh">1</i>我的购物车</li>
<li class="curr"><i class="yh">2</i>填写收货地址并支付</li>
<li class="curr"><i class="yh">3</i>下单成功</li>
</ul>
<div class="buySuccess tc">
<i class="ico-succ"></i>
<h4 class="regTips yh">恭喜您,购买成功!</h4>
<p class="yh">您的订单编号为:<i class="red" th:text="${returnForm.out_trade_no}"></i></p>
</div>
<!-- 购买成功 -->
</div>
</div>