/
Aktualizacja lub dodanie koszyka

Aktualizacja lub dodanie koszyka

Artykuł zawiera opis metody wykorzystywanej do aktualizacji koszyka wraz z przykładem implementacji metody w języku PHP.

Opis metody

Metoda służąca do aktualizacji koszyka w aplikacji InPost Pay. W przypadku, gdy klient korzysta z przeglądarki zaufanej oraz posiada koszyk niepowiązany z aplikacją InPost Pay metoda wykorzystywana również do utworzenia i powiązania koszyka z InPost Pay.

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 

basket_id 

Unikalny identyfikator koszyka nadawany przez merchanta 

string 

 

 

Request  

Nazwa pola 

Opis  

Typ 

Wymagalność 

Dodatkowe uwagi 

browser_id

Unikalny identyfikator przeglądarki zaufanej nadawany przez aplikacje InPost. Pole wykorzystywane tylko w przypadku, gdy klient korzysta z przeglądarki zaufanej i nie ma powiązanego koszyka. W takiej sytuacji po wybraniu „Kup z InPost Pay” powinna być wywołana metoda PUT z parametrem browser_id. 

string 

"browser_id":"2d387d15-d4fe-43f8-85dc-32d46cfc3b53"

summary

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

object 

 

summary.basket_base_price

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

object 

 

summary.basket_base_price.net

Cena netto 

Number ($decimal)(10,2) 

 

"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) 

 

summary.basket_base_price.vat

VAT 

Number ($decimal)(10,2) 

 

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 

 

summary.basket_final_price.net

Cena netto 

Number ($decimal)(10,2) 

 

"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) 

 

summary.basket_final_price.vat

VAT 

Number ($decimal)(10,2) 

 

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 

 

summary.basket_promo_price.net

Cena netto 

Number ($decimal)(10,2) 

 

"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) 

 

summary.basket_promo_price.vat

VAT 

Number ($decimal)(10,2) 

 

summary.currency

Waluta koszyka. Obecnie obsługiwana tylko waluta PLN 

string 

"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) 

"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 

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

summary.payment_type

Preferowane formy płatności za koszyk. Merchant przekazuje listę preferowanych form płatności dla koszyka z których następnie klient ma możliwość wybrania form płatności. 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 

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

delivery

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

array 

 

delivery.delivery_type

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

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

string 

"delivery_type":"APM"

delivery.delivery_date

Sugerowana data dostawy 

string($date-time) 

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

delivery.delivery_options

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

PWW – paczka w weekend  

COD – płatność przy odbierze. W przypadku, gdy dla danego koszyk w payment_type zostanie przekazana wartość CASH_ON_DELIVERY, obligatoryjnie należy przekazać COD jako dodatkową opcje dostawy 

 

 array

 

delivery.delivery_options.delivery_name

Nazwa dodatkowej opcji dostawy 

string 

"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 

"delivery_code_value": "PWW"

delivery.delivery_options.delivery_option_price

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

object 

 

delivery.delivery_options.delivery_option_price.net

Cena netto 

Number ($decimal)(10,2) 

 

"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) 

 

delivery.delivery_options.delivery_option_price.vat

VAT 

Number ($decimal)(10,2) 

 

delivery.delivery_price

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

object 

 

delivery.delivery_price.net

Cena netto 

Number ($decimal)(10,2) 

 

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

delivery.delivery_price.gross

Cena brutto (netto + VAT) 

Number ($decimal)(10,2) 

 

delivery.delivery_price.vat

VAT 

Number ($decimal)(10,2) 

 

delivery.free_delivery_minimum_gross_price

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

Number ($decimal)(10,2) 

 

"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 nie wymagalne 

string 

"name": "Promocja 5%"

promo_codes.promo_code_value

Kod promocyjny 

string 

"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 

 

products.product_id

Identyfikator produktu nadany przez merchanta 

string 

"product_id":26

products.product_category

Kategoria produktu nadana przez merchanta 

string 

"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 

string 

"ean":"0"

products.product_name

Nazwa produktu  

string 

"product_name":"Plecak washpapa"

 

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

products.product_link

Link do produktu na stronie merchanta 

string 

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

products.product_image

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

string 

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

Preferowane format: png, jpg (rekomendacja: png bez tła)

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

-

products.additional_product_images. small_size

Zdjęcie produktu. Preferowany rozmiar 360 x 352

