public function voucher($orderId) { $this->synchronize(); $time = time() + $this->differenceTimestamp; $getData = array('login' => Yii::app()->params['HotelBook']['login'], 'time' => $time, 'checksum' => $this->getChecksum($time), 'order_id' => $orderId); self::$lastRequestMethod = 'voucher'; self::$lastRequestDescription = (string) $orderId; $response = $this->request(Yii::app()->params['HotelBook']['uri'] . 'voucher_info', $getData); /* * <BookingDetails> <Supplier>Kuoni</Supplier> <Reference>152336046</Reference> </BookingDetails> */ $responseObject = simplexml_load_string($response); $hotelOrderConfirmResponse = new HotelOrderConfirmResponse(); $hotelOrderConfirmResponse->orderId = (string) $responseObject->Order['Id']; $hotelOrderConfirmResponse->tag = (string) $responseObject->Order->Tag; $hotelOrderConfirmResponse->orderState = (string) $responseObject->Order->State; if ($responseObject->Order->ItemList) { UtilsHelper::soapObjectsArray($responseObject->Order->ItemList->Item); foreach ($responseObject->Order->ItemList->Item as $itemSXE) { $key = (string) $itemSXE['Id']; if (isset($itemSXE->Voucher->BookingDetails->Supplier)) { $hotelOrderConfirmResponse->suppliers[$key] = (string) $itemSXE->Voucher->BookingDetails->Supplier; } if (isset($itemSXE->Voucher->BookingDetails->Reference)) { $hotelOrderConfirmResponse->references[$key] = (string) $itemSXE->Voucher->BookingDetails->Reference; } $hotelOrderConfirmResponse->voucherAvailable[$key] = (string) $itemSXE->VoucherAvailable; } } $hotelOrderConfirmResponse->error = 0; if (isset($responseObject->Errors->Error)) { throw new CException('Internal confirmOrder hotelBook error: ' . CVarDumper::dumpAsString($responseObject->Errors)); } return $hotelOrderConfirmResponse; }
public function FlightTicketing(FlightTicketingParams $flightTicketingRequest) { $aParams = array('Request' => array('Ticketing' => array('BookID' => $flightTicketingRequest->nemoBookId, 'Commision' => array('Percent' => '2'))), 'Source' => array('ClientId' => Yii::app()->params['GDSNemo']['agencyId'], 'APIKey' => Yii::app()->params['GDSNemo']['agencyApiKey'], 'Language' => 'RU', 'Currency' => 'RUB')); $response = self::request('Ticketing', $aParams, $bCache = FALSE, $iExpiration = 0); $flightTicketingResponse = new FlightTicketingResponse(); if (isset($response->Response->Error)) { $status = 'error'; $flightTicketingResponse->status = 2; $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL; $flightTicketingResponse->addError('error', $response->Response->Error); } else { if (isset($response->Response->Ticketing->Status)) { $status = $response->Response->Ticketing->Status; } elseif (isset($response->Error->_)) { $status = 'error'; $flightTicketingResponse->addError($response->Error->Code, $response->Error->_); } else { $status = 'error'; if (GDSNemoSoapClient::$lastCurlError) { $flightTicketingResponse->addError('connection error', GDSNemoSoapClient::$lastCurlError); } } } if ($status == 'ticket') { $flightTicketingResponse->status = 1; $aParts = array(); UtilsHelper::soapObjectsArray($response->Response->Ticketing->Flight->Segments->Segment); foreach ($response->Response->Ticketing->Flight->Segments->Segment as $arrKey => $oSegment) { $oPart = new stdClass(); //Yii::beginProfile('loadAirportData'); if (!isset($oSegment->DepAirp)) { Yii::log(print_r($oSegment, true) . '|||' . $arrKey, 'info'); } try { $oPart->departure_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->DepAirp)); $oPart->departure_city = $oPart->departure_airport->city; $oPart->arrival_airport = Airport::getAirportByCode(UtilsHelper::soapElementValue($oSegment->ArrAirp)); $oPart->arrival_city = $oPart->arrival_airport->city; $oPart->departure_terminal_code = isset($oSegment->DepTerminal) ? UtilsHelper::soapElementValue($oSegment->DepTerminal) : ''; $oPart->arrival_terminal_code = isset($oSegment->ArrTerminal) ? UtilsHelper::soapElementValue($oSegment->ArrTerminal) : ''; $oPart->markAirline = Airline::getAirlineByCode($oSegment->MarkAirline); if ($oSegment->OpAirline == '**') { $oPart->opAirline = $oPart->markAirline; $oPart->transport_airline = $oPart->markAirline; } else { $oPart->opAirline = Airline::getAirlineByCode($oSegment->OpAirline); $oPart->transport_airline = Airline::getAirlineByCode($oSegment->OpAirline); } $oPart->code = $oSegment->FlightNumber; $oPart->duration = $oSegment->FlightTime * 60; $oPart->datetime_begin = UtilsHelper::soapElementValue($oSegment->DepDateTime); $oPart->datetime_end = UtilsHelper::soapElementValue($oSegment->ArrDateTime); $oPart->stopNum = UtilsHelper::soapElementValue($oSegment->StopNum); $oPart->aircraft_code = $oSegment->AircraftType; $oPart->aTariffs = array(); $oPart->aTaxes = array(); $oPart->aBookingCodes = array(); UtilsHelper::soapObjectsArray($oSegment->BookingCodes->BookingCode); foreach ($oSegment->BookingCodes->BookingCode as $sBookingCode) { $oPart->aBookingCodes[] = UtilsHelper::soapElementValue($sBookingCode); } $aParts[$oSegment->SegNum] = $oPart; } catch (CException $e) { } } if ($aParts) { $flightTicketingResponse->aParts = $aParts; } UtilsHelper::soapObjectsArray($response->Response->Ticketing->Travellers->Traveller); foreach ($response->Response->Ticketing->Travellers->Traveller as $traveller) { $ticket = array('ticketNumber' => $traveller->Ticket->TickectNum, 'documentNumber' => $traveller->DocumentInfo->DocNum); $flightTicketingResponse->tickets[] = $ticket; } } else { $flightTicketingResponse->responseStatus = ResponseStatus::ERROR_CODE_EXTERNAL; $flightTicketingResponse->addError('error', 'Status is:' . $status); $flightTicketingResponse->status = 2; } return $flightTicketingResponse; }