/
Pobranie listy zamówień

Pobranie listy zamówień

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

 

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.

W danej metodzie wymagamy implementacji wszystkich pól wymienionych w tabeli, ponieważ składają się na całość usługi InPost Pay. Część poniższych pól w kolumnie 'Wymagalność' jest oznaczona jako 'O' tj. opcjonalna ze względu na to, że nie wszystkie produkty/koszyki w sklepach internetowych mają przypisane wszystkie parametry, więc koszyk może zostać utworzony, a zamówienie złożone bez nich. Jednak implementacja/wdrożenie wszystkich pól jest biznesowo WYMAGANE.

Parameters 

Nazwa pola 

Opis  

Typ 

Wymagalność 

Dodatkowe uwagi 

page_index 

Indeks stron 

string 

  

page_size 

Rozmiar strony 

string 

  

order_id

Identyfikator zamówienia

string

O

 

  

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.customer_order_id

Identyfikator zamówienia prezentowany klientowi oraz wykorzystywany do płatności. W przypadku braku wykorzystywany jest order_id.

string

O

"customer_order_id":"3433d1b7”

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.order_discount

Wartość zastosowanych kodów rabatowych na zamówieniu

number($decimal) 

"order_discount": 20.2

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, DIGITAL ].  

APM – paczkomat, COURIER – kurier Inpost 
DIGITAL – dostawa cyfrowa

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.digital_delivery_email

Adres email na jaki ma być wysłany produkt cyfrowy

string

O

"digital_delivery_email":"jankowalski@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.product_type

Pole nieobligatoryjne określające typ produktu. Przyjmuje wartość:

  • PRODUCT - produkt fizyczny

  • DIGITAL  - produkt cyfrowy.

Jeśli wartość jest null, to aplikacja domyślenie przyjmuje, że produkt jest fizyczny.

string

O

"product_type":"DIGITAL"

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.additional_product_images

Obiekt do przekazania dodatkowych zdjęć produktu (lista). Maksymalna ilość zdjęć to 10 (10 obiektów { "normal_size": "string", "small_size": "string" } )

object

O

-

orders.products.additional_product_images.small_size

Zdjęcie produktu. Preferowany rozmiar 360 x 352

string

Y

-

orders.products.additional_product_images.normal_size

Zdjęcie produktu. Preferowany rozmiar 360 x 504

string

Y

-

orders.products.base_price 

Cena produktu uwzględniająca zastosowane rabaty i kody promocyjne na produkcie 

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

GET /v1/izi/orders

Przykładowy response

