Przejdź do głównej zawartości

Przeliczanie koszyka

Użytkownik może zmodyfikować koszyk w OpenApp, zmieniając ilość produktu lub dodając kod rabatowy. OpenApp zweryfikuje tę zmianę u merchanta, aby upewnić się, że jest ona prawidłowo zastosowana. Widoczne jako krok 8 na diagramie sekwencji:

Żądanie

OpenApp wykona żądanie HTTP POST do endpointu skonfigurowanego w panelu merchanta, ze zaktualizowanym koszykiem w treści żądania:

POST <recalculate-url>

Jeśli skonfigurowano adres https://shop.example.com/api/openapp/basket, żądanie wykonane przez OpenApp będzie wyglądać następująco:

POST https://shop.example.com/api/openapp/basket

Treść żądania zawiera koszyk użytkownika. Na przykład:

{
"requestId": "request-id",
"id": "basket-id",
"price": {
"currency": "PLN",
"discounts": [
{
"code": "new-discount-code-text"
}
]
},
"products": [
{
"ean": "12312",
"id": "id123",
"quantity": 3
}
],
"loggedUser": "user-id-from-webshop"
}

Odpowiedź

W odpowiedzi sklep powinien przesłać zawartość koszyka i dostępne opcje dostawy w takim samym formacie jak przy pobieraniu koszyka. Może się zdarzyć, że sklep nie będzie w stanie sprostać żądanej zmianie, na przykład z powodu niedostępności produktu w wymaganej ilości. W takim przypadku sklep powinien odpowiedzieć dostępną częścią koszyka oraz kodem błędu wskazującym problemy, aby OpenApp mógł wyświetlić te informacje użytkownikowi:

{
"id": "basket-id",
"expiresAt": "2022-03-23T21:00:00Z",
"price": {
"currency": "PLN",
"discounts": [
{
"code": "discount-code-text",
"value": 1000
}
],
"basketValue": 13000
},
"deliveryOptions": [
{
"key": "INPOST_APM",
"cost": 0
},
{
"key": "DPD_COURIER",
"cost": 1000,
"timing": "next business day"
}
],
"products": [
{
"ean": "12312",
"id": "id123",
"name": "Superb product",
"images": [
"http://cdn.merchant.com/static/products/id123/1",
"http://cdn.merchant.com/static/products/id123/2"
],
"quantity": 2,
"unitPrice": 7000,
"linePrice": 14000,
"originalUnitPrice": 7000,
"originalLinePrice": 14000,
"policies": [
{
"type": "AGE",
"criteria": {
"minAge": 18
}
}
]
}
],
"loggedUser": "user-id-from-webshop"
}

To jest przykład prostego koszyka. Pełny opis odpowiedzi koszyka zawiera zakładka Schemat powyżej.