Versions Compared
Key
- This line was added.
- This line was removed.
- Formatting was changed.
Koncepcja rozwiązania
Rozwiązanie InPost Pay pozwala na finalizację procesu zakupu (checkout) w aplikacji mobilnej InPost Mobile w oparciu o integrację z różnymi platformami/sklepami internetowymi.
Rozwiązanie adresuje podstawowe problemy, występujące na rynku e-commerce:
Zakupy w trybie gościa, bez konieczności zakładania konta na wielu sklepach
Brak konieczności uzupełniania danych dostawy/ faktury itp.
Skrócenie czasu potrzebnego od wyświetlenia produktu do finalizacji zakupu
Zmniejszenie liczby porzuconych koszyków
W skład integracji Merchant – Inpost InPost Pay wchodzą elementy:
https://dokumentacja-inpost.atlassian.net/wiki/spaces/PL/pages/130023427/Widget+Backend – widget pozwalający na integrację stron www (frontend) merchantów z Merchantów z backend platformy Merchanta oraz udostępniający na backend Merchanta metody Merchant Backend API, które “wołała będzie” usługa InPost Pay.
InPost Pay (Basket App) – moduł udostępniający API, pozwalający na wymianę informacji o koszyku i realizacji zamówienia
Podstawowy scenariusz wykorzystania InPost Pay przez użytkownika końcowego przebiega następująco:
Użytkownik wyświetla stronę www merchanta (w wersji mobilnej, jak i desktop), przechodząc na kartę wybranego produktu
Użytkownik wybiera przycisk „Kup z InPost Pay”
Produkt dodaje się do koszyka u merchanta. Merchant przesyła informacje o koszyku do InPost Pay (Basket App). Koszyk zostaje oznaczony jako synchronizowany z InPost Pay.
Aplikacja InPost Mobile wyświetla komunikat push: Pojawiła się nowy koszyk do opłacenia.
Użytkownik otwiera aplikacje InPost Mobile na swoim telefonie na wybranym koszyku.
Aplikacja automatycznie podstawia wybrane formy dostawy oraz domyślną formę płatności na podstawie profilu użytkownika w InPost Mobile.
Po wybraniu akcji „Kupuję i płacę” InPost Pay tworzy u merchanta zamówienie w oparciu o aktualny koszyk.
Użytkownik dokonuje płatności w aplikacji InPost Mobile
Informacja o wykonaniu płatności przekazywana jest do merchanta
Merchant tworzy i wysyła przesyłkę w standardowy sposób.
Merchant przekazuje do InPost Pay informacji przy pomocy jakiej przesyłki zrealizował dane zamówienie.
Integracja z InPost Pay odbywa się „przez koszyk”. Produkty, które użytkownik chce kupić przy pomocy Inpost Pay, dodawane są do koszyka u merchanta. Merchant przekazuje informacje o zmianie koszyka do InPost Pay. Przekazywanie informacji odbywa się tylko dla takich koszyków, dla których użytkownik wybrał chociaż raz akcje Kup z InPost Pay (koszyk jest synchronizowany z InPost Pay)
Integracja zakłada, że użytkownik w InPost Mobile może wykonać określone akcje na koszyku np. zmiana ilości sztuk, wprowadzenie kodu rabatowego itp. Każdorazowo taka informacja jest przekazana do merchanta. Merchant po przekalkulowaniu zawartość koszyka odsyła go InPost Pay.
Przed dokonaniem zakupu, użytkownik akceptuje regulaminy merchanta.
Użytkownik może opłacić zsynchronizowany koszyk na stronie merchanta. W takim przypadku zamówienie nie jest realizowane przez InPost Pay. Merchant przesyła informacje do InPost Pay o finalizacji koszyka w innym kanale.
Info |
---|
Integracja z InPost Pay, nie wpływa na obecnie wykonaną przez merchanta integrację z systemami InPost w zakresie generowania przesyłek. |
Na tej stronie
Table of Contents |
---|
Nagłówki
Do wszystkich usług wołanych przez Merchantów w Basket-app zostają dodane poniższe nagłówki (headery). Obecnie są one opcjonalne. Docelowo Basket-app będzie miał ustawione te nagłówki jako wymagalne
x-signature
- signature
x-signature-timestamp
- ISO8601 datetime string in UTC timezone with time of signature generation ex. 2023-05-11T15:02:23.429Z
x-public-key-ver
- version of keys used to generate signature
x-public-key-hash
- SHA-256 hash of public key used to generate signature
Algorytm weryfikacji sygnatury
Signature verification algorithm:
Recipient receives signed request with headers:
x-signature
- signaturex-signature-timestamp
- ISO8601 datetime string in UTC timezone with time of signature generation ex.2023-05-11T15:02:23.429Z
x-public-key-ver
- version of keys used to generate signaturex-public-key-hash
-SHA-256
hash of public key used to generate signature
Recipient checks if already have cached public key with given version
key present in cache:
recipient checks if public key hash matches calculated as:
SHA-256
hash frompublic_key_base64
field. if verification is:positive - continue
negative - reject request
key not present in cache:
obtain public key from
/v1/izi/signing-keys/public/{keyVersion
} or/api/v1/izi/signing-keys/public
and verify hash as above
Prepare base64 string that consists of
DIGEST,external-merchant-id,x-public-key-ver,x-signature-timestamp
. Values are separated with commasx-public-key-ver
,x-signature-timestamp
from headers, use empty value if header is missing.merchant_external_id
value comes from endpoints/v1/izi/signing-keys/public/{keyVersion
} and/v1/izi/signing-keys/public
asmerchant_external_id
fieldDIGEST
: base64 form ofSHA-256
hash (Message Digest) generated from request body. Use empty byte array as request body if body is missing.
Decode base64 signature and verify it with the
SHA256withRSA
algorithm for the given public key and signature string. If verification:positive - continue
negative - reject request
Recipient compares
x-signature-timestamp
value to current time. If difference is:less or equal to 240s - continue
bigger than 240s - reject request
Manual signature verification:
curl --location 'http://{basket-app-host}/basket-app/api/v1/izi/signing-keys/public/{keyVersion}'
replace {Unknown macro: { {keyVersion}}}with value from header:
x-public-key-ver
echo "$PUBLIC_KEY_BASE64" | openssl base64 -d -A | openssl rsa -pubin -inform DER -outform PEM -out pubkey.pem
replace$PUBLIC_KEY_BASE64
with value from field:public_key_base64
DIGEST=$(echo -n "$(<message_body)" | openssl dgst -sha256 -binary | openssl enc -base64 -A)
wheremessage_body
is a file with EXACT request body (without any additions, whitespaces etc.)echo -n "$DIGEST,$EXTERNAL_MERCHANT_ID,$KEY_VERSION,$SIGNATURE_TIMESTAMP" | openssl enc -base64 -A -out signature_string
where$EXTERNAL_MERCHANT_ID
value is from public key endpoint - fieldmerchant_external_id
,$KEY_VERSION
value is from headerx-public-key-ver
and$SIGNATURE_TIMESTAMP
value is fromx-signature-timestamp
openssl enc -base64 -d -A -in request_signature -out signature.bin
whererequest_signature
is a file with value from headerx-signature
openssl dgst -sha256 -verify pubkey.pem -signature signature.bin signature_string
should printVerified OK
Słownik pojęć
Termin | Definicja |
---|---|
InPost Pay | Całość rozwiązania IT, składającego się z kilku systemów obsługujących proces finalizacji zakupu |
przez użytkownika w aplikacji InPost Mobile. |
InPost |
Mobile | Obecnie |
funkcjonująca aplikacja |
InPostu, pozwalająca na śledzenie, nadawanie i |
zwrot przesyłek. | |
Merchant | Sklep/platforma prowadząca sprzedaż produktów w Internecie, zintegrowana z InPost Pay. |
Koszyk |
Jeden lub kilka produktów, które Użytkownik wybrał na stronie |
Merchanta. Zawartość koszyka jest przekazywana do InPost Pay. | |
Użytkownik | Użytkownik końcowy |
dokonujący zakupu na stornie |
Merchanta i posiadający aplikacje InPost |
Mobile. | |
Bank | Aion Bank - operator płatności. |
InPost Pay Widget | Element osadzany na |
stronie www Merchanta, pozwalający na wybranie |
opcji Kup z InPost Pay oraz powiązanie |
przeglądarki z aplikacją |
Zamówienie
InPost Mobile. Widget służy do parowania z wykorzystaniem numeru tel./QR lub szybkiego dodawania do koszyka InPost Pay dla zarejestrowanego użytkownika. | |
Zamówienie | Jest to koszyk, dla którego został rozpoczęty proces płatności. |
Zaufana/powiązana przeglądarka | Instancja przeglądarki WWW |
działająca na konkretnym urządzeniu, dodana do zaufanych do aplikacji |
InPost Mobile. Tylko zaufana przeglądarka może dodawać produkty do koszyka w InPost |
Mobile. |
Merchant onboarding
Integracja Merchanta z systemem InPost Pay. Process “założenia” Merchanta w systemach Aion na potrzeby procesowania płatności oraz Merchant Financing
InPost Mobile onboarding
Pobranie aplikacji InPost Mobile oraz zalogowanie się użytkownika do niej poprzez podanie i weryfikacje numeru teflonu.
InPost Pay onboarding
W tym rozdziale:
Child pages (Children Display) | ||
---|---|---|
|