Update or adding a basket

The article contains a description of the method used to update a basket together with an example implementation of the method in PHP.

Description of the method

A method used to update a basket in the InPost Pay App. If a customer uses a trusted browser, and has a basket not associated with the InPost Pay app, the method also used to create and link the basket to InPost Pay.

Parameters

Field name

Description

Type

Requirement status

Additional remarks

basket_id

Basket's unique ID assigned by the merchant

string

Y

 

Request

Field name

Description

Type

Requirement status

Additional remarks

browser_id

Unique ID of the trusted browser assigned by the Inpost app. A field only used when the customer uses a trusted browser, and doesn't have a basket linked. In this case, after selecting "Kup z Inpost Pay", the PUT method should be called with the browser_id parameter.

string

O

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

summary

Object intended to transfer the basket's key data

object

Y

 

summary.basket_base_price

Object intended to transfer the main price for the basket without the delivery costs

object

Y

 

summary.basket_base_price.net

Net price

Number ($decimal)(10,2)

 

Y

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

summary.basket_base_price.gross

Gross Price (net + VAT)

Number ($decimal)(10,2)

 

Y

summary.basket_base_price.vat

VAT

Number ($decimal)(10,2)

 

Y

summary.basket_final_price

Object intended to transfer the basket's final price with any promotion and discount code taken into account without the delivery costs.
The discount value for products arising out from the application of a code (promotional code that is not regulated by the OMNIBUS directive) displayed in the basket summary will be the difference between the promo_price, and the final_price or the base_price, and the final_price when the products are not promoted.

object

O

 

summary.basket_final_price.net

Net price

Number ($decimal)(10,2)

 

Y

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

summary.basket_final_price.gross

Gross Price (net + VAT)

Number ($decimal)(10,2)

 

Y

summary.basket_final_price.vat

VAT

Number ($decimal)(10,2)

 

Y

summary.basket_promo_price

Object intended to transfer the basket's price taken into account any promotion, but without any rebate code and without the delivery costs.

object

O

 

summary.basket_promo_price.net

Net price

Number ($decimal)(10,2)

 

Y

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

summary.basket_promo_price.gross

Gross Price (net + VAT)

Number ($decimal)(10,2)

 

Y

summary.basket_promo_price.vat

VAT

Number ($decimal)(10,2)

 

Y

summary.currency

Basket's currency. Currently, the only currency available PLN

string

Y

"currency":"PLN"

summary.basket_expiration_date

Basket's expiration /validity date. This is the date when the basket will be automatically removed from the Inpost Pay app (it becomes invalid). The date cannot be backward.

string($date-time)

O

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

summary.basket_additional_information

The field is used to transfer additional information of the basket which, from the merchant's point of view, could be significant for the customer

string

O

"basket_additional_information": "Order today, and receive a discount code for future purchases"

summary.payment_type

Preferable payment methods for the basket. The merchant provides the list of preferred payment forms for the basket from which the client selects the payment method. In the case of transferring an empty list, the customer will be presented with a default list of payment methods according to the merchnat's configuration. List with payment types: [CARD, CARD_TOKEN, GOOGLE_PAY, APPLE_PAY, BLIK_CODE, BLIK_TOKEN, PAY_BY_LINK, SHOPPING_LIMIT, DEFERRED_PAYMENT, CASH_ON_DELIVERY]

object

Y

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

delivery

Object intended to transfer information related to delivery methods preferred for the given basket

array

Y

 

delivery.delivery_type

Delivery method.. Enum:[APM, COURIER]. 

APM – parcel locker device, COURIER – Inpost courier

string

Y

"delivery_type":"APM"

delivery.delivery_date

Suggested delivery date

string($date-time)

Y

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

delivery.delivery_options

Object intended to transfer additional description of the delivery. Currently two additional delivery options available:

PWW – parcel on weekend

COD – payment at delivery. When for a given basket the payment_type is CASH_ON_DELIVERY, it is required to enter COD as the additional delivery option

 

 array

