Zzhangxiaohuiupdate
95cee2cd创建于 2021年4月14日历史提交
(function(root) {
	const APPKEY = 27182819;
	const APPSECRET = "5920d4f5d0c04b23a1059d58a9410461"; //app密码, 有可能更改,所以设为全局
	/**
	 * 创建api签名和时间戳
	 *
	 * @param {Number} appKey      app key
	 * @param {String} appSecret   app密码
	 * @param {Number} apiId       api ID 每个请求的id不一样
	 * @param {Object} body        body值固定
	 * @param {Object} head        默认值空对象
	 * @param {Object} query       默认值空对象
	 */
	let __body = { ds: 1 };
	function createSig({
		appKey = APPKEY,
		appSecret = APPSECRET,
		apiId,
		body = __body,
		head = {},
		query = {}
	}) {
		let time = new Date().getTime();
		const baseArr = [
			["X-Auth-ActionId", apiId],
			["X-Auth-Key", appKey],
			["X-Auth-Timestamp", time]
		];
		let params = [
			...baseArr,
			...Object.entries(body),
			...Object.entries(head),
			...Object.entries(query)
		]
			.sort()
			.map(([key, value]) => {
				return `${key}=${value}`;
			})
			.concat(appSecret)
			.join("&");
		params = CryptoJS.MD5(params);
		return {
			sig: params,
			time
		};
	}
	/**
	 * 封装ajax请求
	 *
	 * @param {String} type         请求类型 默认都是post
	 * @param {String} url          请求url  必须
	 * @param {Object} data         请求参数 默认都是一样的
	 * @param {Function} callback   请求成功回调  必须
	 * @param {Number} apiId        请求id  必须
	 */
	function http({
		type = "POST",
		url,
		data = JSON.stringify({
			inFields: {
				ds: "1"
			}
		}),
		callback,
		apiId
	}) {
		//生成签名和时间戳
		let sig = createSig({
			apiId
		});
		$.ajax({
			type,
			url,
			data,
			contentType: "application/json;charset=utf-8",
			beforeSend: function(xhr) {
				xhr.setRequestHeader("X-Auth-Key", APPKEY);
				xhr.setRequestHeader("X-Auth-ActionId", apiId);
				xhr.setRequestHeader("X-Auth-Signature", sig.sig);
				xhr.setRequestHeader("X-Auth-Timestamp", sig.time);
			},
			dataType: "json",
			success: callback,
			error: function() {}
		});
  }
  root.__http = typeof window ? http : f => f;
}(window));