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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
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 | ||||
---|---|---|---|---|
|
/v1/izi/orders
Parameters
Nazwa pola | Opis | Typ | Wymagalność | Dodatkowe uwagi |
| Indeks stron | string | O |
|
| Rozmiar strony | string | O |
|
Request – brak
Response
Nazwa pola | Opis | Typ | Wymagalność | Dodatkowe uwagi |
| Rozmiar strony | integer | O |
|
| Całkowita liczba pozycji | integer | O |
|
| Indeks stron | integer | O |
|
| Obiekt zwracający listę zamówień | object | O | |
| Szczegóły zamówienia | object | Y | |
| Uwagi o zmówieniu | string | O |
|
| Identyfikator zmówienia nadawany przez Merchanta | string | Y |
|
| POS id | string | Y |
|
| Data utworzenia zamówienia | string($date-time) | Y |
|
| Ostatnia data aktualizacji zamówienia | string($date-time) | O |
|
| Obiekt zwracający informacje o płatności | object | O | |
| 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 | Y |
|
| Status płatności Enum:[ UNPAID, STARTED, PENDING, AUTHORIZED, DECLINED, CANCELLED, ERROR, COD ] | string | Y |
|
| 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 | O |
|
| Szczegóły płatności | object | O | |
| Numer referencyjny | string | Y |
|
| Id płatność | string | O |
|
| Wykorzystany token zabezpieczający | string | O |
|
| Typ płatności | string | Y |
|
| Token karty | string | O |
|
| Informacje o karcie | object | O | |
| Ostatnie 4 cyfry karty | string | O |
|
| Schemat, w którym działa karta | string | O |
|
| Typ kart [ DEBIT, CREDIT, PREPAID, CHARGE, DEFERRED_DEBIT ] | string | O |
|
| Status płatności | string | O |
|
| Kod płatności | string | O |
|
| Dodatkowa informacja o płatności | string | O |
|
| Kod błędu | string | O |
|
| Wiadomość o płatności (kod) | string | O |
|
| Data transakcji | string($date-time) | O |
|
| 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:
| string | Y |
|
| 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 | Y |
|
| Cena za zamówienie bez kosztów dostawy | object | Y | |
| Netto | number($decimal) | Y |
|
| Brutto | number($decimal) | Y | |
| VAT | number($decimal) | Y | |
| Cena za zamówienie z uwzględnieniem kosztów dostawy | object | Y | |
| Netto | number($decimal) | Y |
|
| Brutto | number($decimal) | Y | |
| VAT | number($decimal) | Y | |
| Waluta zamówienia (obecnie tylko PLN) | string | Y |
|
| Lista nadanych numerów przesyłek zamówienia | array | O |
|
| Informacje o koncie użytkowania | object | Y | |
| Imię | string | Y |
|
| Nazwisko | string | Y | |
| Numer telefonu | object | Y | |
| Prefix | string | Y | |
| Numer telefonu użytkownika | string | Y | |
| string | Y |
| |
| Adres użytkownika | object | Y | |
| Kod kraju | string | Y |
|
| Adres | string | Y | |
| Miasto | string | Y | |
| Kod pocztowy | string | Y | |
| Dane do faktury | object | O | |
| Forma prawna [ PERSON, COMPANY ] | string | O |
|
| Kod kraju | string | O | |
| Id prefix | string | O | |
| Identyfikator podatkowy | string | O | |
| Nazwa firmy | string | O | |
| Imię | string | O | |
| Nazwisko | string | O | |
| Miasto | string | O | |
| Ulica | string | O | |
| Numer budynku | string | O | |
| Numer mieszkania | string | O | |
| Kod pocztowy | string | O | |
| string | O | ||
| Data rejestracji | string | O | |
| Dodatkowe informacje | string | O | |
| Informacje o dostawie | object | Y | |
| Forma dostawy Enum: [ APM, COURIER ] | string | Y |
|
| Data dostawy | string($date-time) | Y |
|
| Wybrane opcje dostawy | array | O | |
| Nazwa | string | Y |
|
| Kod opcji | string | Y | |
| Kwota opcji odstawy | object | Y | |
| Netto | number($decimal) | Y | |
| Brutto | number($decimal) | Y | |
| VAT | number($decimal) | Y | |
| string | O |
| |
| Numer telefonu | object | O | |
| Prefix | string | Y |
|
| Numer | string | Y | |
| Punkt dostawy paczkomatu | string | O |
|
| Adres dostawy | object | O | |
| Nazwa | string | Y |
|
| Kod kraju | string | Y | |
| Adres | string | Y | |
| Miasto | string | Y | |
| Kod pocztowy | string | Y | |
| Obiekt służący do przekazania informacji o koszcie dostawy | object | Y | |
| Cena netto | number ($decimal)(10,2) | Y |
|
| Cena brutto (netto + VAT) | number ($decimal)(10,2) | Y | |
| VAT | number ($decimal)(10,2) | Y | |
| Uwagi dla kuriera | string | O |
|
| Lista produktach w zamówieniu | array | Y | |
| Identyfikator produktu nadany przez Merchanta | string | Y |
|
| Kategoria produktu nadana przez Merchanta | string | O |
|
| Ean | string | O |
|
| Nazwa produktu | string | Y |
|
| Opis produktu | string | O |
|
| Link do produktu na stronie Merchanta | string | O |
|
| Link do zdjęcia produktu. Preferowane format: png, jpg (rekomendacja: png bez tła)
| string | O |
|
| Cena podstawowa z produkt | object | Y | |
| Cena netto | number ($decimal)(10,2)
| Y |
|
| Cena brutto (netto + VAT) | number ($decimal)(10,2) | Y | |
| VAT | number ($decimal)(10,2) | Y | |
| Obiekt służący do przekazania najniższej ceny produktu z ostatnich 30 dni. Wymagane w celu obsłużenia dyrektywy Omibus | object | O | |
| Cena netto | number ($decimal)(10,2)
| Y |
|
| Cena brutto (netto + VAT) | number ($decimal)(10,2)
| Y | |
| VAT | number ($decimal)(10,2)
| Y | |
| Obiekt do przekazania informacji o ilości produktu | object | Y | |
| Ilość produktu | number ($decimal) | Y |
|
| Typ pola quantity. Dostępne wartości: [DECIMAL, INTEGER ]
| string | Y |
|
| Jednostka ilości produktu | string | O |
|
| Obiekt służący do określenia atrybutów produktu | array | O | |
| Nazwa atrybutu | string | Y |
|
| Wartość atrybutu | string | Y | |
| Obiekt służący do przekazania wariantów produktów. Obiekt obecnie nie wykorzystywany. Funkcjonalność będzie wdrażana w kolejnych wersjach aplikacji. | object | O | |
| Id wariantu | string | Y | |
| Nazwa wariantu | string | Y | |
| Opis szczegółowy wariantu | string | O | |
| Typ wariantu | string | O | |
| Wartość wariantu | string | O | |
| Obiekt służący do przekazania informacji o wyrażonych zgodach przez klienta dla danego zamówienia | array | Y | |
| Id zgody | string | Y |
|
| Wersja zgody | string | O |
|
| Informacja czy została wyrażona zgoda | boolean | Y |
|
Status | ||||
---|---|---|---|---|
|
/v1/izi/orders
Przykład implementacji w języku PHP
Podanie kodu -
View file name implementacjaKlienta.txt
Info |
---|
W pliku implementacjaKlienta.txt została dodana tylko funkcja getOrders. |
Code Block | ||
---|---|---|
| ||
/**
* 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 | ||
---|---|---|
|