Aktualizacja koszyka

Aktualizacja koszyka

Metoda przekazująca aktualizacje koszyka jakie klient wykonał w aplikacji InPost Pay. Na otrzymany event informujący Merchanta o zmianie na koszyku, Merchant w response powinien przesłać cały zaktualizowanych koszyk.

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.

POST /v1/izi/basket/{basket_id}/event

Parameters

Nazwa pola

Opis

Typ

Wymagalność

Dodatkowe uwagi

basket_id

Unikalny identyfikator koszyka nadawany przez merchanta

string

Y

 

 

Request

Nazwa pola

Opis

Typ

Wymagalność

Dodatkowe uwagi

event_id

Id eventu

 string

 Y

 

event_data_time

Data i czas wystąpienia eventu

 string($date-time)

 Y

 

event_type

Typ eventu.

Enum:

[ PRODUCTS_QUANTITY, PROMO_CODES, RELATED_PRODUCTS ]

 

PRODUCTS_QUANTITY - zmiana ilości produktu

PROMO_CODES - dodanie/aktualizacja /usunięcie kodu promocyjnego

RELATED_PRODUCTS - dodanie produktu sugerowanego

 string

 Y

 

phone_number

Informacja o numerze użytkownika, z którym jest powiązany koszyk

 object

 O

 

phone_number.country_prefix

Prefix

 string

 Y

 

phone_number.phone

Numer telefonu

 string

 Y

 

quantity_event_data

Obiekt zwracający szczegóły eventu PRODUCTS_QUANTITY

 

 O

 

quantity_event_data.product_id

Identyfikator produktu nadany przez merchanta

string

Y

"product_id":26

quantity_event_data.quantity

Obiekt do przekazania informacji o ilości produktu

object

Y

 

quantity_event_data.quantity.quantity

Ilość produktu

number ($decimal)  

Y

"quantity":1

quantity_event_data.quantity.quantity_type

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

Jeżeli quantity_type produktu to INTEGER, wtedy Merchant przesyła cenę za 1 sztukę produktu. Jeżeli quantity_type produktu to DECIMAL, wtedy Merchant przesyła cenę za wybraną ilość produktu.  

  • Przykład 1) Mamy 5 sztuk koszul w cenie 10 zł za sztukę. W takim przypadku quantity_type, to INTEGER i cena produktu wynosi 10 zł.

  • Przykład 2) Mamy 0,35 kg mąki w cenie 5 zł. W takim przypadku quantity_type, to DECIMAL i cena produktu wynosi 5 zł.

string

O

"quantity_type":"INTEGER"

quantity_event_data.quantity.quantity_unit

Jednostka ilości produktu

string

O

"quantity_unit":"pcs"

quantity_event_data.quantity.available_quantity

Ilość dostępnego produktu w sklepie

number ($decimal)

O

"available_quantity":26

quantity_event_data.quantity.max_quantity

Maksymalna ilość produktu jaką klient może zamówić np. przy jednym zamówieniu

number ($decimal)

O

"max_quantity":26

promo_codes_event_data

Obiekt zwracający szczegóły eventu PROMO_CODES

 object

O

 

promo_codes_event_data.name

Nazwa kodu. W kolejnej wersji aplikacji pole nie wymagalne

string

Y

"name": "Promocja 5%"

promo_codes_event_data.promo_code_value

Kod promocyjny

string

Y

"promo_code_value": "INPOST10"

related_products_event_data

Obiekt zwracający szczegóły eventu RELATED_PRODUCTS

 object

O

 

related_products_event_data.product_id

Identyfikator produktu nadany przez merchanta

string

Y

"product_id":26

related_products_event_data.ean

Ean

string

O

"ean":"0"

related_products_event_data.quantity

Obiekt do przekazania informacji o ilości produktu

object

Y

 

related_products_event_data.quantity.quantity

Ilość produktu

number ($decimal)  

Y

"quantity":1

related_products_event_data.quantity.quantity_type

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

string

O

"quantity_type":"INTEGER"

related_products_event_data.quantity.quantity_unit

Jednostka ilości produktu

string

O

"quantity_unit":"pcs"

related_products_event_data.quantity.available_quantity

Ilość dostępnego produktu w sklepie

number ($decimal)

O

"available_quantity":26

related_products_event_data.quantity.max_quantity

Maksymalna ilość produktu jaką klient może zamówić np. przy jednym zamówieniu

number ($decimal)

O

"max_quantity":26

 

 

Response

Nazwa pola

Opis

Typ

Wymagalność

Dodatkowe uwagi

summary

Obiekt służący do przekazania podstawowych danych o koszyku

object

Y

 

summary.basket_base_price

Obiekt służący do przekazania ceny podstawowej za koszyk bez kosztów dostawy

object

Y

 

summary.basket_base_price.net

Cena netto

number ($decimal)(10,2)

Y

