# Szybki start

Najszybsza droga do pierwszej przesyłki prowadzi przez oficjalne
[SDK PHP](/pl/sdk). Integrujesz z innego języka? Skorzystaj z
[podpisywania żądań (HMAC)](/pl/legacy/hmac-signing) i
[przykładów cURL](/pl/legacy/implementation-examples) — przepływ poniżej
jest ten sam.

## 1. Uzyskaj dane dostępowe API

Zaloguj się do [panelu Apaczka](https://panel.apaczka.pl) i utwórz aplikację
API w sekcji **Ustawienia → API**. Otrzymasz `app_id` oraz `app_secret` —
sekret trzymaj po stronie serwera.

## 2. Zainstaluj SDK

```bash
composer require alsendo/alsendo-one-sdk guzzlehttp/guzzle guzzlehttp/psr7
```

## 3. Wybierz usługę

Pobierz listę usług przewoźników dostępnych na Twoim koncie —
[nie hardkoduj ich](/pl/guides/best-practices#nie-hardkoduj-przewoźników-i-usług):

```php
<?php
require __DIR__ . '/vendor/autoload.php';

use AlsendoOne\SDK\AlsendoClient;

$client = new AlsendoClient('your_app_id', 'your_app_secret');

foreach ($client->getServiceStructure()->getServices() as $service) {
    echo $service['service_id'] . ': ' . $service['name'] . PHP_EOL;
}
```

## 4. Wyceń i utwórz zamówienie

```php
use AlsendoOne\SDK\DTO\Address;
use AlsendoOne\SDK\DTO\Request\OrderRequest;
use AlsendoOne\SDK\DTO\Request\PickupRequest;
use AlsendoOne\SDK\DTO\Request\ShipmentRequest;
use AlsendoOne\SDK\Type\Service;

$order = OrderRequest::create()
    ->setService(Service::from(Service::DpdCourier)) // z kroku 3
    ->setSenderAddress(new Address(
        'Firma Sp. z o.o.', 'Jan Kowalski', 'jan@example.com', '500100200',
        'Marszalkowska 1/10', null, '00-001', 'Warszawa', 'PL'
    ))
    ->setReceiverAddress(new Address(
        'Anna Nowak', null, 'anna@example.com', '600300400',
        'Dluga 15', null, '80-831', 'Gdansk', 'PL'
    ))
    ->addShipment(new ShipmentRequest('PACZKA', 2.5, 40, 30, 20)) // kg, cm
    ->setPickup(new PickupRequest('COURIER', date('Y-m-d', strtotime('+1 day')), '10:00', '16:00'));

// Najpierw wycena — ceny wracają w groszach (1 PLN = 100 gr)
$valuation = $client->getValuation($order);

// Utworzenie zamówienia
$created = $client->sendOrder($order);

echo 'Zamówienie ' . $created->getId() . ', list przewozowy ' . $created->getWaybillNumber();
```

## 5. Pobierz etykietę

```php
$waybill = $client->getWaybill($created->getId());

file_put_contents('label.pdf', base64_decode($waybill->getWaybill()));
```

Gotowe — przesyłka zamówiona, etykieta na dysku.

## Kolejne kroki

- Pełny przepływ z dokumentami i anulowaniem:
  [Cykl życia zamówienia](/pl/guides/order-lifecycle)
- Odbiór kurierski vs. nadanie w punkcie: [Typy odbioru](/pl/guides/pickups)
- Aktualizacje statusów: [Śledzenie przesyłek](/pl/guides/tracking)
- Przed startem produkcyjnym pracuj na [sandboksie](/pl/guides/testing) i
  przeczytaj [dobre praktyki](/pl/guides/best-practices)
