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:

  • Podstawowy scenariusz wykorzystania InPost Pay przez użytkownika końcowego przebiega następująco:

    1. Użytkownik wyświetla stronę www merchanta (w wersji mobilnej, jak i desktop), przechodząc na kartę wybranego produktu

    2. Użytkownik wybiera przycisk „Kup z InPost Pay”

    3. 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.

    4. Aplikacja InPost Mobile wyświetla komunikat push: Pojawiła się nowy koszyk do opłacenia.

    5. Użytkownik otwiera aplikacje InPost Mobile na swoim telefonie na wybranym koszyku.

    6. Aplikacja automatycznie podstawia wybrane formy dostawy oraz domyślną formę płatności na podstawie profilu użytkownika w InPost Mobile.

    7. Po wybraniu akcji „Kupuję i płacę”  InPost Pay tworzy u merchanta zamówienie w oparciu o aktualny koszyk.

    8. Użytkownik dokonuje płatności w aplikacji InPost Mobile

    9. Informacja o wykonaniu płatności przekazywana jest do merchanta

    10. Merchant tworzy i wysyła przesyłkę w standardowy sposób.

    11. 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)

  • W przypadku gdy użytkownik dokona zmian w synchronizowanym koszyku na stornie merchanta (zmianie liczby sztuk, doda nowe produkty do koszyka), merchant przesyła zmiany do InPost Pay. InPost Mobile odświeża użytkownikowi ekran z koszykiem w aplikacji mobilnej.
  • 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:

    1. Recipient receives signed request with headers:

      1. x-signature - signature

      2. x-signature-timestamp - ISO8601 datetime string in UTC timezone with time of signature generation ex. 2023-05-11T15:02:23.429Z

      3. x-public-key-ver - version of keys used to generate signature

      4. x-public-key-hash - SHA-256 hash of public key used to generate signature

    2. Recipient checks if already have cached public key with given version

      1. key present in cache:

        • recipient checks if public key hash matches calculated as: SHA-256 hash from public_key_base64 field. if verification is:

          • positive - continue

          • negative - reject request

      2. 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

    3. Prepare base64 string that consists of DIGEST,external-merchant-id,x-public-key-ver,x-signature-timestamp. Values are separated with commas

      • x-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 as merchant_external_id field

      • DIGEST: base64 form of SHA-256 hash (Message Digest) generated from request body. Use empty byte array as request body if body is missing.

    4. Decode base64 signature and verify it with the SHA256withRSA algorithm for the given public key and signature string. If verification:

      1. positive - continue

      2. negative - reject request

    5. Recipient compares x-signature-timestamp value to current time. If difference is:

      1. less or equal to 240s - continue

      2. 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) where message_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 - field merchant_external_id, $KEY_VERSION value is from header x-public-key-ver and $SIGNATURE_TIMESTAMP value is from x-signature-timestamp

    • openssl enc -base64 -d -A -in request_signature -out signature.bin where request_signature is a file with value from header x-signature

    • openssl dgst -sha256 -verify pubkey.pem -signature signature.bin signature_string should print Verified 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

    u różnych merchantów

    przez użytkownika w aplikacji InPost Mobile.

    InPost

    Moblie

    Mobile

    Obecnie

    działająca

    funkcjonująca aplikacja

    InPost Moblie

    InPostu, pozwalająca na śledzenie, nadawanie i

    nadawanie

    zwrot przesyłek.

    Merchant

    Sklep/platforma prowadząca sprzedaż produktów w Internecie, zintegrowana z InPost Pay.

    Koszyk

    Jedne

    Jeden lub kilka produktów, które Użytkownik wybrał na stronie

    merchanta

    Merchanta. Zawartość koszyka jest przekazywana do InPost Pay.

    Użytkownik

    Użytkownik końcowy

    wykonujący

    dokonujący zakupu na stornie

    merchanta

    Merchanta i posiadający aplikacje InPost

    Moblie

    Mobile.

    Bank

    Aion Bank - operator płatności.

    InPost Pay Widget

    Element osadzany na

    stornie

    stronie www Merchanta, pozwalający na wybranie

    opcje

    opcji Kup z InPost Pay oraz powiązanie

    komputera

    przeglądarki z aplikacją

    InPost Moblie.

    Zamówienie

    Obiekt powstający z koszyka po rozpoczęciu jego zakupu przez Użytkownika

    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ącej

    działająca na konkretnym urządzeniu, dodana do zaufanych do aplikacji

    IM

    InPost Mobile. Tylko zaufana przeglądarka może dodawać produkty do koszyka w InPost

    Moblie

    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

    Akceptacja regulaminu usługi InPost Pay oraz podanie Imienia, nazwiska i adresu email dla klientów detalicznych (osoby fizyczne, a nie firmy).

    W tym rozdziale:

    Child pages (Children Display)
    alltrue