//版本号 ticketId nowtime 协议 (。。。) 用a分割
public static function makeTicketToken($params){
$salt = 'fxyy$&ticket';
$nowTime = time();
$ticketId = isset($params['ticket_id']) ? $params['ticket_id'] :0;
$ticketToken = '1a'.$ticketId.'a'.$nowTime;
$protocol = $params['protocol'];
if($protocol == 1){// 订单
$orderTicketId = $params['order_ticket_id'];
$ticketToken .= 'a1a'.$orderTicketId;
}else if($protocol == 2){// 订单分享票
$ticketAchieveId = $params['ticket_achieve_id'];
$ticketToken .= 'a2a'.$ticketAchieveId;
}else if($protocol == 3){// 授权票 invite_status 0 分配座位
$ticketGrantId = $params['ticket_grant_id'];
$ticketToken .= 'a3a'.$ticketGrantId;
}else if($protocol == 4) {// 无座验票二维码
$inviteUserRelId = $params['invite_user_rel_id'];
$ticketToken .= 'a4a' . $inviteUserRelId;
}else if($protocol == 5){// 授权票 2不用验证入场
$ticketGrantId = $params['ticket_grant_id'];
$ticketToken .= 'a5a'.$ticketGrantId;
}
$ticketStrMd5 = md5($ticketToken.$salt);
$ticketToken = $ticketToken.$ticketStrMd5;
return base64_encode($ticketToken);
}
public static function getTicketByToken($ticketToken){
$salt = 'fxyy$&ticket';
$ticketToken = base64_decode($ticketToken);
$ticketTokenLen = mb_strlen($ticketToken);
$token = substr($ticketToken, $ticketTokenLen - 32);
$ticketStr = substr($ticketToken, 0, $ticketTokenLen - 32);
$tokenServer = md5($ticketStr.$salt);
if($token != $tokenServer){
return [];
}
$ticketArr = explode('a', $ticketStr);
if(empty($ticketArr)){
return [];
}
\Log::info('$ticketArr', ['$ticketArr'=>$ticketArr]);
$version = $ticketArr[0];
if($version == 1){
$ticketId = $ticketArr[1];
$makeTime = $ticketArr[2];
$protocol = $ticketArr[3];
$ret = [
'protocol'=>$protocol,
'ticket_id'=>$ticketId,
'make_time'=>$makeTime
];
if($protocol == 1){
$ret['order_ticket_id'] = $ticketArr[4];
$orderTicket = OrderTicket::getOrderTicketByWhere([
['th_order_ticket.id',$ret['order_ticket_id']]
]);
if(empty($orderTicket)){
return [];
}
return $ret;
}else if($protocol == 2){
$ticketAchieveId = $ticketArr[4];
$ret['ticket_achieve_id'] = $ticketAchieveId;
return $ret;
}else if($protocol == 3){
$ret['ticket_grant_id'] = $ticketArr[4];
return $ret;
}
}
return [];
}
生成随机字符串
public function create_randomstr($lenth = 6) {
return $this->random($lenth, '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ');
}
public function createsign(){
$id = isset($_POST['id']) ? $_POST['id'] : 0;
$createsign_data = uniqid(mt_rand(),true).'-'.time().'-'.$this->create_randomstr(6);
if (!empty($createsign_data)) {
$code = '200';
}else{
$code = '400';
}
echo json_encode(array('code'=>$code,'Message'=>strtoupper(md5($createsign_data))));
}