2013-06-03 29 views
5

Nasza aplikacja to jednostronicowa aplikacja utworzona za pomocą ExtJs. Dla każdej akcji użytkownika karta przeglądarki nigdy nie jest ładowana, a wszystkie czynności są wykonywane przy użyciu ajax. Użytkownik może otwierać/zamykać wiele okien/paneli ExtJs na tej samej karcie przeglądarki, w ten sposób wszystko pozostaje ograniczone do tej samej karty przeglądarki.Jak zintegrować bramkę płatności w aplikacjach utworzonych za pomocą struktur javascript, takich jak ExtJs?

Teraz musimy zintegrować bramkę płatności w aplikacji, co oznacza przekierowanie użytkownika na stronę banku i przywrócenie jej do naszej aplikacji.

Problem jest, że gdy przeglądarka przekierowuje użytkownika, a następnie cała aplikacji kodu JavaScript wraz z paneli i okien ulec zniszczeniu, a gdy użytkownik wraca do aplikacji następnie dowiaduje się, że jest inny od jednego zostawiła.

Jako rozwiązanie tego, byliśmy na myśli używając następujących dwóch appraoches:

wariant 1. Utrzymanie stanu aplikacji - Gdy użytkownik odchodzi na stronie internetowej banku potem jakoś utrzymać stan aplikacji - np. które okna są otwierane niosąc jakie dane, które zmienne mają jakie wartości itp .. a kiedy użytkownik wróci, generujemy dla niej ten sam stan aplikacji.

Wariant 2. Mają wyskakujące okienko przeglądarki, bramki płatności - Zamierzamy dostarczyć przycisk, który otworzy się okienko pop-up przenoszenia szczegółów transakcji, aw tym oknie pop-up Cały proces płatności płatniczych odbędzie się, dbając o przekierowanie i wszystko.

Opcja 1 okazuje się być bardzo kłopotliwa i skomplikowana, ponieważ utrzymanie dokładnego stanu nie jest możliwe.

W przypadku opcji 2 nie jesteśmy pewni, czy jest to bezpieczne i możliwe?

Ktoś wdrożył takie podejście wcześniej. W przeciwnym razie, jakie są inne opcje, które możemy wybrać?

Dzięki za pomoc z góry.

Odpowiedz

4

Napotkałem problem i zaimplementowałem go za pomocą websocket/polling w głównej aplikacji, podczas gdy pojawi się nowe okno dla płatności.

Po dokonaniu płatności główny wniosek zostanie powiadomiony.

W ten sposób każda płatność działa we własnej piaskownicy całkowicie niezwiązanej z główną aplikacją, co znacznie ułatwia konserwację. Pamiętaj, że nasz backend tworzy nową sesję dla każdej płatności przy użyciu istniejącej.

Myślę, że nie jest niczym niezwykłym otwieranie nowych okien do zapłaty, dlatego zdecydowałem się na to.

+0

Dziękujemy za podzielenie się swoim podejściem do okna pop-up. Interesujące jest to, że używasz websocket/polling do powiadamiania o oknie nadrzędnym. W rzeczywistości zamierzamy wywołać funkcję w oknie nadrzędnym przy rozładowywaniu/zamykaniu okna podrzędnego dla tego powiadomienia, jeśli zastosujemy podejście pop-up. Czy próbowałeś tego również i znalazłeś jakieś problemy, które sprawiły, że wybrałeś opcję websocket? – netemp

+0

@netemp Celem było utrzymanie ich całkowicie oddzielone od początku. Dlatego skupiłem się na tym podejściu. To był raczej projekt, niż jakikolwiek znany problem. – sra

+1

Dzięki za wspomniany punkt. Czy mógłbyś się również podzielić tym, że natknąłeś się na jakiś problem z pop-blockerem? Czy masz zastrzeżenia, że ​​okna pop-up są generalnie blokowane przez przeglądarki, a zatem należy ich unikać? – netemp