O

 

delivery.delivery_options.delivery_name

Name of additional delivery option

string

Y

"delivery_name": "Paczka w Weekend"

delivery.delivery_options.delivery_code_value

Additional delivery option code. Currently available, two codes:

PWW – parcel on weekend

COD – payment at delivery

 

string

Y

"delivery_code_value": "PWW"

delivery.delivery_options.delivery_option_price

Object intended to transfer information related to the cost of additional delivery options

object

Y

 

delivery.delivery_options.delivery_option_price.net

Net price

Number ($decimal)(10,2)

 

Y

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

delivery.delivery_options.delivery_option_price.gorss

Gross Price (net + VAT)

Number ($decimal)(10,2)

 

Y

delivery.delivery_options.delivery_option_price.vat

VAT

Number ($decimal)(10,2)

 

Y

delivery.delivery_price

Object intended to transfer information related to the cost of delivery

object

Y

 

delivery.delivery_price.net

Net price

Number ($decimal)(10,2)

 

Y

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

delivery.delivery_price.gorss

Gross Price (net + VAT)

Number ($decimal)(10,2)

 

Y

delivery.delivery_price.vat

VAT

Number ($decimal)(10,2)

 

Y

delivery.free_delivery_minimum_gross_price

The minimum basket value from which the delivery cost will be PLN 0

Number ($decimal)(10,2)

 

O

"free_delivery_minimum_gross_price": "100.00"

delivery.estimate_delivery_time

Functionality using the object will be available in subsequent versions of the application

Object used to provide information about the estimated delivery time in the event that the customer orders goods within a specified time.

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

Message presented to the customer in application

string

Y

delivery.estimate_delivery_time.days_available

Days of the week on which the message is presented

array

O

delivery.estimate_delivery_time.start_hour

The time from which the message is presented

string

O

delivery.estimate_delivery_time.end_hour

The time until which the message is presented

string

O

promo_codes

List of promotional codes applied for the basket

array

O

promo_codes.name

Code name. In the app's next version the field not required

string

Y

"name ": "Promotion 5%"

promo_codes.promo_code_value

Promotion code

string

Y

"promo_code_value": "INPOST10"

promo_codes.regulation_type

Specifies the type of regulation or restriction that the promotional code is subject to.
NOTE:  If the promo code is regulated by the Omnibus Directive then pass "OMNIBUS".

string

O

"regulation_type": "OMNIBUS"

promotions_available

An object used to provide a list of available promotions for the cart.

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

Code type:
Enum:[ MERCHANT, ONLY_IN_APP ]
 
MERCHANT -  code available in the merchant store and InPost Pay app (KOD SKLEPU)

ONLY_IN_APP - code available only in InPost Pay app (TYLKO W APCE).

string 

Y

promotions_available.promo_code_value

Code value e.g. DOSTAWA

string 

Y

promotions_available.description

Code description

Max: 60 characters

string 

Y

promotions_available.start_date

Start date from which the code is valid

string($date-time)

O

promotions_available.end_date

End date until which the code is valid

string($date-time)

O

promotions_available.priority

Code priority
Priority is used to determine the order in which codes are presented in the cart details (the lowest value has the highest priority).

integer

O

promotions_available.details

Code details

object

Y

promotions_available.details.link

Link to code information details on the merchant's website

string 

Y

products

List for providing information of the products in the basket

array

Y

 

products.product_id

Product ID assigned by the merchant

string

Y

"product_id": 26

products.product_category

Product category assigned by the merchant

string

O

"product_category":20

products.ean

Ean

string

O

"ean":"0"

products.product_name

Product name

string

Y

"product_name": "washpapa backpack"

products.product_description

Product description

string

O