string

Y

-

products.additional_product_images. normal_size

Zdjęcie produktu. Preferowany rozmiar 360 x 504

string

Y

-

products.base_price

Cena podstawowa z produkt 

object 

 

products.base_price.net

Cena netto 

Number ($decimal)(10,2) 

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

products.base_price.gross

Cena brutto (netto + VAT) 

Number ($decimal)(10,2) 

products.base_price.vat

VAT 

Number ($decimal)(10,2) 

products.promo_price 

Cena promocyjna produktu 

object 

 

products.promo_price.net

Cena netto 

number ($decimal)(10,2) 

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

products.promo_price.gross

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

products.promo_price.vat

VAT 

Number ($decimal)(10,2) 

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. Obiekt należy przekazać obligatoryjnie w przypadku, gdy została przekazania cena promocyjna produktu (obiekt promo_price) oraz został przekazany kod promocyjny z "regulation_type": "OMNIBUS".

object 

 

products.lowest_price.net

Cena netto 

number ($decimal)(10,2) 

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

products.lowest_price.gross 

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

products.lowest_price.vat

VAT 

number ($decimal)(10,2) 

products.quantity

Obiekt do przekazania informacji o ilości produktu 

object 

 

products.quantity.quantity

Ilość produktu 

number ($decimal) 

"quantity":1

products.quantity.quantity_type

