Jak to działa - potwierdzenie płatności na innej stronie internetowej

0

Ostatnio przy robieniu płatności, np. na allegro, użytkownik jest proszony o zalogowanie się do swojego banku. Otwierasz więc przeglądarkę, nawet na innym urządzeniu, logujesz się i strona która o to poprosiła się sama odświeża jak się już do banku zalogujesz.

Jak to z grubsza działa?

8

Tak naprawdę to dużo zależy od bramki płatności. Ale w największym skrócie:

  1. Bank wystawia api: www.bank.com/api/payments oraz stronę www.bank.com/payment
  2. Sklep pyta klienta czy chce zapłacić za pomocą banku. Klient potwierdza. Tworzy transakcję po swojej stronie, transactionId = 0
  3. Sklep wysyła requesta do /bank/api/payments z prośbą o stworzenie płatności. W odpowiedzi dostaje paymentId = 1
  4. Sklep przekierowuje klienta na stronkę www.bank.com/payment?paymentId=1&returnUrl=www.sklep.com?transactionId=0 (to powinno być encodowane ale zostawiam dla czytelności)
  5. Klient na stronie banku potwierdza płatność i przekierowuje klienta na stronę www.sklep.com?transactionId=0
  6. Sklep w ten czy inny sposób potwierdza w banku dokonanie płatności (czasem odpytuje api banku, częściej jest tak, że to bank woła API sklepu i informuje o wykonaniu transakcji)
3

Rzuć okiem na te 2 linki - https://www.dotpay.pl/developer/doc/api_payment/pl/ oraz https://developers.payu.com/pl/classic_api.html#classic_api_dynamic_list_payment_types_javascript

Wydaje mi się, że jest tam to w miarę ładnie opisane.

W dużym skrócie - sklep się łączy z instytucją realizująca płatność. Zostaje zainicjowany mechanizm płacenia, płatność otrzymuje jakieś ID. Następnie jest piłeczka po stronie agenta płatności - obsługuje zapłatę, łączy się z bankami czy w inny sposób pobiera środki. Gdy to się stanie, klient wraca do sklepu.
I teraz są 2 opcje - albo procesor płatności otrzymuje od nas jakiś callback, który wywołuje i potwierdza o przyjęciu płatności, albo sami musimy odpytać serwer obsługujący zapłatę o status płatności o określonym ID.

2

Jak dla mnie tu coś nie gra. Wg OP, jeśli zrobię zakupy na allegro i zostanę na ekranie wyboru płatności (blik/bank/lista banków) a potem otworzę na totalnie innym urzadzeniu stronę swojego banku to allegro mialoby niby zrobić wtedy przekierowanie?

Something here is no yes :D

0

znowu robiąc przelew z przeglądarki w Ing dostałem taką prośbę potwierdzenia

Potwierdź przelew w aplikacji mobilnej
Uruchom teraz aplikację mobilną Moje ING w Twoim telefonie.
Zaloguj się do niej i potwierdź przelew na ekranie, który tam zobaczysz
Czekamy na Twoją autoryzację w aplikacji mobilnej.
Pozostań na tej stronie
Chcę zmienić metodę autoryzacji na SMS Chcę zmienić metodę autoryzacji na SMS
Zrzut ekranu 2022-03-8 o 07.50.56.png

2

No ale gdzie ty widzisz problem jakiś?

  1. Sklep wysyła do banku informacje o płatności a tobie każe sie zalogować i potwierdzić
  2. Ty potwierdzasz w banku
  3. Bank wysyła notyfikacje do sklepu ze zostało potwierdzone
  4. Sklep widzi ze potwierdzone więc cię przekierowuje

Którego kroku nie rozumiesz?

Frontend sklepu stuka do sklepowego backendu na jakieś /transactions/{ID} i czeka aż dostanie odpowiedź że potwierdzona i można przekierować usera. Backend sklepu wysyła do banku informacje o transakcji i potem czeka aż bank stuknie że user potwierdził. Kiedy to się stanie to backend sklepu zaczyna z /transactions/{ID} zwracać że zapłacone. Bank dostaje od sklepu informacje o płatności dla danego użytkownika. Kiedy ten użytkownik się zaloguje to wyświetla mu monit o potwierdzenie. Jak potwierdzi to bank odsyła do sklepu callback że potwierdzone.

0

Sklep przekierowuje cię do banku z żądaniem płatności
UI wyświetla ci stronę oczekiwania
robisz co masz zrobić w banku
UI dostaje powiadomienie, że płatność zatwierdzona (Web Sockets)
Przekierowuje się na stronę sklepu z informacją, że konkretna płatność została dokonana

1 użytkowników online, w tym zalogowanych: 0, gości: 1