- Created by Joanna Wołosz , last modified on Nov 06, 2024
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 4 Current »
Widget
Widget InPost Pay, to wtyczka JavaScript, która zostaje osadzona na stronie poprzez dodanie skryptu jak w poniższym przykładzie:
<html> <head> <script src="https://inpostpay-widget-v2.inpost.pl/inpostpay.widget.v2.js"/> </head> <body> <script type="application/javascript"> const widgetOptions = { merchantClientId: 'b73ca9fc-0123-4567-8912-5ac02c6af6e9', basketBindingApiKey: 'QdMW9xtB9POfNG7GiGIO4EFPEKSvzOuW', unboundWidgetClicked: (productId) => new Promise() }; const widget = InPostPayWidget.init(widgetOptions); </script> ... <inpost-izi-button data-product-id="123" binding_place="PRODUCT_CARD" variation="..." ></inpost-izi-button> ... </body>
Środowisko:
Sandbox - https://sandbox-inpostpay-widget-v2.inpost.pl/inpostpay.widget.v2.js
Prod - https://inpostpay-widget-v2.inpost.pl/inpostpay.widget.v2.js
Merchant Client Id jest wartością nadawaną przez InPost, w celu jej uzyskania należy wysłać zgłoszenie na adres integracjapay@inpost.pl.
Na tej stronie:
Informacje dotyczące użytkowania
Może istnieć tylko jedna instancja widgetu na stronę, ponieważ oferujemy tylko jeden rodzaj placeholderu, a widget nie może rozróżniać i stosować różnych konfiguracji.
Od merchanta zależy, kiedy zainicjować widget, w zależności od tego, kiedy placeholder widżetu zostanie dodany do DOM lub konfiguracja stanie się dostępna, więc można to zrobić na poziomie głównym (jak powyżej) lub można odłożyć i wywołać po niektórych akcjach asynchronicznych.
Opis działania widgetu:
Bezpośrednio po inicjalizacji widget pobierze swoją konfigurację z WidgetAPI dla danego merchantId.
Jeżeli
basketBindingApiKey
jest podany jako string lub niezdefiniowany, to widget wykona wywołanie do Widget API w celu uzyskania statusu powiązania koszyka.Jeżeli
basketBindingApiKey
jest dostarczony jako promise, to widget najpierw będzie oczekiwać na rozwiązanie promise, aby następnie wykonać połączenie do Widget API w celu uzyskania statusu powiązania koszyka.Gdy strona zostanie w pełni załadowana i zostanie wykonane wywołanie Widget API, wówczas widget sprawdzi, czy w DOM znajduje się jakikolwiek placeholder i wyrenderuje widget w odpowiednim stanie.
Specyfikacja
export type BasketBindingApiKey = undefined | string | Promise<string> export type WidgetBasketEvent = | 'basketDeleted' | 'basketProductChanged' | 'orderCreated' export type WidgetBasketEventHandler = ( event: WidgetBasketEvent, ) => boolean | Promise<boolean> export interface WidgetInitOptions { /** * Merchant Client Id. */ merchantClientId: string /** * Unique basket binding API key - it's obtained from InpostPay API. * If it's known at the page render: can be provided as string. * If it can be resolved during page load: can be a promise. * Otherwise: 'undefined', widget will assume that basket is not bound, because it can't check basket binding status without knowing api key. * And in such case, it's mandatory for 'unboundWidgetClicked' to return a 'apiKey', otherwise baskets can't be bound. */ basketBindingApiKey: BasketBindingApiKey /** * This callback function is mandatory for unbound basket and for binding_place=PRODUCT_CARD. * It'll be called to add the product to merchant's basket when user clicks on the widget. * @return promise with 'basketBindingApiKey' */ unboundWidgetClicked?: (productId?: string) => Promise<string> /** * Callback function to reflect basket updates on merchant's page. * If not provided or returning false - widget will refresh the entire page. * @return 'true' if widget should not refresh the page. */ handleBasketEvent?: WidgetBasketEventHandler /** * Widget-API base url used for frontend to API communication. * By default, https://api.inpost.pl will be used as a fallback. */ apiBaseUrl?: string /** * If set to true BrowserId will be persisted and read from localStorage. * If set to true the app will always try to open a https deep link, if false the deep link url * will be deducted based on the UserAgent. * Default: false */ webView?: boolean /** * Custom language. By default, widget will use browser's language and 'pl' as fallback */ language?: string } export interface InPostPayWidget { refresh: (options?: Partial<WidgetInitOptions>) => void } export interface InPostPayWidgetNamespace { init: (options: WidgetInitOptions) => InPostPayWidget } declare global { export interface Window { InPostPayWidget: InPostPayWidgetNamespace __INPOST_PAY_WIDGET__?: InPostPayWidget } } declare function initialiseInpostPayWidget( options: WidgetInitOptions, ): InPostPayWidget
Widget placeholder
Aby prawidłowo osadzić przyciski widgetu, poniższy kod powinien zostać umieszczony na stronie w odpowiednim miejscu (pod przyciskiem “Dodaj do koszyka” lub przy przejściu do zamówienia)
<inpost-izi-button data-product-id="" binding_place="" variation="" ></inpost-izi-button>
Placeholder obsługuje następujące parametry:
Parametr | Wymagany | Opis | Dodatkowe informacje |
---|---|---|---|
| Tak | możliwe wartości:
| |
| Tak, jeżeli binding_place=PRODUCT_CARD | ||
| Nie | Lista styli, tj. "dark primary size-m rounded" Domyślnie: "secondary size-l" | Dostępne style:
|
Diagramy sekwencji dla InPost Pay oraz Widget 2.0
W poniższych artykułach zostały zawarte diagramy sekwencji dla InPost Pay oraz Widget 2.0.
- No labels