- Created by Michał Machowski , last modified by Joanna Wołosz on Aug 07, 2023
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 27 Next »
Wtyczka InPost Pay umożliwia parowania koszyków zakupowych w sklepach internetowych Merchantów z aplikacją InPost. Warstwa frontend dostarczona jest w formie wtyczki JavaScript do osadzenia na stronie oraz niniejszej dokumentacji.
Do poprawnej integracji wymagane jest dostarczenie warstwy Merchant Backend API, osadzenie html wtyczki, oraz sterowanie stanem warstwy frontend poprzez dostarczenie opisanych poniżej metod.
Lista metod do zaimplementowania przez backend merchanta w celu używania wtyczki:
● iziGetBindingData
● iziGetIsBound
● iziGetOrderComplete
● iziBindingDelete
● iziCanBeBound
● iziAddToCart
● iziGetPayData
● iziMobileLink
● iziGetBrowserData
Lista eventów które należy zaimplementować w celu używania wtyczki:
● inpost-update-count
Na tej stronie
Pobranie skryptu
Skrypt wtyczki znajduje się pod adresem: https://izi.inpost.pl/inpostizi.js
Osadź go na swojej stronie przez:
<script src="https://izi.inpost.pl/inpostizi.js"></script>
Osadzenie html
W celu wyświetlenia widgetu należy osadzić w html poniższy kod:
<inpost-izi-button name="" masked_phone_number="" data-product-id="" language="pl" variant="primary" basket="true" dark_mode="true" count="5" binding_place="PRODUCT_CARD"></inpost-izi-button>
Parametr | Opis |
---|---|
| Imię kupującego, wypełnij jeśli koszyki są sparowane. |
| ID produktu, wymagane jeśli przy parowaniu chcesz dodać produkt o podanym id do koszyka. |
| Zamaskowany numer telefonu, wymagane jeśli koszyki są sparowane. |
| Wariant wyglądu przycisku. Do wyboru “ |
| Określa czy przycisk znajduje się na stronie koszyka. Dopuszczalna wartość “ |
| Określa tryb wyświetlania. Dopuszczalna wartość “ |
| Określa inicjalną liczbę produktów do wyświetlenia w koszyku. |
| Określa miejsce, gdzie następuje bindowanie. Informacja ta trafia do
|
Wyświetlanie w zależności od parametrów bindowania
O stanie bindowania informuje nas parametr basket_lnked dostępny w API InPost. Jest to jedyny parametr wpływający na to w jaki sposób należy wyświetlić HTML widgetu. Jeśli basket_linked=true to w HTML umieszczamy parametr masked_phone_number.
iziGetBindingData (deprecated)
Metoda zostanie wkrótce usunięta. Prosimy o implementację iziGetPayData.
Pobiera dane potrzebne do parowania koszyków. Parametry prefix
oraz phoneNumber
są
nieobowiązkowe. Wywołania z 1 parametrem służą do pozyskania kodu qr. Wywołania z
wszystkimi 3 parametrami służą do parowania przy pomocy numeru telefonu.
Parametry |
|
---|---|
Zwraca | Promise |
Wartość | Dane z zapytania backend |
function iziGetBindingData(id, prefix, phoneNumber, bindingPlace) { return Promise.resolve({ qr_code: 'string', deep_link: 'string', deep_link_hms: 'string', }); }
iziGetPayData
Pobiera dane potrzebne do parowania koszyków. Parametry prefix oraz phoneNumber są nieobowiązkowe. Wywołania z 1 parametrem służą do pozyskania kodu qr. Wywołania z wszystkimi 3 parametrami służą do parowania przy pomocy numeru telefonu.
Uwaga!
Dla sytuacji, w której backend ma następujące dane:
browser_trusted = true
basket_linked = false
Backend powinien wykryć dostępny w Cookie klucz BrowserId i wykonać Basket PUT z obecnym BrowserId zamiast Binding GET.
W tej sytuacji nie wystąpi request zwrotny confirmation a poprawnymi danymi dla iziGetPayData będzie pusty array.
Parametry |
|
Zwraca | Promise |
Wartość | dane z zapytania backend |
function iziGetPayData(prefix, phoneNumber, bindingPlace) { return Promise.resolve({ qr_code: 'string', deep_link: 'string', deep_link_hms: 'string', }); }
iziGetBrowserData
Funkcja zwraca informacje o przeglądarce w postaci obiektu lub zakodowanego Base64 stringu.
* możemy np. wykorzystać tą funkcję w iziGetPayData
by przekazać dane przeglądarki jako dodatkowy parametr do backend
Parametry |
|
Zwraca | Obiekt zawierający dane przeglądarki lub zakodowany Base64 string z danymi przeglądarki. |
Wartość |
|
const browserData = window.iziGetBrowserData({ base64: true });
iziGetIsBound
Wywoływana po wyświetleniu qr code bądź deep link w celu sprawdzenia, czy parowanie przebiegło pomyślnie. Po stronie developera należy obsłużyć komunikację tak, żeby nie obciążać zbytnio serwera przez wykorzystanie websocket bądź long pooling.
Parametry | brak |
---|---|
Zwraca | Promise |
Wartość | Dane otrzymane od InPost Pay na zapytanie |
function iziGetIsBound() { return Promise.resolve({ "phone_number": { "country_prefix": "string", "phone": "string" }, "browser": { "browser_trusted": boolean, "browser_id": "string", }, "name": "string", "surname": "string" "masked_phone_number": "string" }); }
iziGetOrderComplete
Metoda wywołana po sparowaniu koszyka i na każdej stronie z koszykiem już sparowanym. Nasłuchuje na zakończenie zamówienia w aplikacji bądź odświeżenia strony. W odpowiedzi dostajemy url strony typu thank you page z podziękowaniem za zakupy bądź informację o odświeżeniu strony. Backend powinien reagować na eventy z aplikacji i wysyłając tylko akcje jak refresh czy redirect.
Uwaga!
W celu wyświetlenia podziękowania InPost na stronie docelowej musi zostać osadzony <inpost-thank-you />
Parametry | brak |
---|---|
Zwraca | Promise |
Wartość | { action: ‘redirect’ | ‘refresh’ redirect?: ‘url’ } |
function iziGetOrderComplete() { return Promise.resolve({ action: 'string' redirect: 'string' }) }
iziBindingDelete
Metoda wywoływana przy usuwaniu parowania.
Parametry | brak |
---|---|
Zwraca | Promise |
Wartość | void |
function iziBindingDelete() { return Promise.resolve(); }
iziCanBeBound
Metoda określa czy produkt może zostać dodany do koszyka i sparowany. Wykorzystywane przy produktach wariacyjnych w celu określenia czy parametry produktu zostały już określone.
Parametry |
|
---|---|
Zwraca | Bool |
Wartość | true || false |
function iziCanBeBound(productId) { return true || false; }
iziAddToCart
Metoda wykorzystywana do dodania produktu po kliknięciu w widget. Produkt zostanie dodany tylko wtedy, kiedy parametr data-product-id"
jest wypełniony.
Parametry |
|
---|---|
Zwraca | void |
Wartość |
async function iziAddToCart(id) { return void; }
inpost-update-count
Event który pozwala nam na zaktualizowanie liczy produktów na przycisku. Event powinien być wywoływany w momencie dynamicznego dodawania produktów do koszyka (bez odświeżania strony)
Parametry | { detail: count } // int |
---|---|
Zwraca | |
Wartość | { detail: 1 } |
Poniżej przykład implementacji:
jQuery(document.body).on(eventName, () => { const countContainer = document.getElementById(elementID); if (!countContainer) return; const count = parseInt(countContainer.textContent.trim(), 10); if (isNaN(count)) return; const event = new CustomEvent("inpost-update-count", { detail: count }); const iziButtonsCollection = Array.from(document.getElementsByTagName("inpost-izi-button")); iziButtonsCollection.forEach(el => el.dispatchEvent(event)); });
iziMobileLink
Metoda wykorzystywana do pobierania deeplinku (dla już sparowanego koszyka) wykorzystywana do przechodzenia do aplikacji mobilnej.
Link powinien zostać wygenerowany po stronie backendu merchanta.
InPost_basket_id otrzymujemy po sparowaniu z BA więc powinniśmy zachować to id na czas sparowanego koszyka
Parametry | brak |
---|---|
Zwraca | Promise |
Wartość | { |
function iziMobileLink() { return Promise.resolve({ link: 'string' }) }
SPA
Wtyczka przygotowana została z myślą o użyciu z aplikacjami SPA. W celu integracji sklepu z InPost Pay należy obsłużyć inicjowanie przycisku Pay w cyklu życia aplikacji.
Skrypt po pierwszym załadowaniu automatycznie inicjuje wszystkie znalezione w kodzie instancje <inpost-izi-button />
. W celu inicjowania widgetu po aktualizacji DOM należy użyć metody:
window.handleInpostIziButtons();
Poniżej przykład dla komponentu ReactJs:
import React, { useEffect } from "react"; import { useLocation } from "react-router-dom"; export...= ({ children }) => { const location = useLocation(); useEffect(() => { window.handleInpostIziButtons(); }, [location]); return <>{children}</>; };
Istnieje tag wyświetlający podziękowanie za zakupy <inpost-thank-you /> . W celu inicjowania podziękowania po aktualizacji DOM należy użyć metody: window.handleThankYouNode();
- No labels