Logika
17 godz. 49 min · Biznes i Automatyzacje
Krzysiek PiekarzAutomation Specialist / No-code DeveloperCzy w Twojej głowie pojawił się pomysł na aplikację, która zrewolucjonizuje świat na miarę Facebook'a, Instagrama albo Airbnb? A może zgłosił się do Ciebie klient, który chce przetestować i wdrożyć swój projekt w jak najszybszym czasie?Jeśli tak było to na pewno zadajesz sobie teraz kolejne pytanie - od czego zacząć? Czy muszę posiadać odpowiednią wiedzę programistyczną? Na jaki język programowania się zdecydować lub z jakiego gotowego framework'u skorzystać? A może zatrudnić profesjonalnego designera i software house, który pozwoli mi zrealizować ten projekt?Niezależnie od tego czy czy zdecydujesz się działać sam/a, czy też przekażesz projekt do zewnętrznej agencji i tak staniesz przed kolejnym dylematem jakim jest nauka programowania lub konieczność przepalenia nawet setek tysięcy złoty na coś, co może okazać się niewypałem.Na szczęście szybki rozwój narzędzi no-code sprawia, że możesz wybrać jeszcze trzecie wyjście. Zaprojektować, zbudować i wypuścić w świat swoją wymarzoną aplikację tylko za pomocą własnych sił i to bez konieczności posiadania specjalistycznej wiedzy programistycznej, a nawet posiadając jedynie podstawową znajomość narzędzi do design'u.Pamiętaj również o tym, że projekt ten podzieliłem na dwie części. Ten kurs to druga część, w której zapoznamy się z bardziej zaawansowanymi opcjami, jakie zapewnia nam edytor Bubble. Zdobytą w ten sposób wiedzę teoretyczną wykorzystamy od razu w praktyce dodając do naszego statycznego designu odpowiednią logikę, dzięki czemu nasz finalny projekt będzie już w pełni działającą aplikacją.Jeśli tylko potrafisz w podstawowym zakresie pracować z edytorem Bubble, budować w nim design aplikacji i rozumiesz czym są option sets oraz workflows to posiadanie wiedzy z poprzedniego kursu nie jest koniecznie wymagane. Natomiast szczerze zachęcam Cię przynajmniej do przejrzenia materiałów z pierwszej części, gdzie skupiamy się właśnie na podstawach, ponieważ teraz będziemy efektywnie przechodzić do bardziej zaawansowanych tematów i rozbudowywać naszą aplikację.
W tym kursie „MVP aplikacji w rekordowym czasie z Bubble (Logika)” nauczę Cię jak zamienić statyczny layout na pełnoprawną aplikację. Poruszymy takie tematy jak praca z bazą danych, privacy rules oraz bardziej zaawansowane workflows, które dodamy zarówno na froncie jak i backendzie naszej aplikacji. Dzięki zdobytej wiedzy dodamy logikę wszędzie tam, gdzie tego wymaga nasz projekt, a dodatkowo wzbogacimy go o możliwość płatności poprzez najbardziej popularny na świecie system jakim jest Stripe. To jednak nie koniec ponieważ przygotowałem dla Ciebie również szereg innych ważnych zagadnień, które omówimy i wykorzystamy w praktyce.W ramach nauki skupimy się na jak najbardziej praktycznym podejściu. Zapomnij o długich i nudnych lekcjach pełnych teorii, które zapomnisz zaraz po obejrzeniu. Będziemy budować a nie debatować! W ten sposób nauczysz się pracować z edytorem Bubble na poziomie zaawansowanym. Zrozumiesz jak zabezpieczyć swoje dane przed nieuprawnionym dostępem, w jaki sposób pobierać i dynamicznie filtrować rekordy z bazy danych. A także jak wykorzystać auto-binding by móc je aktualizować bez wykorzystania skomplikowanych workflows.Dodamy do naszej aplikacji prosty komunikator, który pozwoli na wymianę wiadomości pomiędzy użytkownikami. Zadbamy również o możliwość wysyłania powiadomień mailowych poprzez zewnętrzne serwisy by ich wygląd był zgodny z naszym brandem. Nie zabraknie również takich tematów jak SSO z Google czy też proste automatyzacje z wykorzystaniem serwisu Make.
Materiał szkoleniowy został zaprojektowany tak, aby mogło z niego skorzystać jak najszersze grono odbiorców. Nieważne czy jesteś totalnym laikiem, czy też posiadasz już wiedzę z zakresu programowania lub designu, na pewno znajdziesz tu coś dla siebie. A więc kto jeszcze może skorzystać z wiedzy zawartej w tym kursie?
Rozpoczynamy naszą pracę dokładnie od momentu, w którym zakończyliśmy ją w
lekcji poprzedniej, gdzie stanęliśmy przed bardzo ważnym problemem, czyli w jaki
sposób w naszym serwisie wyciągnąć sobie ze strip to, jaką kwotę netto
ostatecznie otrzyma nasz sprzedawca.
Co prawda ma on oczywiście dostęp do tych danych w swoim Wordzie Strip,
ale dobrze by było wyświetlić mu zarówno ilość transakcji, jak i
kwoty jakie za nie otrzymał.
Również i wewnątrz naszej aplikacji.
I tu znów wykorzystam wiedzę, którą podzielił się genialny Gregory Jones,
który rozgryzł, jak dotrzeć właśnie do tych danych.
Jeśli to początek Twojej przygody ze Strip, to pewnie jeszcze tego nie
zauważyłeś, ale im więcej czasu spędzisz w ich dokumentacji, tym szybciej dotrze do
Ciebie bardzo ważny fakt, że w ich przypadku cały serwis składa się
z osobnych klocków, które potem za pomocą API łączą się w całość.
W praktyce oznacza to, że niemal każdy element tej układanki to osobny data type,
do którego otrzymujemy szereg metod, jakie możemy wykorzystać.
I tak dokładnie jest i w tym przypadku, gdzie w danych, które otrzymujemy na łeb
hook zdefiniowany w poprzedniej lekcji otrzymujemy info o samej sprzedaży.
Ale próżno szukać wartości, która nas interesuje.
Czy to w takim razie oznacza, że nie możemy do niej dotrzeć?
Otóż jak najbardziej możemy, ale nasza droga musi prowadzić przez kilka
połączonych ze sobą elementów.
W pierwszej kolejności musimy wyciągnąć dane z elementu o nazwie Payment tent.
I właśnie teraz dokumentację dotyczącą tego elementu widzisz na
ekranie swojego monitora.
Jak pamiętasz, akurat w jego przypadku takie ID wraca nam już
w łebku z poprzedniej lekcji.
Natomiast mając taki obiekt możemy w kolejnym kroku pobrać dane o następnym
elemencie, które nas interesuje.
A nosi on nazwę haracz.
Przechodzimy tutaj. Mamy np.
payment jak i go sobie wyciągamy.
I tutaj znajdziemy coś, co się nosi nazwę tutaj haracz, jeśli sobie tutaj zerknę.
Tak, chyba nie, ale zerknijmy, czy będziemy mieć to tutaj właśnie.
mamy mamy w tym miejscu tutaj ten parametr o nazwie Latest Chart.
I to właśnie na tej podstawie będziemy wyciągać ten drugi element, którego
potrzebujemy, czyli właśnie czar.
A więc mogę teraz tutaj przejść do odpowiedniej dokumentacji.
Więc znów widzisz ją na ekranie monitora.
I dopiero wtedy, gdy mamy już pobrany taki haracz, możemy z niego wyciągnąć ID
kolejnego elementu, które nas interesuje.
A ten element nazywa się w tym przypadku balance transaction.
Znów mamy właśnie tutaj.
Jak widzisz balans Transaction mamy ID, a mając ID możemy wykorzystać
kolejną metodę i tym razem właśnie wyciągnąć sobie
ten element, czyli ten balans transaction, o którym wcześniej mówiłem.
I dopiero tutaj znajdziemy wszystkie te informacje jakie nas interesują.
Czyli jakie?
FI czyli jaki procent pobrał sobie strip oraz jaką kwotę netto właśnie
otrzymał nasz sprzedawca.
Jak więc widzisz, potrzebujemy dodać w Babel i potem odpalić aż trzy połączone ze
sobą metody tylko po to, by uzyskać jedną wartość, która jest nam potrzebna.
I tu kolejny ważny komunikat.
Jest to praktyka, którą będziesz musiał wykorzystywać znacznie częściej niż
sądzisz, zwłaszcza w przypadku script, ale często spotkasz się z nią
również w przypadku innych API.
A więc nie pozostaje nam nic innego, jak pogodzić się z tym i zaimplementować
wszystkie potrzebne metody w naszym edytorze.
Ja już je przygotowałem, tak więc będziesz mógł je sobie podejrzeć
potem wzorując się na moim edytorze i tylko odpowiednio wdrożyć.
A więc wracamy na samą górę.
Oczywiście do API konektora.
I teraz możemy dodać te wszystkie wymagane metody.
A więc tak zaczynamy od tej, czyli Receive payment content i standardowo
będzie to wykorzystane jako action.
Tutaj korzystamy z metody GET.
Wysyłamy zapytanie pod taki adres.
Tu właśnie od razu w URL u możemy podawać jakieś parametry i zapisujemy je właśnie w
takich nawiasach kwadratowych, a w tym miejscu właśnie wyskoczy nam ten
klucz, do którego przekazujemy odpowiednią wartość.
Skąd pobrać to payment content?
Otóż, jak pamiętasz, w poprzedniej lekcji utworzyliśmy sobie sile.
A więc mogę wrócić do Data tutaj do AppData i do Sail.
I mam tu właśnie to payment, które nas interesuje.
A więc po prostu skopiowałem sobie tą wartość.
Przechodzę do tej metody.
Wklejam to w to miejsce.
Oczywiście będziemy to przekazywać dynamicznie, więc odznaczamy private.
I znowu są to dane wyciągane z tego konta Account, czyli z konta naszego sprzedawcy.
A więc tutaj również musimy przekazać dokładnie ten sam header
jaki przekazywaliśmy właśnie tutaj, kiedy tworzyliśmy do niego taki
link do checkout page.
A więc kopiujemy to z tym account i wklejamy tutaj.
I to jest pierwsza metoda, która nam zwróci właśnie taki obiekt payment id and.
Jeśli to odpowiednio odpalisz to otrzymasz taką odpowiedź
bardzo podobną do tego co już tam wcześniej widziałeś w dokumentacji.
Natomiast tak jak mówiłem interesuje tutaj ten element.
W zasadzie ten parametr architecture, ponieważ to jest ID tego charge, którego
musimy sobie wyciągnąć w kolejnym kroku, a więc kopiujemy tą wartość.
I dodajemy kolejną metodę Również one są wszystkie bardzo podobne.
Wszędzie korzystamy z GET, przekazujemy tutaj ID i oczywiście kąt.
W tym przypadku właśnie jest to to ID, które przed chwilą sobie
skopiowałem, a więc wklejam.
To tutaj oddaje właśnie z tripa kąt.
Zaznaczam ten checkbox, odpalam i otrzymuję właśnie taki obiekt Chart.
A tu tak jak mówiłem kolejne ID, które musimy wykorzystać czyli
Balans transaction.
A więc ta wartość znów kopiujemy.
Teraz to ID tylko po to właśnie aby dodać je tutaj w
tej trzeciej metodzie, która wyciągnie nam właśnie informacje o tym obiekcie.
Znów get pod taki adres Action ID Balans Balance transaction wstawione
tutaj id tray kont zaznaczony ten checkbox I tym razem właśnie powinniśmy
otrzymać taki obiekt.
Jak widzisz tu mam informacje o pełnej kwocie, którą zapłacił nasz klient.
Mamy tutaj fee jakie pobrał sobie strip, mamy tutaj jakie my pobraliśmy
oraz co najważniejsze wartość netto, czyli jaką kwotę ostatecznie
otrzymał nasz sprzedawca.
Pamiętaj, że ona jest tutaj wyrażona w groszy bądź w procentach, a więc
musimy to wszystko pomnożyć razy 100.
No to nie pozostaje nam nic innego jak teraz właśnie wdrożyć
metodę do naszego workflow.
A więc zamykam i w pierwszej kolejności chcę dodać odpowiednie pola data type fi.
Tak aby właśnie zapisać wszystkie te wartości i potem bezproblemowo móc
je wykorzystać lub do nich wrócić.
A więc to co tutaj dodałem to przede wszystkim tag service fi.
Tu przekażemy dokładnie tą samą wartość, którą przekazujemy do bookingu.
Kolejno mamy Trip balance and transaction it trip, here it.
Tutaj mamy trip fi, czyli właśnie te trip obiera sobie sam trip oraz trip netto
month, czyli właśnie jaką kwotę rzeczywiście tutaj
otrzyma nasz sprzedawca.
Czyli właśnie te wartości, tak żebyś potem mógł odpalić dany obiekt, sale i na
przykład właśnie pobrać sobie te dane i wyciągnąć jakieś informacje dalej,
jeśli będziesz ich potrzebował.
A więc jeśli już dodałeś tutaj te odpowiednie pola, to teraz musimy
oczywiście dostosować nasze workflow.
Wracam więc tutaj do back end Workflow i do tego workflow, które
tworzyliśmy w poprzedniej lekcji.
Jedyna zmiana jaką tu dodałem to w kroku drugim.
Tak jak mówiłem ustalam właśnie serwisy na tą wartość wyciągniętą z bookingu
czyli booking, service i amount.
Kolejno właśnie mamy krok trzeci i tu dodałem następną metodę, której
właśnie będziemy odpalać te wszystkie metody, które tam dodaliśmy
i odpowiednio właśnie je wykorzystywać.
Czyli tworzymy sobie tutaj nowe API.
Tym razem ono nie jest publiczne, wykorzystujemy je tylko na swoje potrzeby,
a więc zaznaczamy tylko te dwa check boxy.
Tu będziemy przekazywać sealed, ponieważ tam znajdziemy wszystkie
potrzebne nam informacje.
I tutaj właśnie odpalamy sobie taki workflow i przekazujemy sile, która
utworzyliśmy tu w kroku numer 2.
W ten sposób właśnie mamy to utworzone.
A teraz nasze kolejne workflow.
Właśnie PO wyciąga te wszystkie wartości, czyli wykona po prostu te wszystkie trzy
kroki, a potem odpowiednio zaktualizuje ten obiekt.
A więc najpierw daj Benefit.
Gdzie tutaj właśnie z tripa Konto jest po prostu wyciągnięte, z
Sail Seller, z Tripa ID.
I oczywiście z Sail wyciągamy z Trip Payments intencje, które
zapisaliśmy w tym workflow.
Teraz kiedy to pobierzemy to z rezultatow wyciągamy late charge.
I to jest właśnie ID takiego czasu, który musimy teraz pobrać.
Następnie przechodzimy do trzeciego kroku i tym razem właśnie z tego kroku nr 2
wyciągamy sobie body z Body Balance Transaction i to będzie
z kolei właśnie ID Balans Transaction.
Czyli mamy te trzy metody.
Jak widzisz tworzymy taki łańcuszek pobierając elementy po kolei i przekazując
te wartości do następnego kroku.
I tu dopiero na kroku nr 4 aktualizujemy sobie właśnie ten obiekt
while i teraz przypisujemy tutaj te wszystkie informacje, które wyciągnęliśmy
właśnie w tych poszczególnych krokach.
A więc zarówno Target Strip balance Transaction z kroku
numer 2, a potem z kroku 3 strip oraz Strip.
Netto Amount I dopiero teraz właśnie nasz Excel jest w pełni kompletny, a my mamy
wszystkie informacje, których będziemy potrzebować.
Na przykład w naszym Dashboard.
I tu znów jest to następny ważny fakt, który musisz zapamiętać.
W zależności od tego, jak bardzo złożony będzie Twój serwis, taki mechanizm
połączonych ze sobą API będzie czymś standardowym.
Czyli mamy łebków, na które wpadają dane, a potem odpalamy kolejne API, które
nam wykonuje jakieś kolejne czynności.
Najlepszym bowiem podejściem jest tworzenie jak najprostszych workflow,
które mają wykonać jedno proste zadanie, a potem łączenie je ze sobą w
tętniącą życiem i logiką całość.
W moim przypadku wygląda to następująco.
Czyli mamy to, a potem odpalamy to drugie, czyli Netto amount.
A skoro rozwiązaliśmy kolejny problem, to z dumą możemy chwilę odpocząć i zebrać
siły przed kolejną lekcją, do której Cię serdecznie zapraszam.