涉及接口 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;
}
...
...
}效果展示

