PHP加密解密方法 阿星小棧

 

 //版本號 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 [];
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章