Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Artykuł zawiera opis metody zwracającej informacje o zamówienia utworzonych w aplikacji InPost wraz z przykładem implementacji metody w języku PHP.

Na tej stronie:

Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
printablefalse

Opis metody

Metoda zwracająca informacje o zamówieniach utworzonych w aplikacji InPost Pay. Metoda nie wykorzystywana w procesie wiązania i obsługi koszyków/zamówień przez klienta.

Status
colourBlue
titleGET
/v1/izi/orders

Parameters 

Nazwa pola 

Opis  

Typ 

Wymagalność 

Dodatkowe uwagi 

page_index 

Indeks stron 

string 

  

page_size 

Rozmiar strony 

string 

  

  

Request – brak 

Response

Nazwa pola 

Opis  

Typ 

Wymagalność 

Dodatkowe uwagi 

page_size

Rozmiar strony 

integer 

"page_size":1

total_items

Całkowita liczba pozycji 

integer 

"total_items":159

page_index

Indeks stron 

integer 

"page_index":1

orders

Obiekt zwracający listę zamówień  

object 

orders.order_details 

Szczegóły zamówienia 

object 

orders.order_details.order_comments

Uwagi o zmówieniu 

string 

"comments ":"Zamówienie przetwarzane"

orders.order_details.order_id

Identyfikator zmówienia nadawany przez Merchanta 

string 

"order_id":"3433d1b7-fd9b-484b-aa68-80fccc575407"

orders.order_details.pos_id

POS id 

string 

"pos_id":"000000000"

orders.order_details.order_creation_date 

Data utworzenia zamówienia 

string($date-time) 

"order_creation_date":"2023-09-07T14:18:41.949Z" 

orders.order_details.order_update_date 

Ostatnia data aktualizacji zamówienia 

string($date-time) 

"order_update_date":"2023-09-07T14:23:54.190Z" 

orders.order_details.payment

Obiekt zwracający informacje o płatności 

object 

orders.order_details.payment.payment_type

Wybrany typ płatności. Enum: 

[ CARD, CARD_TOKEN, GOOGLE_PAY, APPLE_PAY, BLIK_CODE, BLIK_TOKEN, PAY_BY_LINK, SHOPPING_LIMIT, DEFERRED_PAYMENT, CASH_ON_DELIVERY ] 

string 

"payment_type":"BLIK_CODE"

orders.order_details.payment.payment_status

Status płatności 

Enum:[ UNPAID, STARTED, PENDING, AUTHORIZED, DECLINED, CANCELLED, ERROR, COD ] 

string 

"payment_status":"AUTHORIZED"

orders.order_details.payment.available_payment_types

Dostępne typy płatności dla danego zamówienia.  

Lista z możliwymi wartościami : [ CARD, CARD_TOKEN, GOOGLE_PAY, APPLE_PAY, BLIK_CODE, BLIK_TOKEN, PAY_BY_LINK, SHOPPING_LIMIT, DEFERRED_PAYMENT, CASH_ON_DELIVERY ] 

  

array 

"available_payment_types":["BLIK_CODE","BLIK_TOKEN","PAY_BY_LINK"]

orders.order_details.payment.payment_details

Szczegóły płatności 

object 

orders.order_details.payment.payment_details.payment_reference

Numer referencyjny 

string 

"payment_reference":"52428_9b642ee3-ff3d-4fae-8ff8-30e29c0dafac" 

orders.order_details.payment.payment_details.payment_id 

Id płatność 

string 

"payment_id":"3cb4967d-4b63-4c5c-84bc-54e699a2dca0" 

orders.order_details.payment.payment_details.payment_sec_token 

Wykorzystany token zabezpieczający  

string 

"payment_sec_token":"eyJraWQiOiIyMDRjY2U0OC1iYTFkLTQ0ODYtOTNlNy1kY..." 

orders.order_details.payment.payment_details.payment.payment_type 

Typ płatności 

string 

"payment_type":"BLIK_TOKEN" 

orders.order_details.payment.payment_details.payment_token 

Token karty 

string 

"payment_token":"gr...ki@it...om"

orders.order_details.payment.payment_details.payment_card 

Informacje o karcie 

object 

orders.order_details.payment.payment_details.payment_card.last_four_digits 

Ostatnie 4 cyfry karty 

string 

"last_four_digits":"0021"

orders.order_details.payment.payment_details.payment_card.scheme 