{ "orders": [ { "order_details": { "order_id": "c5bea8ea-4444-4aaa-9ccf-12345678", "pos_id": "V123", "order_creation_date": "2023-10-19T07:18:27.000Z", "order_update_date": "2023-10-19T08:37:23.313Z", "payment": { "payment_type": "BLIK_CODE", "payment_status": "AUTHORIZED", "payment_details": { "payment_reference": "1234_6e8d5ee2-26eb-4953-bb68-12344567", "payment_type": "BLIK_CODE", "payment_status": "AUTHORIZED", "sdk_payment_status": "PENDING", "payment_id": "1234567-3894-2222-3333-d9cad00781b4", "payment_code": "00", "payment_description": "APPROVED", "payment_date": "2023-10-19T05:18:42.202Z", "base_transaction_amount": { "amount": 35.9, "currency": "PLN" } }, "available_payment_types": [ "CARD", "BLIK_CODE", "BLIK_TOKEN", "PAY_BY_LINK", "SHOPPING_LIMIT", "DEFERRED_PAYMENT" ] }, "order_status": "ORDER_REJECTED", "order_merchant_status_description": "Anulowano", "order_base_price": { "net": 19.52, "gross": 24.01, "vat": 4.49 }, "order_final_price": { "net": 29.19, "gross": 35.9, "vat": 6.71 }, "currency": "PLN", "delivery_references_list": [] }, "account_info": { "name": "<secret>", "surname": "<secret>", "phone_number": { "country_prefix": "+48", "phone": "600000000" }, "mail": "jan.kowalski@o...l", "client_address": { "country_code": "pl", "city": "Warszawa", "address": "Warszawska 3,4", "postal_code": "00-000" } }, "delivery": { "delivery_type": "APM", "delivery_date": "2023-10-21T07:18:27.000Z", "mail": "<secret>", "phone_number": { "country_prefix": "+48", "phone": "600000000" }, "delivery_point": "WAW73M", "delivery_price": { "net": 9.67, "gross": 11.89, "vat": 2.22 } }, "products": [ { "product_id": "12345", "ean": "1234567890", "product_name": "Zestaw balonów", "product_link": "https://zestaw-balonow-urodzinowych", "product_image": "https://zestaw-balonow-urodzinowych-granatowo-czarny.jpg", "base_price": { "net": 19.52, "gross": 31.01, "vat": 4.49 }, "quantity": { "quantity": 1, "quantity_type": "INTEGER", "quantity_unit": "szt." } } ], "consents": [ { "consent_id": "7", "consent_version": "2023-06-06", "is_accepted": true }, { "consent_id": "3", "consent_version": "2018-06-07", "is_accepted": true }, { "consent_id": "2", "consent_version": "2018-06-07", "is_accepted": true }, { "consent_id": "4", "consent_version": "2018-06-07", "is_accepted": false } ] }, { "order_details": { "order_id": "123456-36ca-4731-a945-1234567890", "pos_id": "V123456789", "order_creation_date": "2023-10-19T07:30:46.000Z", "order_update_date": "2023-10-19T07:56:45.748Z", "payment": { "payment_type": "CASH_ON_DELIVERY", "payment_status": "COD" }, "order_status": "ORDER_REJECTED", "order_merchant_status_description": "Anulowano", "order_base_price": { "net": 1.45, "gross": 1.78, "vat": 0.33 }, "order_final_price": { "net": 13.08, "gross": 16.08, "vat": 3 }, "currency": "PLN", "delivery_references_list": [] }, "account_info": { "name": "Jan", "surname": "Kwiatkowski", "phone_number": { "country_prefix": "+48", "phone": "000000000" }, "mail": "j.kwiat@o...l", "client_address": { "country_code": "pl", "city": "Warszawa", "address": "Jana Pawła 33", "postal_code": "00-001" } }, "delivery": { "delivery_type": "APM", "delivery_date": "2023-10-21T07:30:46.000Z", "mail": "<secret>", "phone_number": { "country_prefix": "+48", "phone": "000000000" }, "delivery_point": "BPO02A", "delivery_price": { "net": 9.67, "gross": 11.89, "vat": 2.22 } }, "products": [ { "product_id": "3456", "ean": "12345678986", "product_name": "Magiczna gąbka", "product_link": "https://magiczna-gabka", "product_image": "https://magiczna-gabka.png", "base_price": { "net": 1.45, "gross": 1.78, "vat": 0.33 }, "quantity": { "quantity": 1, "quantity_type": "INTEGER", "quantity_unit": "szt." } } ], "consents": [ { "consent_id": "7", "consent_version": "2023-06-06", "is_accepted": true }, { "consent_id": "3", "consent_version": "2018-06-07", "is_accepted": true }, { "consent_id": "2", "consent_version": "2018-06-07", "is_accepted": true }, { "consent_id": "4", "consent_version": "2018-06-07", "is_accepted": false } ] } ], "page_size": 10, "total_items": 2, "page_index": 0 }

Przykład implementacji w PHP

  • Podanie kodu -

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

/** * 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.


 

 

Related content

Pobranie listy koszyków
Pobranie listy koszyków
More like this
Aktualizacja lub dodanie koszyka
Aktualizacja lub dodanie koszyka
More like this
Potwierdzenie powiązania koszyka
Potwierdzenie powiązania koszyka
More like this
Usuwanie powiązania koszyka
Usuwanie powiązania koszyka
More like this
Pobranie szczegółów zamówienia
Pobranie szczegółów zamówienia
More like this
Lista transakcji
Lista transakcji
Read with this