Typ quantity. Dostępne wartości: [ 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 

"quantity_type":"INTEGER"

products.quantity.quantity_unit

Jednostka ilości produktu 

string 

"quantity_unit":"pcs"

products.quantity.available_quantity

Ilość dostępnego produktu sklepie 

number ($decimal) 

"available_quantity":26

products.quantity.min_quantity 

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

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

number ($decimal) 

 

"min_quantity": 2

products.quantity.max_quantity

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

number ($decimal) 

"max_quantity": 26

products.quantity.quantity_jump

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

Wartość skoku ilości w przypadku zwiększenia/zmniejszenia ilości produktu przez klienta (np. 0,1 lub 0,5 lub 0,01)

number ($decimal)    

O

"quantity_jump": 0.5

products.product_attributes

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

array 

 

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"}]

products.product_attributes.attribute_value

Wartość atrybutu 

string 

products.delivery_product

Obiekt służący do przekazania informacji o dostępnych formach dostawy dla produktu. Jeśli brak obiektu delivery_product, to oznacza że dostawa dostępna wszystkimi typami

array

O

 

products.delivery_product.delivery_type

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

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

string

O

 

products.delivery_product.if_delivery_available

Flaga informująca czy typ dostawy jest dostępny.

boolean

O

 

related_products

Obiekt służący do przekazania listy produktów sugerowanych dla danego koszyka, które klient może dodać z poziomu aplikacji InPost Pay 

array 

 

related_products.product_id

Identyfikator produktu nadany przez merchanta 

string 

"product_id":26

related_products.product_category

Kategoria produktu nadana przez merchanta 

string 

"product_category":20

related_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"

related_products.ean

Ean 

string 

"ean":"0"

related_products.product_name

Nazwa produktu  

string 

"product_name":"Plecak washpapa"

related_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."

related_products.product_link

Link do produktu na stronie merchanta 

string 

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

related_products.product_image

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

string 

 O

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

Preferowane format: png, jpg (rekomendacja: png bez tła) 

related_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

-

related_products.additional_product_images. small_size

Zdjęcie produktu. Preferowany rozmiar 360 x 352

string

Y

-

related_products.additional_product_images. normal_size

Zdjęcie produktu. Preferowany rozmiar 360 x 504

string

Y

-

related_products.base_price

Cena podstawowa z produkt 

object 

 

 

related_products.base_price.net

Cena netto 

number ($decimal)(10,2) 

 

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

related_products.base_price.gross

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

related_products.base_price.vat

VAT 

number ($decimal)(10,2) 

related_products.promo_price

Cena promocyjna produktu 

object 

 

related_products.promo_price.net

Cena netto 

number ($decimal)(10,2) 

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

related_products.promo_price.gross

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

related_products.promo_price.vat

VAT 

number ($decimal)(10,2) 

related_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. Obiekt należy przekazać obligatoryjnie w przypadku, gdy została przekazania cena promocyjna produktu (obiekt promo_price) oraz został przekazany kod promocyjny z "regulation_type": "OMNIBUS".

object 

 

related_products.lowest_price.net

Cena netto 

number ($decimal)(10,2) 

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

related_products.lowest_price.gross

Cena brutto (netto + VAT) 

number ($decimal)(10,2) 

related_products.lowest_price.vat

VAT 

number ($decimal)(10,2) 

related_products.quantity

Obiekt do przekazania informacji o ilości produktu 

object 

 

related_products.quantity.quantity

Ilość produktu 

number ($decimal) 

 

"quantity":1

related_products.quantity.quantity_type

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

 

string 

"quantity_type":"INTEGER"

related_products.quantity.quantity_unit

Jednostka ilości produktu 

string 

"quantity_unit":"pcs"

related_products.quantity.available_quantity

Ilość dostępnego produktu sklepie 

number($decimal) 

 

"available_quantity":26

related_products.quantity.min_quantity 

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

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

number ($decimal) 

"min_quantity":2 

related_products.quantity.max_quantity

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

number($decimal) 

 

"max_quantity": 26

related_products.quantity.quantity_jump

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

Wartość skoku ilości w przypadku zwiększenia/zmniejszenia ilości produktu przez klienta (np. 0,1 lub 0,5 lub 0,01)

number ($decimal)    

O

"quantity_jump": 0.5

related_products.product_attributes

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

array 

 

related_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"}]

related_products.product_attributes.attribute_value

Wartość atrybutu 

string 

 

related_products.delivery_related_products

Obiekt służący do przekazania informacji o dostępnych formach dostawy dla produktu. Jeśli brak obiektu delivery_product, to oznacza że dostawa dostępna wszystkimi typami

array

O

 

related_products.delivery_related_products.delivery_type

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

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

string

O

 

related_products.delivery_related_products.if_delivery_available

Flaga informująca czy typ dostawy dostępna

boolean

O

 

related_products.delivery_related_products.if_delivery_free

Flaga informująca czy po dodaniu produktu sugerowanego do koszyka, klient będzie miał darmową dostawę. W przypadku, gdy if_delivery_free=true jest na danym produkcie sugerowanym, klientowi zostanie zaprezentowany odpowiedni komunikat na tym produkcie

boolean

O

 

consents

Obiekt służący do przekazania listy zgód dla danego koszyka.
Maksymalna ilość zgód dla koszyka: 10

array 

 Y

 

consents.consent_id

Id zgody nadawane przez merchanta 

string 

 Y

"consent_id":3

consents.consent_link

Link przekierowujący do pełnej treści zgodny np. do strony merchanta 

string 

 Y

"consent_link":"https://test.outofthebox.pl/zwroty-i-reklamacje/"

consents.label_link

Label do linku przekazanego w consent_link

string

O

"label_link": "Regulaminu",

consents.additional_consent_links

Obiekt służący do przekazania dodatkowego linku do zgody/regulaminu

object

O

 

consents.additional_consent_links.id

Id zgody nadawane przez merchanta

string

O

"id": "0"

consents.additional_consent_links.consent_link

Link przekierowujący do pełnej treści zgodny np. do strony merchanta

string

O

"consent_link": "https://uat.outofthebox.pl/privacy-policy/",

consents.additional_consent_links.label_link

Label do linku przekazanego w consent_link

string

O

"label_link": "Polityką prywatności"

consents.consent_description

Opis zgody, nie więcej niż 500 znaków 

string 

 Y

consent_description":"zwroty i reklamacje"

consents.consent_version

Wersja zgody 

string 

 Y

"consent_version":1

consents.requirement_type

Typ zgody. Dostępne wartości: Enum: [OPTIONAL, REQUIRED_ONCE, REQUIRED_ALWAYS ] 

OPTIONAL – Zgoda opcjonalna  

REQUIRED_ONCE - wymagana jednorazowo. Zgoda o takim typie i wersji będzie zapisana w profilu użytkownika, z informacją, że klient wyraził zgodę i w przypadku kolejnych koszyków będzie domyślnie zaznaczona. 

REQUIRED_ALWAYS - wymagana zawsze. Zgoda o takim typie i wersji nie jest zapisywana w profilu użytkownika. Klient za każdym razem musi wyrazić zgodę. 

string 

 Y

"requirement_type":"OPTIONAL"

merchant_store

Obiekt służący do przekazania cookie koszyka klienta w celu umożliwienia przejścia ze aplikacji InPost Pay do koszyka w sklepie merchanta

object

O

-

merchant_store.url

url sklepu 

string

Y

"url": "https://uat.outofthebox.pl/cart/",

merchant_store.cookies

Obiekt do przekazania cookie

array

Y

-

merchant_store.cookies.domain

Domena pliku cookie reprezentowana przez parę key-value

string

Y

"domain": "uat.outofthebox.pl",

merchant_store.cookies.key

Cookie key

string

Y

"key": "wp_woocommerce_session_f3cd21b400c074e165b59837d7a9d0a4",

merchant_store.cookies.value

Cookie value

string

Y

"value": "t_f13664beda2ec455d97546c1ddab8b%7C%7C1699438060%7C%7C1699434460%7C%7Cf77d310ce1f0440cb4812f5043736989",

merchant_store.cookies.path

Cookie path

string

Y

"path": "/",

merchant_store.cookies.expires

Czas wygaśnięcia pliku cookie lub maxAge

string($date-time)

O

"expires": "2025-01-16T14:17:02.486Z",

merchant_store.cookies.secure

Informacje o bezpieczeństwie plików cookie

boolean

O

"secure": false,

merchant_store.cookies.http_only

Informacje http o plikach cookie

boolean

O

"http_only": true,

merchant_store.cookies.same_site

Informacje o pliku cookie sameSite [ STRICT, LAX, NONE ]

string

O

"same_site": "LAX",

merchant_store.cookies.priority

Priorytet plików cookie [ LOW, MEDIUM, HIGH ]

string

O

"priority": "MEDIUM",

merchant_store.cookies.max_age

Maksymalny czas cookie

integer($int32)

O

"max_age": 0

 

Response 

Nazwa pola 

Opis  

Typ 

Wymagalność 

Dodatkowe uwagi 

inpost_basket_id 

Identyfikator koszyka nadawany przez aplikacje InPost Pay 

Dana nie wykorzystywana przez merchanta. Identyfikator docelowo wykorzystywany przez widget w celu umożliwienia prawidłowego przekierowania z poziomu widget do aplikacji InPost Pay 

string 

"inpost_basket_id": " 866e5bf6-4e8a-443e-98f5-f9b0c5c149dd"


PUT /v1/izi/basket/{basket_id}

 

Przykładowy request

{ "browser_id": "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx", "summary": { "basket_base_price": { "net": "80.49", "gross": "99.00", "vat": "18.51" }, "basket_final_price": { "net": "80.49", "gross": "99.00", "vat": "18.51" }, "basket_promo_price": { "net": "80.49", "gross": "99.00", "vat": "18.51" }, "currency": "PLN", "basket_expiration_date": "2023-08-24T07:58:30.062Z", "basket_additional_information": "string", "payment_type": ["CARD","CARD_TOKEN","APPLE_PAY","BLIK_CODE","BLIK_TOKEN","PAY_BY_LINK","SHOPPING_LIMIT","DEFERRED_PAYMENT","GOOGLE_PAY","CASH_ON_DELIVERY"], "basket_notice": null }, "delivery": [ { "delivery_type": "APM", "delivery_date": "2023-08-24T07:58:30.062Z", "delivery_options": [], "delivery_price": { "net": "0.00", "gross": "0.00", "vat": "0.00" } } ], "promo_codes": [], "products": [ { "product_id": "585", "product_category": "20", "ean": "0", "product_name": "Drewniane bule", "product_description": " \r\n\r\nCo to są bule? Na mieście mówią, że „bule to kule na nudy bóle". To gra, w której zasady są proste, a emocje sięgają 10 piętra. Bule to kule. W tym przypadku -- drewniane, z twardego drewna bukowego. Jedna z nich to świnka zwana prosiaczkiem. Taka kruszynka-wieprzowinka.\r\n\r\nCo trzeba mieć, żeby zagrać w bule? Przynajmniej jednego przyjaciela. Albo przyjaciółkę. Albo sąsiada, wujka, kuzynkę, znajomego, brata, siostrę, kolegę. Trzeba też mieć kawałek trawnika, może być bez trawy. Bule to rzucanie kulami w świnkę. Kto rzuci najbliżej, ten wygrywa. Gra w bule jest prosta, choć kule są okrągłe. Dziwne, co nie?", "product_link": "https://outofthebox.pl/product/drewniane-bule/", "product_image": "https://outofthebox.pl/app/uploads/2022/10/INPOST_aranzacje3-1.jpg", "base_price": { "net": 80.49, "gross": 99.00, "vat": 18.51 }, "quantity": { "quantity": 1, "quantity_type": "INTEGER", "quantity_unit": "pcs", "available_quantity": 275, "max_quantity": 275 }, "product_attributes": [] } ], "related_products": [ { "product_id": "567", "product_category": "20", "ean": "0", "product_name": "Mata do ćwiczeń", "product_description": " \r\n\r\nNie wiemy, ile korków wystrzelonych w Sylwestra potrzeba do stworzenia korkowej maty do jogi. Ale wiemy, że dzięki niej możesz zacząć całkiem nowy czas w swoim życiu.\r\n\r\nĆwiczenia na niej to prawdziwy body & soul balance.\r\n\r\nZatem rusz swe "body" po naturalny zastrzyk energii i zadbaj o relaks swojej "soul". Warto wiedzieć, że mata korkowa z naturalnego kauczuku ma najlepsze właściwości antypoślizgowe.", "product_link": "https://outofthebox.pl/product/mata-do-cwiczen/", "product_image": "https://outofthebox.pl/app/uploads/2022/10/INPOST_aranzacje25.jpg", "base_price": { "net": 202.44, "gross": 249.00, "vat": 0.00 }, "quantity": { "quantity": 1, "quantity_type": "INTEGER", "quantity_unit": "pcs", "available_quantity": 197485, "max_quantity": 197485 }, "product_attributes": [ { "attribute_name": "Wymiary/Pojemność", "attribute_value": "183x61 cm, 4 mm grubości" }, { "attribute_name": "Materiał", "attribute_value": "Korek i naturalny kauczuk" }, { "attribute_name": "Waga", "attribute_value": "2.6 kg" } ] }, { "product_id": "554", "product_category": "20", "ean": "0", "product_name": "Paryżanka", "product_description": " \r\n\r\nCzy wiesz, co tak naprawdę widzą ludzie, kiedy idziesz sobie z paryżanką?\r\n\r\nWidzą, że jesteś EKO. Nie używasz foliowych woreczków jednorazowego użytku.\r\n\r\nWidzą, że jesteś modna. W końcu Paryż to miejsce, w którym od dawna decyduje się o tym, co warto ze sobą nosić.\r\n\r\nParyżanka nie kryje się z tym, że wygląda rewelacyjnie, kiedy jest wypełniona świeżymi owocami.\r\n\r\nWidzą też, że lubisz naturalne materiały, bo paryżanka wykonana jest w 100 procentach z bawełny.\r\n\r\nI że w swoim życiu działasz zgodnie z zasadą out of the box.\r\nPo swojemu. Jak InPost.", "product_link": "https://outofthebox.pl/product/paryzanka/", "product_image": "https://outofthebox.pl/app/uploads/2022/10/INPOST_aranzacje11-1.jpg", "base_price": { "net": 23.58, "gross": 29.00, "vat": 0.00 }, "quantity": { "quantity": 1, "quantity_type": "INTEGER", "quantity_unit": "pcs", "available_quantity": 468, "max_quantity": 468 }, "product_attributes": [] } ], "consents": [ { "consent_id": "3", "consent_link": "https://outofthebox.pl/zwroty-i-reklamacje/", "consent_description": "zwroty i reklamacje", "consent_version": "1", "requirement_type": "OPTIONAL" } ] }

Response

{ "inpost_basket_id": "866e5bf6-4e8a-443e-98f5-f9b0c5c149dd" }

Przykład implementacji w PHP

  • Podanie kodu -

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

/** * 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 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 ); } }
  • W SDK.zip zawiera się kod zawierający obiekt requestu oraz response endpointu.


 

Related content

Weryfikacja powiązania koszyka
Weryfikacja powiązania koszyka
More like this
Pobranie listy koszyków
Pobranie listy koszyków
More like this
Potwierdzenie powiązania koszyka
Potwierdzenie powiązania koszyka
More like this
Aktualizacja koszyka [Widget 2.0]
Aktualizacja koszyka [Widget 2.0]
More like this
InPost Pay (Basket App)
InPost Pay (Basket App)
Read with this
Aktualizacja zamówienia
Aktualizacja zamówienia
More like this