function createQR(userType, funcFlag, cusFlag, userFlag, validNumber, validBeginTime, validEndTime, baseFloor,
autoFloor, floors, deviceCodes, strkey) {
baseFloor = parseInt(baseFloor);
autoFloor = parseInt(autoFloor);
var versionFlag = "0"; //版本标识,定长1位,目前默认为0,取值0~F
var timestamp = getTimestamp(funcFlag); //时间戳 定长8位/11位
cusFlag = strFillHex(parseInt(cusFlag).toString(16), 4); //客户标识 定长4位 16进制
validNumber = strFillHex(validNumber.toString(16), 2);
var nowTime = new Date().getTime() / 1000; //秒
if (nowTime > validBeginTime) {
validBeginTime = nowTime;
validBeginTime = strFillHex((validBeginTime - nowTime).toString().split(".")[0].toString(16), 5);
validEndTime = strFillHex((validEndTime - nowTime).toString().split(".")[0].toString(16), 5);
var groupInfo = getGroupInfo(funcFlag);
var shiliu = userType.toString(16);
qrCode = versionFlag + funcFlag + cusFlag + userFlag + shiliu.toUpperCase() + timestamp + validNumber +
validBeginTime + validEndTime + groupInfo;
if (funcFlag == 2 || userType == 2) {
var floorInfo = getFloorInfos(autoFloor, baseFloor, floors);
qrCode = qrCode + floorInfo;
if (funcFlag == 0 || funcFlag == 2 || userType == 2) {
var deviceInfo = getDeviceInfos(deviceCodes);
qrCode = qrCode + deviceInfo;
var mod = qrCode.length % 8;
console.log("qrcode is ");
qrCode = strFillHex2(qrCode, qrCode.length + 8 - mod);
console.log("strFillHex2 is ", qrCode);
var txt = KeeLoq_Encrypt_Str(qrCode, strkey);
console.log("KeeLoq_Encrypt_Str is ", txt);
console.log("decode64 is ", qr);