Przejdź do głównej zawartości

Pobieranie koszyka

Wywołanie pobierania koszyka jest wykonywane, gdy użytkownik OpenApp chce dokonać zakupu i skanuje kod QR w aplikacji OpenApp. Widoczne jako krok 4 na diagramie sekwencji:

Żądanie

Gdy klient skanuje kod QR, OpenApp pobiera koszyk. Jest to żądanie HTTP GET z serwera OpenApp do endpointu skonfigurowanego w panelu merchanta, z parametrem basketId równym wartości data-basket ustawionej w integracji frontendu sklepu:

GET <basket-url>?basketId=<data-basket>

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

GET https://shop.example.com/api/openapp/basket?basketId=6548654ef654d654aa

Odpowiedź

W odpowiedzi sklep powinien przesłać zawartość koszyka i skonfigurowane opcje dostawy. W poniższym przykładzie użytkownik ma w koszyku 2 sztuki „Superb product" w cenie 70,00 zł każda. Ponieważ zastosował kod rabatowy -10 zł, łączna cena wynosi 130 zł. Zamówienie może zostać dostarczone do Paczkomatu InPost bezpłatnie lub kurierem za dopłatą 10 zł.

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

Zasady produktów (opcjonalne)

Opcje policies na poziomie produktu są opcjonalne i mogą być przesyłane tylko gdy jest to wymagane przez merchanta. Na przykład, jeśli produkt jest przeznaczony wyłącznie dla dorosłych, merchant może dołączyć zasadę wiekową:

  • type: AGE
  • criteria.minAge: 18

Jeśli dodatkowe ograniczenia produktu nie są potrzebne, policies można pominąć.

expiresAt

Ważność koszyka określana jest w polu expiresAt. OpenApp pozwala użytkownikowi złożyć zamówienie do tego momentu (krok 7 na diagramie). Po otrzymaniu zamówienia od użytkownika OpenApp autoryzuje płatność, co może trwać maksymalnie 3 minuty. Tak więc OpenApp wyśle zamówienie do merchanta najpóźniej 3 minuty po czasie określonym w expiresAt. Jeśli przez 5 minut nie uda się nawiązać komunikacji z backendem sklepu (łącznie maksymalnie 8 minut od expiresAt), OpenApp anuluje transakcję i dokonuje zwrotu płatności użytkownikowi.

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