"product_description": "  \r\n\r\nSometimes you just want to leave everything, pack your bags and go to Bieszczady? It's a good plan for holidays. And during the year, simply discover your city again.\r\n\r\ Exploration cannot be successful without a reliable backpack with foldable closings and made of high quality materials, such as our.\r\n\r\nThe cotton straps ensure the convenience of carrying, and washpapa will express your devotion to the nature. Remember! Behind each adventure, there is a good backpack."

products.product_link

Link to the product on the merchant's website

string

O

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

products.product_image

Link to a photograph of the product. Formats preferable: png, jpg (recommendation: png without background)

string

O

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

Formats preferable: png, jpg (recommendation: png without background)

products.additional_product_images

Object to pass additional product images (list)

object

O

-

products.additional_product_images.small_size

Product image.
Preferred size 360 x 352

string

Y

-

products.additional_product_images.normal_size

Product image.
Preferred size 360 x 504

string

Y

-

products.base_price

Product's base price

object

Y

 

products.base_price.net

Net price

Number ($decimal)(10,2)

Y

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

products.base_price.gross

Gross Price (net + VAT)

Number ($decimal)(10,2)

Y

products.base_price.vat

VAT

Number ($decimal)(10,2)

Y

products.promo_price

Promotional price of the product

object

O

 

products.promo_price.net

Net price

number ($decimal) (10,2)

Y

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

products.promo_price.gorss

Gross Price (net + VAT)

number ($decimal) (10,2)

Y

products.promo_price.vat

VAT

Number ($decimal)(10,2)

Y

products.lowest_price

Object intended to transfer the lowest price of the product over the previous 30 days. Required in order to handle the Omibus directive. Object required to be transferred if the product's promotional price was provoded (obiekt promo_price).

object

O

 

products.lowest_price.net

Net price

number ($decimal) (10,2)

Y

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

products.lowest_price.gorss

Gross Price (net + VAT)

number ($decimal) (10,2)

Y

products.lowest_price.vat

VAT

number ($decimal) (10,2)

Y

products.quantity

Object for reporting the product quantity

object

Y

 

products.quantity.quantity

product quantity 

number ($decimal)

Y

"quantity":1

products.quantity.quantity_type

Type quantity. Available values: [DECIMAL, INTEGER]

If the quantity_type of the product is INTEGER, then the Merchant provides the price for 1 piece. If the quantity_type of the product is DECIMAL, then the Merchant provides the price for the product quantity selected.

·       Example 1) We have 5 pcs of shirts 10 PLN a piece. In such a case, the quantity_type, is INTEGER and the product's price is PLN 10.

·       Example 2) We have 0.35 kg of flour, costing PLN 5. In such a case, the quantity_type, is DECIMAL and the product's price is PLN 5.

string

Y

"quantity_type":"INTEGER"

products.quantity.quantity_unit

Quantity unit of the product

string

O

"quantity_unit":"pcs"

products.quantity.available_quantity

The quantity available at the store

number ($decimal)

O

"available_quantity":26

products.quantity.min_quantity 

The minimum number of the product a Customer can order e.g. at one order

number ($decimal) 

 

"min_quantity": 2

products.quantity.max_quantity

The maximum number of the product a Customer can order e.g. at one order

number ($decimal)

O

"max_quantity":26

products.product_attributes

Object intended to determine the product's attributes

array

O

 

products.product_attributes.attribute_name

Attribute name

string

Y

"product_attributes ": [{ "attribute_name ": "Dimensions/Capacity", "attribute_value ":"54 cm x 38 cm x 10 cm "}, { "attribute_name ": "Material", "attribute_value": "Washable paper standard + kodura + woven cotton straps"}]

products.product_attributes.attribute_value

Attribute value

string

Y

products.delivery_product

An object used to provide information about available delivery methods for a product.

If there is no delivery_product object, it means that delivery is available in all types.

array

O

-

products.delivery_product.delivery_type

Delivery type

string

O

-

products.delivery_product.if_delivery_available

A flag indicating whether the delivery type is available.

boolean

O

-

related_products