"summary":{"basket_base_price":{"net":"250.00","gross":"307.50","vat":"57.5

summary.basket_base_price.gross

Cena brutto (netto + VAT)

number ($decimal)(10,2)

Y

summary.basket_base_price.vat

VAT

number ($decimal)(10,2)

Y

summary.basket_final_price

Obiekt służący do przekazania ostatecznej ceny koszyka z uwzględnioną promocją i kodem rabatowym na koszyku bez kosztów dostawy.
Wartość obniżki na koszyku  wynikająca z zastosowania kodu (kodu promocyjnego, który nie reguluje dyrektywa OMNIBUS), widoczna w podsumowaniu koszyka będzie różnicą pomiędzy promo_price a final_price lub base_price a final_price w przypadku gdy koszyk  nie jest w promocji.

object

O

 

summary.basket_final_price.net

Cena netto

number ($decimal)(10,2)

Y

"basket_final_price":{"net":"220.00","gross":"270.60","vat":"50.60"}

summary.basket_final_price.gross

Cena brutto (netto + VAT)

number ($decimal)(10,2)

Y

summary.basket_final_price.vat

VAT

number ($decimal)(10,2)

Y

summary.basket_promo_price

Obiekt służący do przekazania ceny koszyka z uwzględnioną promocją na koszyku, ale bez zastosowania kodu rabatowego i bez kosztów dostawy.

object

O

 

summary.basket_promo_price.net

Cena netto

number ($decimal)(10,2)

Y

"basket_promo_price":{"net":"220.00","gross":"270.60","vat":"50.60"}

summary.basket_promo_price.gross

Cena brutto (netto + VAT)

number ($decimal)(10,2)

Y

summary.basket_promo_price.vat

VAT

number ($decimal)(10,2)

Y

summary.currency

Waluta koszyka. Obecnie obsługiwana tylko waluta PLN

string

Y

"currency":"PLN"

summary.basket_expiration_date

Data wygaśnięcia/ważności koszyka. Jest to data, po której koszyk zostanie automatycznie usunięty z aplikacji InPost Pay (straci ważność). Data nie może być przeszła.

string($date-time)

O

"basket_expiration_date":"2023-09-13T07:40:53.000Z"

summary.basket_additional_information

Pole służy do przekazania dodatkowych informacji o koszyku, które z punktu widzenia merchanta mogą być istotne dla klienta

string

O

"basket_additional_information":"Zamów już dziś, a otrzymasz kod promocyjny na przyszłe zakupy"

summary.payment_type

Preferowane formy płatności dla koszyka. Merchant przekazuje listę preferowanych form płatności dla koszyka z których następnie klient mam możliwość wybrania form płatności przy tworzeniu zamówienia. W przypadku przekazania pustej listy, klientowi zostanie zaprezentowana domyślna lista płatności zgodnie z konfiguracją merchanta w bramce płatniczej oraz CASH_ON_DELIVERY, gdy dla danej formy dostawy w "delivery" został przekazany "delivery_code_value" ="COD".

Lista z możliwymi typami płatności: [ CARD, CARD_TOKEN, GOOGLE_PAY, APPLE_PAY, BLIK_CODE, BLIK_TOKEN, PAY_BY_LINK, SHOPPING_LIMIT, DEFERRED_PAYMENT, CASH_ON_DELIVERY ]

array

Y

"payment_type":["CARD","CARD_TOKEN","APPLE_PAY","BLIK_CODE","BLIK_TOKEN","PAY_BY_LINK","SHOPPING_LIMIT","DEFERRED_PAYMENT","GOOGLE_PAY"],

summary.basket_notice

Obiekt z informacją dodatkową o koszyku, o której merchant chciałby poinformować klienta w aplikacji InPost Pay

object

O

 

summary.basket_notice.type

Typ informacji. Wyróżniamy dwa typy informacji, na podstawie której, aplikacji zaprezentuje odpowiedni format komunikatu Enum: [ ATTENTION, ERROR ]:

ATTENTION - wykorzystujemy w przypadku, gdy chcemy poinformować klient o istotnych informacjach na koszyku, np. zastosowanie kodu promocyjnego, dodanie produktu gratis etc.

ERROR - wykorzystujemy w przypadku, gdy nie udało się wykonać jakiegoś działania na koszyku np. niepoprawny kod promocyjny lub nie udana próba dodania produktu sugerowanego.

 

string

Y

"type":"ATTENTION"

summary.basket_notice.description

Treść komunikatu prezentowana klientowi w aplikacji InPost Pay dla danego notice.type

string

Y

"description":"Kod został aktywowany"

delivery

Obiekt służący do przekazania informacji o preferowanych formach dostawy dla danego koszyka

array

Y

 

delivery.delivery_type

Forma dostawy. Enum:[ APM, COURIER, DIGITAL ].  

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

string

Y

"delivery_type":"APM"

delivery.delivery_date

Sugerowana data dostawy

string($date-time)

Y

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

delivery.delivery_options

Obiekt służący do przekazania dodatkowych opcji dostawy.  Obecnie dostępne dwie dodatkowe opcje dostawy:

PWW - paczka w weekend

COD - płatność przy odbiorze. W przypadku, gdy dla danego koszyka w payment_type zostanie przekazana wartość CASH_ON_DELIVERY, obligatoryjnie należy przekazać COD jako dodatkową opcję dostawy

 array

O

 

delivery.delivery_options.delivery_name

Nazwa dodatkowej opcji dostawy

string

Y

"delivery_name": "Paczka w Weekend"

delivery.delivery_options.delivery_code_value

Kod dodatkowej opcji dostawy. Obecnie dostępne dwa kody:

PWW - paczka w weekend

COD - płatność przy odbierze

string

Y

 "delivery_code_value": "PWW"

 

delivery.delivery_options.delivery_option_price

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

object

Y

 

delivery.delivery_options.delivery_option_price.net

Cena netto

number ($decimal)(10,2)

Y

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

delivery.delivery_options.delivery_option_price.gross

Cena brutto (netto + VAT)

number ($decimal)(10,2)

Y

delivery.delivery_options.delivery_option_price.vat

VAT

number ($decimal)(10,2)

Y

delivery.delivery_price

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

object

Y

 

delivery.delivery_price.net

Cena netto

number ($decimal)(10,2)

Y

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

delivery.delivery_price.gross

Cena brutto (netto + VAT)

number ($decimal)(10,2)

Y

delivery.delivery_price.vat

VAT

number ($decimal)(10,2)

Y

delivery.free_delivery_minimum_gross_price

Minimalna wartość koszyka od jakiej koszt dostawy będzie wynosił 0 PLN

number ($decimal)(10,2)

O

"free_delivery_minimum_gross_price": "100.00"

delivery.estimate_delivery_time

Funkcjonalność wykorzystująca obiekt dostępna w kolejnych wersjach aplikacji

Obiekt służący do przekazania informacji o szacowanym czasie dostawy w przypadku zamówienia towarów przez klienta w określonym czasie.

array

O

"estimate_delivery_time": [
{
"description": "Kup do 15:00 - dostawa jutro",
"days_available": [
"MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY"
],
"start_hour": "10:00",
"end_hour": "15:00"
}
]
}
],

