InPost Pay (Basket App)
InPost Pay (Basket App) - jest to moduł udostępniający API, pozwalający na wymianę informacji o koszyku i realizacji zamówienia. W tej sekcji znajdziesz informacje o metodach API udostępnionych przez InPost służących do komunikacji pomiędzy Merchantem a InPost Pay.
InPost Pay API
Środowisko produkcyjne
Adres środowiska produkcyjnego: https://api.inpost.pl
Środowisko sandbox
Adres środowiska testowego: https://sandbox-api.inpost.pl
Lista endpointów
Poniższa tabel przedstawia listę endpointów wystawionych przez aplikacje InPost Pay, służących do komunikacji pomiędzy Merchantem a aplikacją InPost Pay.
Widget 2.0 - kolumna zawiera listę metod wymaganych do implementacji Widget 2.0.
Widget 1.0 - kolumna zawiera listę metod wymaganych do implantacji Widget 1.0. zgodnie z dokumentacją: Widget 1.0, które zostaje zastąpione przez Widget 2.0. Zalecana implementacja Widget 2.0.
| Metoda | Opis | Widget 2.0 | Widget 1.0 |
---|---|---|---|---|
Przeglądarka | Metoda usuwa powiązaną przeglądarkę lub usuwa telefon z powiązanej przeglądarki. |
|
| |
Koszyk | Metoda aktualizuje lub tworzy koszyk, np. zmienia ilość produktów, typ dostawy itp |
|
| |
Metoda służąca tylko do aktualizacji koszyka, np. zmienia ilość produktów, typ dostawy itp. |
|
| ||
Desynchronizacja koszyka z numerem telefonu |
|
| ||
Metoda łączy koszyk z aplikacją InPost |
|
| ||
Metoda służąca do inicjalizacji powiązania koszyka. |
|
| ||
Metoda sprawdza, czy koszyk jest połączony z aplikacją InPost |
|
| ||
Opcjonalny endpoint back office'owy, zwraca listę koszyków dla Merchanta |
|
| ||
Zamówienie | Aktualizacja zamówienia |
|
| |
Opcjonalny endpoint back office'owy, zwraca listę zamówień dla Merchanta |
|
| ||
Płatności | Zwraca metody płatności dostępne dla Merchanta - metoda dostępna w kolejnej wersji aplikacji |
|
| |
Weryfikacja sygnatury | Zwraca publiczne klucze podpisujące |
|
| |
Zwraca publiczny klucz podpisujący dla wersji |
|
|
Przykład implementacji w PHP
Tworzymy interfejs serwisu klienta, który będzie odpowiedzialny za komunikację Merchant -> InPost - https://dokumentacja-inpost.atlassian.net/wiki/spaces/PL/pages/129794052 .
<?php declare(strict_types=1); namespace Iteo\InpostPayClient\Client; use Iteo\InpostPayClient\SDK\Basket\BasketApp\Basket; use Iteo\InpostPayClient\SDK\Basket\Binding\BindingBasket; use Iteo\InpostPayClient\SDK\Basket\Binding\QrCode\QrCodeData; use Iteo\InpostPayClient\SDK\Basket\Binding\Request\BasketApp\BasketBindingRequest; use Iteo\InpostPayClient\SDK\Basket\Response\BasketsResponse; use Iteo\InpostPayClient\SDK\Basket\Response\InpostBasketId; use Iteo\InpostPayClient\SDK\Core\Exceptions\InpostPayEndpointException; use Iteo\InpostPayClient\SDK\Core\Exceptions\InpostPayPostBasketBindingException; use Iteo\InpostPayClient\SDK\Core\Exceptions\InpostPayPostOrderEventException; use Iteo\InpostPayClient\SDK\Order\Request\BasketApp\OrderEventRequest; use Iteo\InpostPayClient\SDK\Order\Response\BasketApp\OrdersResponse; use Iteo\InpostPayClient\SDK\SignatureVerification\SigningKeys\SigningKeysResponse; use Iteo\InpostPayClient\SDK\SignatureVerification\SigningVersionKey\SigningKeyResponse; /** * Client interface used for communication between Merchant and InPost Pay application. */ interface InpostPayClientInterface { /** * This method verify if basket is connected with InPost app. * * @param string $basketId ID basket assigned by merchant * @param string|null $browserId Browser ID from cookie * * @return BindingBasket Object with information about whether the browser is trusted * and whether the basket is linked * * @throws InpostPayEndpointException */ public function getBasketBinding(string $basketId, ?string $browserId): BindingBasket; /** * This method connect basket with InPost app. * * @param string $basketId ID basket assigned by merchant * @param BasketBindingRequest $requestBody Request data, needed for binding basket * * @return ?QrCodeData Object with data for QR Code when successful binding with QR Code or null * when successful binding with phone number * * @throws InpostPayPostBasketBindingException|InpostPayEndpointException */ public function postBasketBinding(string $basketId, BasketBindingRequest $requestBody): ?QrCodeData; /** * This method desynchronize basket with Inpost Pay mobile app. * * @param string $basketId ID basket assigned by merchant * @param ?bool $ifBasketRealized Information about the fact that the basket will be deleted because * it has been realized * * @throws InpostPayEndpointException */ public function deleteBasketBinding(string $basketId, ?bool $ifBasketRealized): void; /** * This method updates or creates a basket e.g. change products quantity, delivery type etc. * * @param string $basketId ID basket assigned by merchant * @param Basket $basket All Basket data * * @return InpostBasketId Object with basket ID created from Inpost mobile app * * @throws InpostPayEndpointException */ public function putBasket(string $basketId, Basket $basket): InpostBasketId; /** * This method update order. * * @param string $orderId ID order assigned by merchant * @param OrderEventRequest $orderEventRequest Information about order event, that will change order status * * @throws InpostPayPostOrderEventException|InpostPayEndpointException */ public function postOrderEvent(string $orderId, OrderEventRequest $orderEventRequest): void; /** * This method deletes binded browser from Inpost Pay mobile app. * * @param string $browserId ID browser from cookie * * @throws InpostPayEndpointException */ public function deleteBrowserBinding(string $browserId): void; /** * This method get baskets list for merchant. * * @param ?int $pageIndex Information about page index of merchant baskets list * @param ?int $pageSize Information about page size of merchant baskets list page * * @return BasketsResponse Object containing list of baskets for merchant for strict page index * * @throws InpostPayEndpointException */ public function getBaskets(?int $pageIndex, ?int $pageSize): BasketsResponse; /** * This method get orders list for merchant. * * @param ?int $pageIndex Information about page index of merchant orders list * @param ?int $pageSize Information about page size of merchant orders list page * * @return OrdersResponse Object containing list of orders for merchant for strict page index * * @throws InpostPayEndpointException */ public function getOrders(?int $pageIndex, ?int $pageSize): OrdersResponse; /** * This method get public signing keys. * * @return SigningKeysResponse Object containing list of public signing keys * * @throws InpostPayEndpointException */ public function getSigningKeys(): SigningKeysResponse; /** * This method get public signing key for version. * * @param string $version Version of signing-key * * @return SigningKeyResponse Object containing public signing key * * @throws InpostPayEndpointException */ public function getSigningKey(string $version): SigningKeyResponse; }
Tworzymy interfejs url creatora, który będzie odpowiedzialny za uzyskanie odpowiedniego adresu url do API InPostPay'a.
<?php declare(strict_types=1); namespace Iteo\InpostPayClient\Client; /** * Interface used for creating url for communication with Inpost Pay. */ interface InpostPayURLCreatorInterface { /** * Method that return url for Inpost Pay. * * @return InpostPayURL url for Inpost Pay */ public function create(): InpostPayURL; }