PHPackages                             thomaswiener/client-eurolines - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. thomaswiener/client-eurolines

ActiveLibrary[API Development](/categories/api)

thomaswiener/client-eurolines
=============================

eurolines booking client

014PHP

Since Nov 14Pushed 11y ago1 watchersCompare

[ Source](https://github.com/thomaswiener/client-eurolines)[ Packagist](https://packagist.org/packages/thomaswiener/client-eurolines)[ RSS](/packages/thomaswiener-client-eurolines/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Eurolines Client [![Build Status](https://camo.githubusercontent.com/7a79fcbf6b4fcc0f31942e373898a91be52b2b063b29ffb859d4171e6eb3596e/68747470733a2f2f7472617669732d63692e6f72672f74686f6d61737769656e65722f636c69656e742d6575726f6c696e65732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/thomaswiener/client-eurolines)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

[](#eurolines-client-)

This package is a php client implementation for the Eurolines (RO) Webservice (SOAP). It is based on the webservice description found here: [http://rezervari.eurolines.ro/emlines\_api/APIdoc.htm](http://rezervari.eurolines.ro/emlines_api/APIdoc.htm)

Endpoint descriptions can be found here: [http://rezervari.eurolines.ro/emlines\_api/api.asmx](http://rezervari.eurolines.ro/emlines_api/api.asmx)?

Please read the following description before continuing:

[http://rezervari.eurolines.ro/emlines\_api/APIdoc.htm#\_Toc211526756](http://rezervari.eurolines.ro/emlines_api/APIdoc.htm#_Toc211526756)

Below you will find example calls for the different endpoints.

### Installation

[](#installation)

Install via composer.

Add *"thomaswiener/client-eurolines": "dev-master"* to your composer.json and update vendors.

Packagist:

Github:

### Setup

[](#setup)

```
$loader = require_once __DIR__ . "/./vendor/autoload.php";

$config = array(
    'wsdl'     => 'http://rezervari.eurolines.ro/emlines_api/api.asmx?WSDL',
    'username' => 'username',
    'password' => 'PA$$W0RD'
);

$originCode      = 'BUC'; //Bucuresti
$destinationCode = 'MUN'; //Munich

$client          = new \EurolinesClient\Client($config, 'log');
$securityService = new \EurolinesClient\Endpoint\Security($client);
$stationService  = new \EurolinesClient\Endpoint\Station($client);
$journeyService  = new \EurolinesClient\Endpoint\Journey($client);
$ticketService   = new \EurolinesClient\Endpoint\Ticket($client);

session_start();
```

### Security

[](#security)

#### Login

[](#login)

```
$user = new \EurolinesClient\Data\User();
$user
    ->setUsername($config['username'])
    ->setPassword($config['password'])
    ->setLanguageCode('en');

$response = $securityService->login($user);

//set session id
$_SESSION['ASP.NET_SessionId'] = $response->getSessionId();

//check if logged in
$response = $securityService->isLoggedIn();
if (!$response->getData()->IsLoggedInResult) {
    echo 'not logged in'; exit();
}
```

\####Logout

```
$response = $securityService->logout();
```

#### Logged In Check

[](#logged-in-check)

```
$response = $securityService->isLoggedIn();
if ($response->getData()->IsLoggedInResult) {
    echo 'error logging out'; exit();
}
```

### Journey

[](#journey)

#### Get Stations

[](#get-stations)

```
$response = $stationService->getAll();

foreach ($response->getData()->busStopCollection->Stop as $stationService) {
    if ($stationService->Code == $originCode) {
        $busStopFrom = $stationService;
    }
    if ($stationService->Code == $destinationCode) {
        $busStopTo = $stationService;
    }
}
```

#### Search

[](#search)

```
$journeySearchData = new \EurolinesClient\Data\JourneySearch();
$journeySearchData
    ->setJourneyType(EurolinesClient\Data\JourneySearch::TYPE_ONE_WAY)
    ->setBusStopCodeFrom($busStopFrom->Code)
    ->setBusStopCodeTo($busStopTo->Code)
    ->setDepartureDate((new \DateTime())->setDate(2014, 12, 5))
    #->setBusStopCodeBackFrom($busStopTo->Code)
    #->setBusStopCodeBackTo($busStopFrom->Code)
    #->setDepartureBackDate((new \DateTime())->setDate(2014, 12, 20))
    ->setSearchInterval(3);
$response = $journeyService->search($journeySearchData);

//select first leg (trip)
foreach ($response->getData()->journeyCollection->ArrayOfLeg as $leg) {
    break;
}
//====================
//get templates of leg
//====================
if ($leg->FreePlaces == 0) {
    echo "bus fully booked"; exit();
}

$response = $journeyService->getTemplatesByLineId($leg->LineId);
$template = $response->getData()->printTemplateCollection->PrintTemplate[1];
$template = json_decode(json_encode($template), true);
#$template['NumberingType'] = 'Sequence';
```

#### Get Tariffs

[](#get-tariffs)

```
$journeyData = new \EurolinesClient\Data\Journey();
foreach ($leg as $fieldName => $value) {
    $method = sprintf('set%s', $fieldName);
    if ($value instanceof \stdClass) {
        $value = json_decode(json_encode($value), true);
    }
    $journeyData->$method($value);
}
$response = $journeyService->getTariff($journeyData);
```

### Ticket

[](#ticket)

#### Purchase

[](#purchase)

```
//get regular price for an adult
foreach ($response->getData()->priceCollection->Price as $price) {
    if ($price->TariffCode == 'EURv01') {
        break;
    }
}
//set price object
$priceData = new \EurolinesClient\Data\Price();
foreach ($price as $fieldName => $value) {
    $method = sprintf('set%s', $fieldName);
    if ($value instanceof \stdClass) {
        $value = json_decode(json_encode($value), true);
    }
    $priceData->$method($value);
}
//set passenger object
$passengerData1 = new \EurolinesClient\Data\Passenger();
$passengerData1->setFirstName('John');
$passengerData1->setLastName('Doe');
$passengerData1->setStreet('Chausseestrasse 123');
$passengerData1->setCity('Berlin');
$passengerData1->setCountry('Germany');
$passengerData1->setPhoneNumber('+491711234567');
$passengerData1->setZipCode('10001');
$passengerData1->setBirthDate('01/01/1990');
$passengerData1->setNote('');
$passengerData1->setPrice(0);
$passengerData1->setPassengerId(0);
$passengerData1->setEmail('asdf@asdfd.de');
$passengerData1->setTax(0);
$passengerData1->setPassport('asdf');

//set ticket object
$ticketData = new \EurolinesClient\Data\Ticket();
$ticketData->setTicketType(EurolinesClient\Data\Ticket::TICKET_TYPE_SELL);
$ticketData->setJourneyType(EurolinesClient\Data\JourneySearch::TYPE_ONE_WAY);
$ticketData->addJourney($journeyData);
$ticketData->addPassenger($passengerData1);
#$ticketData->addPassenger($passengerData2);
$ticketData->addPrice($priceData);
#$ticketData->addPrice($priceData);
$ticketData->setInvoiceNumber('');
//call purchase
$response = $ticketService->purchase($ticketData);
$sale = $response->getData()->Sale;
```

#### Get Ticket Number

[](#get-ticket-number)

```
foreach ($sale->Passengers as $passenger) {
    foreach ($passenger->Tickets as $ticket) {
        $response = $ticketService->saveTicketNumber($ticket->TicketId, $template); //for every passenger and every leg
        $ticketNumbers[] = $response->getData()->ticketNumber;
    }
}
```

#### Get Sale

[](#get-sale)

```
$response = $ticketService->getSale($sale->SaleId);
```

#### Get Print Data

[](#get-print-data)

```
$response = $ticketService->getPrintData($sale->SaleId);
```

#### Confirm Print

[](#confirm-print)

```
//$response = $ticketService->confirmPrint($sale->SaleId);
```

#### Cancel Tariffs

[](#cancel-tariffs)

```
$tariffs = [];
foreach ($ticketNumbers as $ticketNumber) {
    $tariffs[$ticket->TicketId]['tariffs'] = $ticketService->cancelTariffs($ticket->TicketId);
    $tariffs[$ticket->TicketId]['ticketNumber'] = $ticketNumber;
}
```

#### Cancel Ticket

[](#cancel-ticket)

```
foreach ($tariffs as $ticketId => $tariffCollection) {
    $tariff = $tariffCollection['tariffs']->getData()->priceCollection->Price[0];
    $ticketData = new \EurolinesClient\Data\Ticket();
    $ticketData->setReferenceNumber($ticketId); #$sale->SaleId);
    $ticketData->setTicketNumber($tariffCollection['ticketNumber']);
    $ticketData->setTariffId($tariff->TariffId);
    $ticketData->setCancelOnlyBackWay(false);
    $response = $ticketService->cancel($ticketData);
}
```

###  Health Score

20

—

LowBetter than 13% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/724117?v=4)[twiener](/maintainers/twiener)[@twiener](https://github.com/twiener)

---

Top Contributors

[![thomaswiener](https://avatars.githubusercontent.com/u/1860954?v=4)](https://github.com/thomaswiener "thomaswiener (28 commits)")

### Embed Badge

![Health badge](/badges/thomaswiener-client-eurolines/health.svg)

```
[![Health](https://phpackages.com/badges/thomaswiener-client-eurolines/health.svg)](https://phpackages.com/packages/thomaswiener-client-eurolines)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k15](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