Object intended to transfer the list of products suggested for a given basket that the customer can add from the Inpost Pay app level

array

O

 

related_products.product_id

Product ID assigned by the merchant

string

Y

"product_id": 26

related_products.product_category

Product category assigned by the merchant

string

O

"product_category":20

related_products.ean

Ean

string

O

"ean":"0"

related_products.product_name

Product name

string

Y

"product_name": "washpapa backpack"

related_products.product_description

Product description

string

O

"product_description": "  \r\n\r\nSometimes you just want to leave everything, pack your bags and go to Bieszczady? It's a good plan for holidays. And during the year, simply discover your city again.\r\n\r\ Exploration cannot be successful without a reliable backpack with foldable closings and made of high quality materials, such as our.\r\n\r\nThe cotton straps ensure the convenience of carrying, and washpapa will express your devotion to the nature. Remember! Behind each adventure, there is a good backpack."

related_products.product_link

Link to the product on the merchant's website

string

O

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

related_products.product_image

Link to a photograph of the product. Formats preferable: png, jpg (recommendation: png without background)

string

 O

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

Formats preferable: png, jpg (recommendation: png without background)

related_products.additional_product_images

Object to pass additional product images (list)

object

O

-

related_products.additional_product_images.small_size

Product image. Preferred size 360 x 352

string

Y

-

related_products.additional_product_images.normal_size

Product image. Preferred size 360 x 504

string

Y

-

related_products.base_price

Product's base price

object

Y

 

related_products.base_price.net

Net price

number ($decimal) (10,2)

 

Y

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

related_products.base_price.gross

Gross Price (net + VAT)

number ($decimal) (10,2)

Y

related_products.base_price.vat

VAT

number ($decimal) (10,2)

Y

related_products.promo_price

Promotional price of the product

object

O

 

related_products.promo_price.net

Net price

number ($decimal) (10,2)

Y

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

related_products.promo_price.gross

Gross Price (net + VAT)

number ($decimal) (10,2)

Y

related_products.promo_price.vat

VAT

number ($decimal) (10,2)

Y

related_products.lowest_price

Object intended to transfer the lowest price of the product over the previous 30 days. Required in order to handle the Omibus directive. Object required to be transferred if the product's promotional price was provoded (obiekt promo_price).

object

O

 

related_products.lowest_price.net

Net price

number ($decimal) (10,2)

Y

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

related_products.lowest_price.gorss

Gross Price (net + VAT)

number ($decimal) (10,2)

Y

related_products.lowest_price.vat

VAT

number ($decimal) (10,2)

Y

related_products.quantity

Object for reporting the product quantity

object

Y

 

related_products.quantity.quantity

product quantity 

number ($decimal)

 

Y

"quantity":1

related_products.quantity.quantity_type

Type quantity. Available values: [DECIMAL, INTEGER]

 

string

Y

"quantity_type":"INTEGER"

related_products.quantity.quantity_unit

Quantity unit of the product

string

O

"quantity_unit":"pcs"

related_products.quantity.available_quantity

The quantity available at the store

number ($decimal)

 

O

"available_quantity":26

related_products.quantity.min_quantity 

The minimum number of the product a Customer can order e.g. at one order

number ($decimal) 

"min_quantity":2 

related_products.quantity.max_quantity

The maximum number of the product a Customer can order e.g. at one order

number ($decimal)

 

O

"max_quantity":26

related_products.quantity.quantity_jump

The quantity jump value in case of increase/decrease of product quantity by customer (e.g. 0.1 or 0.5 or 0.01)

number ($decimal)    

O

"quantity_jump": 0.5

related_products.product_attributes

Object intended to determine the product's attributes

array

O

 

related_products.product_attributes.attribute_name

Attribute name

string

Y

"product_attributes ": [{ "attribute_name ": "Dimensions/Capacity", "attribute_value ":"54 cm x 38 cm x 10 cm "}, { "attribute_name ": "Material", "attribute_value": "Washable paper standard + kodura + woven cotton straps"}]

