1.前台请求后台获得相应的地址参数,跳转URL 前台跳转支付页面
(1)前台
window.document.location = "${ctxPath}/api/alipay.html?_batch=true&_type=alipayPay&_c="+_this.id;
(2)后台
/**
* 生成跳转支付宝页面
*/
public String _$indexBatchAlipayPay() {
Map<String, String> map = alipayPay();
String from = map.get("form");
if ("200".equals(map.get("status"))) {
renderHtml(from);//返回渲染HTML页面
} else {
try {
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
basePath = basePath + "/member/order?type=route&key=123#/order/unpaid?_c=" + map.get("_c") + "&text=" + URLEncoder.encode(from, "UTF-8");
response.sendRedirect(basePath);
attr("text", from);
} catch (Exception e) {
e.printStackTrace();
logger.error("[{}] [{}] [{}]", "生成跳转支付宝页面失败 请求消息-->" + map.toString(), "<异常-->", e);
}
}
return null;
}
/**
* 生成跳转支付宝页面
*
* @author: hjj
* @date: 2018年1月30日 上午11:52:28
* @param: @return:
* void @throws
*/
public Map<String, String> alipayPay() {
Map<String, String> map = new HashMap<>();
map.put("status", "404");
map.put("_c", _c);
if (!StringUtils.isBlank(_c)) {
Members members = getMembers();
OrderForm orderForm = orderFormService.queryCodeObject(_c);
if (orderForm == null || isDel(orderForm) || !Constants.ORDER_FORM_STATUS_BUY_UNPAID.equals(orderForm.getStatus())) {//
map.put("form", "未找到未支付订单");
return map;
}
if (orderForm.getMembersId() == null || !members.getId().equals(orderForm.getMembersId().getId())) {
map.put("form", "未找到用户未支付订单");
return map;
}
RouteInfor routeId = routeInforService.getById(orderForm.getRouteId().getId());
RLock lock = null;
// 锁库存
try {
lock = CacheFactory.build(CacheFactory.REDIS).getRLock(Constants.ROUTE_QUOTA_RLOCK + orderForm.getRouteId().getId());
if (Constants.IS_TRUE.equals(routeId.getIsScareBuying())) {// 抢购活动
Boolean boo = routeInforService.judgeScareBuying(routeId.getBuyingStartDate(), routeId.getBuyingEndDate(), new Date());
if (!boo) {// 不在抢购时间内
map.put("form", "抢购时间已过!");
return map;
}
}
int quota = routeId.getQuota() == null ? 0 : routeId.getQuota();
int pendingQuota = routeId.getPendingQuota() == null ? 0 : routeId.getPe