Schemat, w którym działa karta 

string 

"scheme":"https://static.payu.com/images/mobile/logos/pbl_c.png" 

orders.order_details.payment.payment_details.payment_card.card_type 

Typ kart [ DEBIT, CREDIT, PREPAID, CHARGE, DEFERRED_DEBIT ] 

string 

"card_type":" DEBIT"

orders.order_details.payment.payment_details.payment_status 

Status płatności 

string 

"payment_status":"AUTHORIZED"

orders.order_details.payment.payment_details.payment_code 

Kod płatności 

string 

"payment_code":"00"

orders.order_details.payment.payment_details.payment_description 

Dodatkowa informacja o płatności 

string 

"payment_description":"APPROVED"

orders.order_details.payment.payment_details.payment_error_code 

Kod błędu 

string 

"payment_error_code":"test" 

orders.order_details.payment.payment_details.payment_message_code 

Wiadomość o płatności (kod) 

string 

"payment_message_code":"userCancelled" 

orders.order_details.payment.payment_details.payment_date 

Data transakcji 

string($date-time) 

"payment_date":"2023-08-02T09:48:12.302Z" 

orders.order_details.order_status 

Status techniczny - służy do określenia uprawnień, jakie może wykonać klient na zamówieniu w aplikacji InPost Pay. 

Wyróżniamy 3 statusy techniczne: 

  

ORDER_COMPLETED - status nadawany przez Merchanta, informujący aplikacje InPost Pay, że zamówienie zostało sfinalizowane przez klienta na stronie sklepu Merchanta.

ORDER_REJECTED - status oznacza odrzucenie zamówienia. 

ORDER_PROCESSING - zamówienie w trakcie realizacji 

string 

"order_status":"ORDER_COMPLETED"

orders.order_details.order_merchant_status_description 

Status opisowy prezentowany klientowi w aplikacji InPost Pay - każdy Merchant może przekazać status tak, aby statusy prezentowane w InPost Mobile były zgodne ze statusem prezentowanymi klientowi w sklepie Merchanta. 

string 

"order_merchant_status_description":"W trakcie realizacji"

orders.order_details.order_base_price 

Cena za zamówienie bez kosztów dostawy 

object 

orders.order_details.order_base_price.net 

Netto 

number($decimal) 

"order_base_price":{"net":202.51,"gross":263.0,"vat":60.49},

orders.order_details.order_base_price.gross 

Brutto 

number($decimal) 

orders.order_details.order_base_price.vat 

VAT 

number($decimal) 

orders.order_details.order_final_price 

Cena za zamówienie z uwzględnieniem kosztów dostawy 

object 

orders.order_details.order_final_price.net 

Netto 

number($decimal) 

"order_final_price":{"net":208.2,"gross":270.0,"vat":61.8}

orders.order_details.order_final_price.gross 

Brutto 

number($decimal) 

orders.order_details.order_final_price.vat 

VAT 

number($decimal) 

orders.order_details.currency 

Waluta zamówienia (obecnie tylko PLN) 

string 

"currency":"PLN"

orders.order_details.delivery_references_list 

Lista nadanych numerów przesyłek zamówienia 

array 

"delivery_references_list":[12345678]

orders.account_info 

Informacje o koncie użytkowania 

object 

orders.account_info.name 

Imię  

string 

