涉及接口 hotel.data.validate
demo语言: Java
开发环境:
前端 jQuery类库、layui、 bootstrap
后端 jdk1.7以上
下单前将提交的数据进行校验
请求url
酒店详情页,将酒店列表页的日期、hotelid、选择rateplan和房间数量等等参数传入
var validateUrl = "/api/order/checkProduct"; // 校验请求controller var validateReq = { "arrivalDate": arrivalDate, "departureDate": $("#inputDepartureDate").val(), "hotelId": $("#inputHotelId").val(), "roomTypeID": $("#inputRoomTypeId").val(), "ratePlanId": $("#inputRatePlanId").val(), "earliestArrivalTime": (nextHour.substring(0,1) == "0" ? arrivalNextDate: arrivalDate) + " " + nextHour + ":00", "latestArrivalTime": ($('#btnArrivalTime').attr("value").substring(0,1) == "0"? arrivalNextDate: arrivalDate) + " " + $('#btnArrivalTime').attr("value"), "numberOfRooms": $("#btnRoomNum").attr("value"), "totalPrice": parseFloat($('#inputTotalRate').val()) };
js请求后端
提交后端后返回校验结果,如果校验通过,则继续下单,如果没通过则提示客人校验失败
// 请求校验参数 var validateResult = ajaxCommonForJson(validateUrl, "POST", validateReq); // 通过则继续下单,否则提示错误 if (validateResult != null) { if (validateResult.validate) { if (validateResult.message != null && validateResult.message != "") { if( !confirm( validateResult.message)) { return; } } } else { alert(validateResult.errorMessage); return; } }
后端调用
后端通过http协议调用艺龙的hotel.data.validate接口
public class HotelDataValidateApi { private static double version = 1.50; private static EnumLocal locale = EnumLocal.zh_CN; private static boolean isHttps = false; ... ... /** * 通过http工具类调用艺龙接口,将前端参数拼接为URL */ public HotelValidateResult hotelValidate(ValidateCondition condition, String userName, String appKey, String secretKey) { HotelValidateResult result = new HotelValidateResult(); String url = ""; String responseData = ""; try{ BaseRequest<ValidateCondition> req = new BaseRequest<ValidateCondition>(); req.Version = version; req.Local = locale; req.Request = condition; //请求参数转换为Json字符串 String str = JsonUtil.entity2Json(req); //产生签名 long epoch = System.currentTimeMillis()/1000; String sig = Tool.md5(epoch + Tool.md5(str + appKey) + secretKey); //产生请求链接 url = "http"+(this.isHttps ? "s": "")+ "://" + serverHost + "/rest?format=json&method=hotel.data.validate"; url += "&user="+ userName +"×tamp="; url += epoch; url += "&signature="; url += sig; url += "&data=" + Tool.encodeUri(str); //发送请求 responseData = HttpUtil.Send("GET", url, "", "application/json"); //返回值处理 result = JsonUtil.jsonToObject(responseData, HotelValidateResult.class); } catch (Exception e) { log.info("[HotelValidateApi] 异常: " + e); log.info("发送的url: " + url); log.info("返回值: " + responseData); } return result; } ... ... }
效果展示