related_products.product_attributes.attribute_value

Attribute value

string

Y

 

related_products.delivery_related_products

An object used to provide information about available delivery methods for a product.

If there is no delivery_product object, it means that delivery is available in all types.

array

O

 

related_products.delivery_related_products.delivery_type

Delivery type

string

O

 

related_products.delivery_related_products.if_delivery_available

Flag indicating whether the delivery type is available.

boolean

O

 

related_products.delivery_related_products.if_delivery_free

Object informing whether the customer will receive free shipping after adding the suggested product to the cart

If if_delivery_free= true is on a given suggested product, the customer will be presented with an appropriate message on that product.

boolean

O

 

consents

Object intended to transfer the list of consents for a given basket
Maximum number of consents for a basket: 10

array

 Y

 

consents.consent_id

Consent IDs assigned by the merchant

string

 Y

"consent_id":3

consents.consent_link

The link which redirects to the full content of a consent eg. to the merchant's website

string

 Y

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

consents.label_link

Label to the link passed in consent_link

string

O

"label_link": "Regulaminu",

consents.additional_consent_links

An object used to provide an additional link to the consent

object

O

 

consents.additional_consent_links.id

Consent IDs assigned by the merchant

string

O

"id": "0"

consents.additional_consent_links.consent_link

The link which redirects to the full content of a consent eg. to the merchant's website

string

O

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

consents.additional_consent_links.label_link

Label to the link passed in consent_link

string

O

"label_link": "Polityką prywatności"

consents.consent_description

Description of the consent, not more than 500 characters

string

 Y

consent_description":"zwroty i reklamacje"

consents.consent_version

Consent version 

string

 Y

"consent_version":1

consents.requirement_type

Consent type. Available values: Enum: [OPTIONAL, REQUIRED_ONCE, REQUIRED_ALWAYS]

OPTIONAL – optional consent

REQUIRED_ONCE - required once. A consent of such a type and version will be included in the user's profile, with information that the customer has consented, and, in the case of further baskets, will be checked by default.

REQUIRED_ALWAYS - required always. A consent of such a type and version is saved to the user's profile. The customer must consent each time.

string

 Y

"requirement_type":"OPTIONAL"

merchant_store

Object used to pass the customer's shopping cart cookie in order to enable redirection from the application to the shopping cart in the merchant's store.

object

O

-

merchant_store.url

Url of the merchant shop

string

Y

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

merchant_store.cookies

Object used to pass the cookie

array

Y

-

merchant_store.cookies.domain

The cookie domain represented by pair 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

Cookie expiration time or maxAge

string($date-time)

O

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

merchant_store.cookies.secure

Cookie security information

boolean

O

"secure": false,

merchant_store.cookies.http_only

Cookie http information

boolean

O

"http_only": true,

merchant_store.cookies.same_site

Cookie sameSite information [ STRICT, LAX, NONE ]

string

O

"same_site": "LAX",

merchant_store.cookies.priority

Cookie priority [ LOW, MEDIUM, HIGH ]

string

O

"priority": "MEDIUM",

merchant_store.cookies.max_age

Cookie max age

integer($int32)

O

"max_age": 0

 

Response

Field name

Description

Type

Requirement status

Additional remarks

inpost_basket_id

The identifier of the basket assigned by the Inpost Pay app

The data piece not to be used by the merchant. ID additionally used by the widget in order to make it possible to correctly redirect from the widget level to the Inpost Pay app

string

Y

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

 


PUT /v1/izi/basket/{basket_id}

Example 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": [], "variants": [] } ], "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" } ], "variants": [] }, { "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": [], "variants": [] } ], "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"

Example implementation in PHP

  • Entering the code -

In the implementacjaKlienta.txt file, only the putBasket function was added.

/** * 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 ); } }
  • SDK.zip contains a code which includes the object of the request and of the endpoint response.