"account_info":{"name":"Jan","surname":"Kowalski","phone_number":{"country_prefix":"+48","phone":"600000000"}

orders.account_info.surname 

Nazwisko 

string 

orders.account_info.phone_number 

Numer telefonu 

object 

orders.account_info.phone_number.country_prefix 

Prefix 

string 

orders.account_info.phone_number.phone 

Numer telefonu użytkownika 

string 

orders.account_info.mail 

Mail 

string 

"mail":"test@g....m"

orders.account_info.client_address 

Adres użytkownika 

object 

orders.account_info.client_address.country_code 

Kod kraju 

string 

"client_address":{"country_code":"PL","city":"Test","address":"Testowa 3/9 Testowa 3 ","postal_code":"00-000"}

orders.account_info.client_address.address 

Adres 

string 

orders.account_info.client_address.city 

Miasto 

string 

orders.account_info.client_address.postal_code 

Kod pocztowy 

string 

orders.invoice_details 

Dane do faktury 

object 

orders.invoice_details.legal_form 

Forma prawna [ PERSON, COMPANY ] 

string 

"invoice_details":{"legal_form":"COMPANY","country_code":"PL","tax_id":"0000000000","company_name":TEST","city":"Warszawa","street":"ul. Testowa","building":"10A","postal_code":"01-997","mail":"test@m...l","registration_data_edited":"true"}

orders.invoice_details.country_code 

Kod kraju 

string 

orders.invoice_details.tax_id_prefix 

Id prefix 

string 

orders.invoice_details.tax_id 

Identyfikator podatkowy 

string 

orders.invoice_details.company_name 

Nazwa firmy 

string 

orders.invoice_details.name 

Imię 

string 

orders.invoice_details.surname 

Nazwisko 

string 

orders.invoice_details.city 

Miasto 

string 

orders.invoice_details.street 

Ulica 

string 

orders.invoice_details.building 

Numer budynku 

string 

orders.invoice_details.flat 

Numer mieszkania 

string 

orders.invoice_details.postal_code 

Kod pocztowy 

string 

orders.invoice_details.mail 

Mail 

string 

orders.invoice_details.registration_data_edited 

Data rejestracji 

string 

orders.invoice_details.additional_information 

Dodatkowe informacje 

string 

orders.delivery 

Informacje o dostawie 

object 

orders.delivery.delivery_type 

Forma dostawy Enum: 

[ APM, COURIER ] 

string 

"delivery_type":"COURIER"

orders.delivery.delivery_date 

Data dostawy  

string($date-time) 

"delivery_date":"2023-09-10T12:00:00.000Z"

orders.delivery.delivery_options 

Wybrane opcje dostawy 

array 

orders.delivery.delivery_options.delivery_name 

Nazwa  

string 

"delivery_options":[{"delivery_name":"Paczka w Weekend","delivery_code_value":"PWW","delivery_option_price":{"net":5,"gross":"6.15","vat":"1.15"}}]

orders.delivery.delivery_options.delivery_code_value 

Kod opcji 

string 

orders.delivery.delivery_options.delivery_option_price 

Kwota opcji odstawy 

object 

orders.delivery.delivery_options.delivery_option_price.net 

Netto 

number($decimal) 

orders.delivery.delivery_options.delivery_option_price.gross 

Brutto 

number($decimal) 

orders.delivery.delivery_options.delivery_option_price.vat 

VAT 

number($decimal) 

orders.delivery.mail 

Mail 

string 

"mail":"test@g..m" 

orders.delivery.phone_number 

Numer telefonu  

object 

orders.delivery.phone_number.country_prefix 

Prefix 

string 

"phone_number":{"country_prefix":"+48","phone":"600000000"}

orders.delivery.phone_number.phone 

Numer  

string 

orders.delivery.delivery_point 

Punkt dostawy paczkomatu 

string 

"delivery_point":"RSL218"

orders.delivery.delivery_address 

Adres dostawy 

object 

orders.delivery.delivery_address.name 

Nazwa 

string 

"delivery_address":{"name":"Jan Kowalski","country_code":"PL","address":"Testowa 3 ","city":"Test","postal_code":"00-000"}

orders.delivery.delivery_address.country_code 

Kod kraju 

string 

orders.delivery.delivery_address.address 

Adres 

string 

orders.delivery.delivery_address.city 

Miasto 

string 

orders.delivery.delivery_address.postal_code 

Kod pocztowy 

string 

orders.delivery.delivery_price 

Obiekt służący do przekazania informacji o koszcie dostawy  

object 

orders.delivery.delivery_price.net 

Cena netto 

number ($decimal)(10,2) 

"delivery_price":{"net":"10.00","gross":"12.30","vat":"2.30"}

orders.delivery.delivery_price.gross 

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

orders.delivery.delivery_price.vat 

VAT 

number ($decimal)(10,2) 

orders.delivery.courier_note 

Uwagi dla kuriera 

string 

" courier_note ":"Proszę o przekazanie przesyłki po godzinie 16"

orders.products 

Lista produktach w zamówieniu 

array 

orders.products.product_id 

Identyfikator produktu nadany przez Merchanta 

string 

"product_id":26

orders.products.product_category 

Kategoria produktu nadana przez Merchanta 

string 

"product_category":20

orders.products.ean 

Ean 

string 

"ean":"0"

orders.products.product_name 

Nazwa produktu  

string 

"product_name":"Plecak washpapa"

orders.products.product_description 

Opis produktu 

string 

"product_description":" \r\n\r\nCzasem masz ochotę rzucić wszystko, spakować się i wyjechać w Bieszczady? Jest to dobry plan na wakacje. A w ciągu roku po prostu odkrywaj swoje miasto na nowo.\r\n\r\nUdana eksploracja nie obędzie się bez solidnego plecaka ze zwijanym zamknięciem i uszytego z wysokiej jakości materiałów, takiego jak nasz.\r\n\r\nBawełniane pasy zapewnią wygodę noszenia, a washpapa wyrazi Twoje przywiązanie do natury. Pamiętaj! Za każdą przygodą stoi dobry plecak."

orders.products.product_link 

Link do produktu na stronie Merchanta 

string 

"product_link":"https://test.outofthebox.pl/product/plecak-washpapa/"

orders.products.product_image 

Link do zdjęcia produktu. Preferowane format: png, jpg (rekomendacja: png bez tła) 

 

string 

"product_image":"https://test.outofthebox.pl/img/2022/10/INPOST_aranzacje-z-modelami25-1.jpg"

orders.products.base_price 

Cena podstawowa z produkt 

object 

orders.products.base_price.net 

Cena netto 

number ($decimal)(10,2) 

 

"base_price":{"net":"161.79","gross":"199.00","vat":"37.21"}

orders.products.base_price.gross 

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

orders.products.base_price.vat 

VAT 

number ($decimal)(10,2) 

orders.products.lowest_price 

Obiekt służący do przekazania najniższej ceny produktu z ostatnich 30 dni. Wymagane w celu obsłużenia dyrektywy Omibus 

object 

orders.products.lowest_price.net 

Cena netto 

number ($decimal)(10,2) 

 

"lowest_price ":{"net":"160.98","gross":"198.00","vat":"37.02"}

orders.products.lowest_price.gross 

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

 

orders.products.lowest_price.vat 

VAT 

number ($decimal)(10,2) 

 

orders.products.quantity 

Obiekt do przekazania informacji o ilości produktu 

object 

orders.products.quantity.quantity 

Ilość produktu 

number ($decimal) 

"quantity":1

orders.products.quantity.quantity_type 

Typ pola quantity. Dostępne wartości: [DECIMAL, INTEGER ] 

 

string 

"quantity_type":"INTEGER"

orders.products.quantity.quantity_unit 

Jednostka ilości produktu 

string 

"quantity_unit":"pcs"

orders.products.product_attributes 

Obiekt służący do określenia atrybutów produktu 

array 

orders.products.product_attributes.attribute_name

Nazwa atrybutu 

string 

"product_attributes":[{"attribute_name":"Wymiary/Pojemność","attribute_value":"54 cm x 38 cm x 10 cm"},{"attribute_name":"Materiał","attribute_value":"Washable paper standard + kodura + pasy bawełniane tkane"}]

orders.products.product_attributes.attribute_value

Wartość atrybutu 

string 

orders.products.variants

Obiekt służący do przekazania wariantów produktów. Obiekt obecnie nie wykorzystywany. Funkcjonalność będzie wdrażana w kolejnych wersjach aplikacji. 

object 

orders.products.variants.variant_id 

Id wariantu 

string 

orders.products.variants.variant_name 

Nazwa wariantu 

string 

orders.products.variants.variant_description 

Opis szczegółowy wariantu 

string 

orders.products.variants.variant_type 

Typ wariantu 

string 

orders.products.variants.variant_values 

Wartość wariantu 

string 

orders.consents 

Obiekt służący do przekazania informacji o wyrażonych zgodach przez klienta dla danego zamówienia 

array 

orders.consents.consent_id 

Id zgody  

string 

"consent_id":3

orders.consents.consent_version 

Wersja zgody 

string 

"consent_version":1

orders.consents.is_accepted 

Informacja czy została wyrażona zgoda 

boolean 

"is_accepted": true

Status
colourBlue
titleGET
/v1/izi/orders

Przykład implementacji w języku PHP

  • Podanie kodu -

    View file
    nameimplementacjaKlienta.txt

Info

W pliku implementacjaKlienta.txt została dodana tylko funkcja getOrders.

Code Block
languagephp
/**
 * Client symfony implementation used for communication between Merchant and InPost Pay application.
 *
 * @param InpostPayBearerServiceInterface $inpostPayBearerService <p> Bearer service interface,
 * with contains creating bearer token which is required for communication with Inpost Pay </p>
 *
 */
final class InpostPayClient implements InpostPayClientInterface
{
    private ClientInterface $client;
    private InpostPayURLCreatorInterface $URLCreator;
    private InpostPayBearerServiceInterface $bearerService;

    public function __construct(
        ClientInterface $client,
        InpostPayURLCreatorInterface $URLCreator,
        InpostPayBearerServiceInterface $bearerService
    ) {
        $this->client = $client;
        $this->URLCreator = $URLCreator;
        $this->bearerService = $bearerService;
    }
    
    public function getBaskets(int $pageIndex = null, int $pageSize = null): BasketsResponse
    {
        $path = 'baskets';
        $uri = (new Uri($this->buildUri($path)))
            ->withQuery(Psr7\Query::build(['page_index' => $pageIndex, 'page_size' => $pageSize]));
        $request = new Request(
            'GET',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $content = $response->getBody()->getContents();
            /**
             * @var BasketsResponseArray $data
             */
            $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

            return BasketsResponse::fromArray($data);
        } catch (\Throwable $throwable) {
            throw InpostPayGetBasketsException::createResponseException($throwable);
        }
    }    
    
    public function getBasketBinding(string $basketId, string $browserId = null): BindingBasket
    {
        $path = sprintf('basket/%s/binding', $basketId);
        $uri = (new Uri($this->buildUri($path)))
            ->withQuery(Psr7\Query::build(['browser_id' => $browserId]));
        $request = new Request(
            'GET',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $content = $response->getBody()->getContents();
            /**
             * @var BindingBasketArray $data
             */
            $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

            return BindingBasket::fromArray($data);
        } catch (\Throwable $throwable) {
            throw InpostPayGetBasketBindingException::createResponseException($throwable);
        }
    }
    
    public function postBasketBinding(string $basketId, BasketBindingRequest $requestBody): ?QrCodeData
    {
        if (BindingMethod::PHONE()->equals($requestBody->getBindingMethod()) && !$requestBody->getPhoneNumber()) {
            throw InpostPayPostBasketBindingException::createNoPhoneForPhoneBindingMethodException();
        }

        $path = sprintf('basket/%s/binding', $basketId);
        $uri = new Uri($this->buildUri($path));
        /** @var string $body */
        $body = json_encode($requestBody);
        $request = new Request(
            'POST',
            $uri,
            $this->provideDefaultClientHeaders(),
            $body
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();

            if (HttpResponseStatus::ACCEPTED()->getValue() === $statusCode) {
                return null;
            }

            if (HttpResponseStatus::OK()->getValue() === $statusCode) {
                /**
                 * @var QrCodeDataArray $data
                 */
                $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

                return QrCodeData::fromArray($data);
            }
        } catch (\Throwable $throwable) {
            throw InpostPayPostBasketBindingException::createResponseException($throwable);
        }

        throw InpostPayPostBasketBindingException::createBadStatusCodeException($statusCode, $content);
    }
    
    public function putBasket(string $basketId, Basket $basket): InpostBasketId
    {
        $path = sprintf('basket/%s', $basketId);
        $uri = new Uri($this->buildUri($path));
        /** @var string $body */
        $body = json_encode($basket);
        $request = new Request(
            'PUT',
            $uri,
            $this->provideDefaultClientHeaders(),
            $body
        );

        try {
            $response = $this->client->sendRequest($request);
            $content = $response->getBody()->getContents();
            /**
             * @var array{inpost_basket_id: string} $responseData
             */
            $responseData = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

            return InpostBasketId::fromArray($responseData);
        } catch (\Throwable $throwable) {
            throw InpostPayPutBasketException::createResponseException($throwable);
        }
    }

    public function deleteBasketBinding(string $basketId, bool $ifBasketRealized = null): void
    {
        $path = sprintf('basket/%s/binding', $basketId);
        $uri = (new Uri($this->buildUri($path)))
            ->withQuery(Psr7\Query::build(['if_basket_realized' => $ifBasketRealized]));
        $request = new Request(
            'DELETE',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();
        } catch (\Throwable $throwable) {
            throw InpostPayDeleteBasketBindingException::createResponseException($throwable);
        }

        if (HttpResponseStatus::NO_CONTENT()->getValue() === $statusCode) {
            return;
        }
        throw InpostPayDeleteBasketBindingException::createBadStatusCodeException($statusCode, $content);
    }
    
    public function deleteBrowserBinding(string $browserId): void
    {
        $path = sprintf('browser/%s/binding', $browserId);
        $uri = new Uri($this->buildUri($path));
        $request = new Request(
            'DELETE',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();
        } catch (\Throwable $throwable) {
            throw InpostPayDeleteBrowserBindingException::createResponseException($throwable);
        }

        if (HttpResponseStatus::NO_CONTENT()->getValue() === $statusCode) {
            return;
        }
        throw InpostPayDeleteBrowserBindingException::createBadStatusCodeException($statusCode, $content);
    }
    
    public function getSigningKey(string $version): SigningKeyResponse
    {
        $path = sprintf('signing-keys/public/%s', $version);
        $uri = new Uri($this->buildUri($path));
        $request = new Request(
            'GET',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();

            if (HttpResponseStatus::OK()->getValue() === $statusCode) {
                /**
                 * @var SigningKeyResponseArray $data
                 */
                $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

                return SigningKeyResponse::fromArray($data);
            }
        } catch (\Throwable $throwable) {
            throw InpostPayGetSigningKeyException::createResponseException($throwable);
        }

        throw InpostPayGetSigningKeyException::createBadStatusCodeException($statusCode, $content);
    }
    
    public function getSigningKeys(): SigningKeysResponse
    {
        $path = 'signing-keys/public';
        $uri = new Uri($this->buildUri($path));
        $request = new Request(
            'GET',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();

            if (HttpResponseStatus::OK()->getValue() === $statusCode) {
                /**
                 * @var SigningKeysResponseArray $data
                 */
                $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

                return SigningKeysResponse::fromArray($data);
            }
        } catch (\Throwable $throwable) {
            throw InpostPayGetSigningKeysException::createResponseException($throwable);
        }
        throw InpostPayGetSigningKeysException::createBadStatusCodeException($statusCode, $content);
    }

    /**
     * @return array{
     *     Authorization: string,
     *     Content-Type: string
     * }
     *
     * @throws InpostPayEndpointException
     */
    private function provideDefaultClientHeaders(): array
    {
        return [
                'Authorization' => sprintf('Bearer %s', $this->bearerService->getBearerToken()),
                'Content-Type' => 'application/json',
        ];
    }

    private function buildUri(string $path): string
    {
        return sprintf(
            '%s%s',
            $this->URLCreator->create()->getUrl(),
            $path
        );
    }
    
    public function postOrderEvent(string $orderId, OrderEventRequest $orderEventRequest): void
    {
        $path = sprintf('order/%s/event', $orderId);
        $uri = new Uri($this->buildUri($path));
        /** @var string $body */
        $body = json_encode($orderEventRequest);
        $request = new Request(
            'POST',
            $uri,
            $this->provideDefaultClientHeaders(),
            $body
        );

        try {
            $response = $this->client->sendRequest($request);
            $statusCode = $response->getStatusCode();
            $content = $response->getBody()->getContents();
        } catch (\Throwable $throwable) {
            throw InpostPayPostOrderEventException::createResponseException($throwable);
        }

        if (HttpResponseStatus::CREATED()->getValue() === $statusCode) {
            return;
        }

        throw InpostPayPostOrderEventException::createBadStatusCodeException($statusCode, $content);
    }
    
    public function getOrders(int $pageIndex = null, int $pageSize = null): OrdersResponse
    {
        $path = 'orders';
        $uri = (new Uri($this->buildUri($path)))
            ->withQuery(Psr7\Query::build(['page_index' => $pageIndex, 'page_size' => $pageSize]));
        $request = new Request(
            'GET',
            $uri,
            $this->provideDefaultClientHeaders()
        );

        try {
            $response = $this->client->sendRequest($request);
            $content = $response->getBody()->getContents();
            /**
             * @var OrdersResponseArray $data
             */
            $data = json_decode($content, true, 512, JSON_THROW_ON_ERROR);

            return OrdersResponse::fromArray($data);
        } catch (\Throwable $throwable) {
            throw InpostPayGetOrdersException::createResponseException($throwable);
        }
    }
}
  • W SDK.zip zawiera się kod zawierający obiekt requestu oraz response endpointu.

View file
nameSDK.zip