delivery.estimate_delivery_time.description

Treść komunikatu prezentowana klientowi aplikacji

string

Y

delivery.estimate_delivery_time.days_available

Dni tygodnia w jakich ma być prezentowany komunikat

array

O

delivery.estimate_delivery_time.start_hour

Godzina od której ma być prezentowany komunikat

string

O

delivery.estimate_delivery_time.end_hour

Godzina do której ma być prezentowany komunikat

string

O

promo_codes

Lista kodów promocyjnych zastosowanych na koszyku 

array 

 

promo_codes.name

Nazwa kodu. W kolejnej wersji aplikacji pole niewymagalne

string

Y

 "name": "Promocja 5%"

promo_codes.promo_code_value

Kod promocyjny

string

Y

"promo_code_value": "INPOST10"

promo_codes.regulation_type

Typ regulacji lub restrykcji, której kod promocyjny podlega.

UWAGA: W przypadku gdy, kod promocyjny jest kodem w myśl dyrektywy OMNIBUS to należy przekazać wartość „OMNIBUS”.

string

O

"regulation_type": "OMNIBUS"

promotions_available

Lista dostępnych kodów promocyjnych, które klient może wykorzystać w koszyku.

array

O

  "promotions_available": [

    {

      "type": "MERCHANT",

      "promo_code_value": "IZI",

      "description": "Super promocja -- 20 PLN ",

      "start_date": "2024-10-03T07:33:13.942Z",

      "end_date": "2024-11-03T07:33:13.942Z",

      "priority": 0,

      "details": {

        "link": " https://inpostpay.pl/ "

      }

    }

  ],

promotions_available.type

Typ kodu:
Enum:[ MERCHANT, ONLY_IN_APP ]
 
MERCHANT -  kod dostępny w sklepie merchanta i InPost Pay (KOD SKLEPU)

ONLY_IN_APP - kod dostępny tylko w aplikacji InPost Pay (TYLKO W APCE).

string 

Y

promotions_available.promo_code_value

Wartość kodu np. DOSTAWA

string 

Y

promotions_available.description

Opis kodu

Max: 60 znaków

string 

Y

promotions_available.start_date

Data początkowa obowiązywania kodu promocyjnego

string($date-time)

O

promotions_available.end_date

Data końcowa obowiązywania kodu promocyjnego

string($date-time)

O

promotions_available.priority

Priorytet kodu
Priorytet służy do określenia kolejności prezentacji kodów w szczegółach koszyka (najwyższy priorytet ma najniższa wartość)

integer

O

promotions_available.details

Szczegóły kodu promocyjnego

object

Y

promotions_available.details.link

Link do szczegółów informacji o kodzie promocyjnym w sklepie merchanta. 

string 

Y

products

Lista do przekazania informacji o produktach w koszyku

array

Y

 

products.product_id

Identyfikator produktu nadany przez merchanta

string

Y

"product_id":26

products.product_category

Kategoria produktu nadana przez merchanta

string

O

"product_category":20

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"

products.ean

ean