Komunikacja lokalna między PDV, SDK i PINPad.
Zintegruj TEF.
Twoja działalność stacjonarna
wzmocniona dzięki IOPAY
Zwiększ sprzedaż widoczną poprzez zakończenie TEF! Wprowadź do swojej operacji siłę kontroli zarządzania technologią Iopay
Integracja podzielona na dwie dobrze określone warstwy.
TEF widoczny odbywa się lokalnie pomiędzy Twoja Aplikacja, Zoop i PINPad. Jednakże operacja płatności nadal jest zintegrowana z IOPAY. To zachowuje jedną warstwę do konta, zarządzania transakcjami, aktywacji terminału, wydarzeń i webhooks.
Użyj Zoop Desktop SDK lub Zoop Desktop Server do lokalny TEF. Wciąż używaj IOPAY APIs + webhooks do końca cyklu operacyjnego i transakcyjnego.
Akredytacja, konto, aktywacja terminału, transakcja i webhooks.
Utrzymuje swoje APIs i webhooks IOPAY i dodaje wprowadzanie TEF lokalny.
Kto co robi w integracji.
Poniższe oddzielenie uniemożliwia wykorzystanie komponentu Zoop do wykonywania lokalnych zdjęć do zamiany głównej integracji operacyjnej.
| Wydział | Odpowiedzialność w projekcie |
|---|---|
| Twoja Aplikacja | Zintegrowanie wychwytywania TEF z Zoop Desktop SDK lub Desktop Server oraz utrzymanie integracji z APIs i webhooks IOPAY. |
| IOPAY | Akredytacja zakładu, konto, aktywacja portalu przez terminal, webhooks i przepływ transakcyjny operacji. |
| SDK / Server Zoop | Lokalna warstwa wychwytywania TEF i komunikacja między Twoja Aplikacja a PINPad. |
| PINPad / terminal | Urządzenie fizyczne odpowiedzialne za interakcję z kartą i nosicielem podczas wychwytu. |
W przypadku tego modelu integracji, w każdym przypadku, gdy przepływ aktywacji Zoop wymaga potwierdzenia tokena w dashbordowej, operacyjne połączenie musi zostać zakończone w Portal IOPAY → Terminale płatnicze → Dodać terminal.
SDK Embedded lub Desktop Server.
Istnieją dwa udokumentowane sposoby wdrożenia lokalnej warstwy. Obie zachowują tę samą architekturę IOPAY do kont, aktywacji i wydarzeń.
Biblioteka wbudowana do Twojej aplikacji. Wskazuje się, kiedy PDV może bezpośrednio zużywać wtyczkę i kontrolować lokalną komunikację z termyną.
Lokalny obsługa w tle. Twoja Aplikacja rozmawia z nim przez WebSocket, zwykle w
ws://localhost:1337.
Od pustych projektów do pierwszej płatności w pięciu krokach.
Przygotuj projekt i terminal
Sprawdź z IOPAY terminal i środowisko testowe. Wystarczy skonfigurować repozytorium Maven Zoop, wybrać odpowiedni artefakt dla swojej platformy - JVM, Android lub KMP - i dodać pomocne zależności wskazane w oficjalnej dokumentacji. Wykorzystaj wersję uzgodnioną do projektu.
implementation(
"br.zoop.pos.plugin:zoop-pos-plugin-desktop-jvm:X.Y.Z"
)
Pobieranie pakietów może wymagać użytkownika GitHub i PAT z uprawnieniem do odczytu. Dostęp ten jest wyłącznie do rozwoju/ dystrybucji artefatu i jest oddzielony od uwierzytelniania terminale.
Wstąpienie bez płatności
W pierwszej aktywacji uruchomić Zoop bez bloków i podłączyć DesktopPlugin. W JVM należy również podać dane aplikacji, gdy są wymagane przez wersję SDK; blok
application nie ma zastosowania do Androida.
Zoop.initialize(context)
val desktopPlugin = DesktopPlugin(
Zoop.constructorParameters()
)
Zoop.plug(desktopPlugin)
Zarządzaj tokenem i połączaj w portalu IOPAY
Wytwórz żądanie aktywacji z
createDashboardActivationRequestBuilder()treat the tokenCallback i wysyłać wniosek z Zoop.post(). Pokaż token operatorowi i użyj go w portalu IOPAY w
Terminały płatności → Dodawanie terminału. Następnie poczekaj na potwierdzenie z powrotem SDK.
val activationRequest =
ZoopFoundationPlugin
.createDashboardActivationRequestBuilder()
.tokenCallback(/* receber e exibir o token */)
.confirmCallback(/* persistir dados confirmados */)
.build()
Zoop.post(activationRequest)
Przestań aktywować i automatycznie uwierzytelniaj
Nie confirmCallback, zapisać dane zwrócone przez aktywację. W kolejnych inicjacjach użyj go ponownie
marketplace, seller i
accessKey. Aktywacja jest dokonywana raz na urządzenie, dopóki dane te pozostają ważne i dostępne.
{
"marketplace": "<retornado-na-ativacao>",
"seller": "<retornado-na-ativacao>",
"accessKey": "<retornado-na-ativacao>"
}
Wykonaj pierwszą płatność
Przed sprzedażą potwierdź obecność klucza transakcyjnego w PINPadzie. Teraz tworz sprzedaż z
DesktopPlugin.createPaymentRequestBuilder(), informuje o wartości w pieniądzach, stosownych modalitetach i częściach oraz traktuje wiadomości, sukces, porażkę i zakończenie przepływu.
Twoja Aplikacja nie musi poprosić ani wstępnie wprowadzać kluczy płatniczych do uruchomienia każdego terminalu. Dane techniczne wykorzystane w następujących inicjacjach są uzyskiwane w czasie aktywacji i utrzymywane przez aplikację.
Zoop Desktop SDK zintegrowany bezpośrednio z PDV.
W tym podejściu składnik wychwytu znajduje się w Twoja Aplikacja. Plugin lokalnie rozmawia z PINPadem, podczas gdy operacja nadal jest powiązana z infrastrukturą IOPAY.
Wykonane po aktywacji
Po tym jak marketplace, seller i
accessKey jeśli zostały odzyskane i utrzymane, użyj tych wartości w czasie uruchomienia do ponownego uruchomienia SDK. Nie należy je wpisywać ręcznie przez operatora.
Zoop.initialize(context) {
credentials {
marketplace = storedMarketplace
seller = storedSeller
accessKey = storedAccessKey
}
}
val desktopPlugin = DesktopPlugin(
Zoop.constructorParameters()
)
Zoop.plug(desktopPlugin)
Stan integracji
Uruchamia bez uwierzytelniania, generuje token i czeka na połączenie przez portal IOPAY.
Twoja Aplikacja przechowuje marketplace, seller i accessKey w bezpiecznej formie.
Przechowywane dane są ponownie wykorzystywane bez ponownego zapisu przez operatora.
Token powstaje w SDK i związek jest zakończony w IOPAY.
Aktywacja łączy urządzenie z prawidłowym kontem. Ten krok musi nastąpić przed pierwszą transakcją i musi być testowany również po ponownym uruchomieniu Twoja Aplikacja.
Twoja Aplikacja poprosi o aktywację komponentu Zoop i otrzymuje tymczasowy token.
Token jest informowany pod Terminami płatności → Dodawanie terminalu.
SDK zwraca dane, które Twoja Aplikacja musi utrzymać na przyszłych uruchomieniach.
Przechowuj zwrócone dane w bezpieczny sposób. Unikaj marketplace, seller i accessKey na ekranie użytkownika, dziennikach aplikacji, otwartej telemetrii lub dumpsów debugowych.
Sprawdź klucz transakcyjny przed opłatą.
Klucz transakcyjny Zoop musi znajdować się w PINPad, aby dokonywać płatności kartą. W przypadku nieobecności, włączyć IOPAY w celu koordynacji poprawy z dostawcą urządzenia.
Nie traktuj braku klucza jako błędu odzyskiwalnego wyłącznie przez oprogramowanie w PDV. Terminal musi być uporządkowany przed transakcją.
Przykład płatności za pomocą karty
val paymentRequest = DesktopPlugin
.createPaymentRequestBuilder()
.amount(1000) // R$ 10,00 — valor em centavos
.option(Option.CREDIT)
.installments(2)
.referenceId("pedido-84217")
.callback(/* tratar sucesso e falha */)
.build()
Zoop.post(paymentRequest)
Używaj również pośrednich wiadomości z przepływu, aby wyświetlić operatorom instrukcje, takie jak zbliżenie, wprowadzenie lub odczytywanie karty. Powrót lokalny pozwala PDV śledzić, co dzieje się w terminalu.
Co pozostaje wynikiem
Powiązać lokalną transakcję z zamówieniem i operacją towarzyszącą IOPAY.
Zachowaj NSU i zwrócony kod uprawnień do połączenia i wsparcia.
Zachowaj dane dowodowe dostępne w wersji SDK w użyciu.
/Zadzwonienie onComplete oznacza, że przepływ zakończył się, nawet w przypadku awarii. Uważaj, że płatność została zatwierdzona wyłącznie w oparciu o odpowiedni powodziny i koreluj wynik z transakcją IOPAY.
Alternatywa za pośrednictwem lokalnego WebSocket.
Zoop Desktop Server działa jak lokalna usługa i wystawia WebSocket na Twoja Aplikacja. Jego celem pozostaje wychwytywanie TEF. Akredytacja, konto, webhooks i przepływ transakcji pozostają na platformie IOPAY.
/ Wstawić i uruchomić obsługę
Uzyskaj instalator w oficjalnych wydaniach Zoop. W instalacjach Windows i Linux opisanych w podręczniku, przygotować Java/JDK 17, weryfikuj z
java -version i utrzymuj serwer w biegu na stacji podłączonej do PINPad.
java -version
łączyć aplikację
Gdy Twoja Aplikacja i Desktop Server znajdują się na tej samej maszynie, podłącz się do adresu lokalnego poniżej. Rozwiąż otwarcie, wiadomości, błędy i zamknięcie zasłony.
ws://localhost:1337
const socket = new WebSocket('ws://localhost:1337');
socket.onopen = () => {
console.log('Desktop Server conectado');
};
socket.onmessage = (event) => {
const message = JSON.parse(event.data);
handleZoopMessage(message);
};
socket.onerror = (error) => {
handleSocketError(error);
};
socket.onclose = () => {
handleSocketClosed();
};
Zacznij aktywowanie
Wysyłaj {"type":"activation"}. Kiedy serwer odpowiada statusem
tokenprzekaż pole
token i zakończenie połączenia w portalu IOPAY. Zatrzymaj status
success.
{
"type": "activation"
}
W sukcesie, trwaj marketplace,
seller i accessKey do kolejnych inicjacji.
Zacznij odzyskiwać dane
/Wysyłaj wiadomość initialize używając dokładnie wartości przechowywanych po aktywacji. W polu devicePort jest opcjonalny; jeśli nie zostanie wykryty, serwer może automatycznie wykryć PINPad. Czekaj. status: success
przed zezwoleniem na transakcje.
{
"type": "initialize",
"marketplace": "<valor recebido na ativacao>",
"seller": "<valor recebido na ativacao>",
"accessKey": "<valor recebido na ativacao>"
}
Wdrożyć połowy w PDV
Korzystaj z schematów JSON udokumentowanych przez Desktop Server do lokalnych poleceń do przechowywania i traktuj wszystkie zwroty. Odpowiedź lokalna służy do prowadzenia eksperymentu w PINPad; zarządzanie transakcjami i webhooks kontynuuje IOPAY.
<valor recebido na ativacao> to dane utrzymywane przez aplikację. To nie jest informacja, którą operator powinien wpisać przy każdym uruchomieniu.
Twoja Aplikacja nadal odbiera zdarzenia z IOPAY.
Dodanie TEF nie zmienia umowy integracji asynchronicznej: Twoja Aplikacja nadal otrzymuje webhooks z IOPAY z każdego wydarzenia i transakcji zgodnie z umową integracji. SDK/Server zwrot lokalny uzupełnia doświadczenie PDV; nie eliminuje warstwy zdarzeń IOPAY.
Transakcje, aktualizacje operacyjne i wydarzenia integracyjne.
Utrzymuje swój webhook punkt końcowy i koreluje wydarzenia z żądania, terminalem i lokalną transakcją.
Zalecany model korelacji
Wykorzystaj własny identyfikator, aby połączyć płatność z wnioskiem Twoja Aplikacja, gdy jest ona dostępna.
Przechowuj identyfikatory zwrócone przez tok lokalny terminal.
Aktualizuj status operacji z wydarzeniami otrzymanymi przez integrację IOPAY.
Komponent TEF jest lokalny, ale Twoja Aplikacja nie musi opuszczać już istniejącego przepływu APIs i webhooks IOPAY. Kontynuuj ważenie webhooks dla każdego zdarzenia i transakcji podczas homologacji.
Naucz się na błędy przed zatwierdzeniem.
Nie waż się tylko scenariuszem zatwierdzenia Pilota musi rozważyć błędy komunikacyjne, upływ tokenu, przerwę podczas wychwytu, ponowne uruchomienie aplikacji i odwołania
W przypadku gdy jest to stosowane do lokalnego przepływu, użyj dowodów udokumentowanych przez SDK do przerwania/odwołania bieżącej operacji.
Serwer posiada własne przepływy odwołania i wiadomości stanu. Rozpoczęcie, wybór, sukces, porażka i zakończenie należy traktować zgodnie z dokumentacją używanej wersji.
Wprowadzenie do obrotu w ramach systemu operacyjnego IOPAY Przed powtórzeniem pobierania po nieprawidłowej komunikacji potwierdź prawdziwy stan transakcji w celu uniknięcia podwójności.
Dane aktywacyjne powinny pozostawać poza interfejsem i logami.
marketplace, seller i accessKey są częścią technicznego uruchomienia urządzenia. Twoja Aplikacja powinien je chronić i automatycznie je używać po aktywacji.
Wykorzystaj odpowiedni mechanizm lokalny dla platformy i ograniczaj dostęp do procesów, które naprawdę potrzebują danych.
Nie zapisuj accessKey lub równoważnych danych w logach, śladowych, błędnych wiadomościach lub analitykach.
Aktywacja jest techniczna. Operator nie powinien potrzebować kopiowania danych do sprzedaży.
Checklist przed zwolnieniem pilota.
Akredytacja, konto i przepływ transakcyjny kontynuuje się przez platformy IOPAY, a webhooks jest ważna dla wydarzeń i transakcji integracji.
Potwierdź połączenie w Terminalu płatności → Dodaj terminal i uruchomi Twoja Aplikacja w celu sprawdzenia wykorzystania zapisanych danych.
Wyświetla wiadomości SDK, różni sukcesy po prostu zakończenia przepływu i zachowuje transactionId, NSU, kod autoryzacji i dowody/ dane odbioru.
Test nieprzydatności komunikacji, wygaśnięcia tokenu, przerwania przechowywania i odwołania w przepływie IOPAY i w warstwie lokalnej, gdzie to stosowne.
Potwierdź obecność klucza transakcyjnego przed pierwszą sprzedażą. Jeżeli nie ma go, włącz IOPAY w celu koordynacji korekty z dostawcą.
Informacje o aktywacji przechowywane w sposób chroniony i pozbawione ekranu, logów i niewłaściwej telemetrii.
Oficjalna dokumentacja do wdrożenia.
Użyj poniższych wytycznych jako odniesienia technicznego do wersji komponentu zainstalowanej w projekcie. Parametry, kompatybilność, wersje i protokoły mogą się zmieniać; zawsze potwierdź oficjalną dokumentację podczas wdrażania.
Przepływ został skonstruowany na podstawie technicznego przewodnika IOPAY dotyczącego integracji TEF i publicznych referencji Zoop. Użyj zatwierdzonej wersji projektu i potwierdź pełne parametry w oficjalnych przewodnikach w momencie wdrożenia.
Gotowy do zatwierdzenia pierwszego terminala?
Uruchomić token przez SDK lub Desktop Server, połączyć terminal z portłem IOPAY i zatwierdzić pełny przepływ - local capture, transaction i webhooks - przed kontynuowaniem produkcji.

