Lokale Kommunikation zwischen PDV, Service/SDK und PINPad
TEF integrieren.
Ihr Betrieb vor Ort
gestärkt durch IOPAY
Verstärken Sie Ihre verbundenen Präsenzverkäufe, indem Sie TEF abschließen! Bring die Macht der Iopay-Technologie-Management-Kontrolle in ihren Betrieb
Eine gut definierte Integration in zwei Schichten
TEF-Einschlag findet lokal zwischen Ihre Anwendungdie Komponente Zoop und PINPad Die Zahlungsabwicklung ist jedoch weiterhin integriert in IOPAY Dies speichert eine einzige Schicht für Konto, Transaktionsmanagement, Terminalaktivierung, Events und Webhooks
Verwenden Sie den Zoop Desktop SDK oder den Zoop Desktop Server zum TEF-Fang. Verwenden Sie weiter IOPAY APIs + webhooks für den Rest des Betriebs- und Transaktionszyklus
Authentifizierung, Konto, Terminalaktivierung, Transaktionen und Webhooks
Halten Sie Ihre APIs und Webhooks IOPAY und fügen Sie den lokalen TEF-Aufnahme hinzu
Wer tut was bei der Integration
Die Abspaltung unten verhindert, dass die Verwendung des Zoop-Komponents für die Lokalisierung mit einem Austausch der Hauptintegration der Operation verwechselt wird
| Teil | Projektverantwortung |
|---|---|
| Ihre Anwendung | Integration von TEF-Aufnahmen mit dem Zoop Desktop SDK oder Desktop Server und Aufrechterhaltung der Integration mit den IOPAY-APIs und Webhooks |
| IOPAY | Einrichtungserlaubnis, Konto, Terminalaktivierung durch das Portal, Webhooks und Transaktionsfluss |
| SDK / Zoop Server | TEF-Aufnahme und Kommunikation zwischen Ihrer Anwendung und dem PINPad |
| PINPad / Terminal | Fisches Gerät, das während der Aufnahme mit dem Karton und dem Träger interagiert |
Für dieses Integrationsmodell, wenn der Zoop-Aktivierungsfluss verlangt, dass ein Token auf dem — dashboard — bestätigt wird, muss die operative Bindung auf dem — dashboard — abgeschlossen werden Portal IOPAY → Zahlungsterminals → Terminalzufügen.
SDK Embedded oder Desktop Server
Es gibt zwei dokumentierte Möglichkeiten, die lokale Schicht zu implementieren Die beiden erhalten die gleiche IOPAY-Architektur für Konten, Aktivierungen und Veranstaltungen
Bibliothek integriert in Ihre Anwendung Anzeigt, wann der PDV das Plugin direkt konsumieren und die lokale Kommunikation mit dem Terminal steuern kann
Lokaldienst im Hintergrund Deine Anwendung spricht mit ihm über WebSocket, normalerweise in
ws://localhost:1337.
Von einem leeren Projekt bis zur ersten Zahlung in fünf Schritten
Bereiten Sie das Projekt und das Terminal vor
Bestätigen Sie mit IOPAY das Test-Terminal und -Umfeld Konfigurieren Sie das Zoop Maven-Repository, wählen Sie das Architekt, das zu Ihrer Plattform — JVM, Android oder KMP — entspricht, und fügen Sie die in der offiziellen Dokumentation angegebenen Hilfsunterlagen hinzu Verwenden Sie die vereinbarte Version für das Projekt
implementation(
"br.zoop.pos.plugin:zoop-pos-plugin-desktop-jvm:X.Y.Z"
)
Das Herunterladen von Paketen kann einen GitHub-Benutzer und einen PAT mit Leserlaubnis erfordern Dieser Zugriff ist nur für die Entwicklung/Verteilung des Artefats und ist getrennt von der Authentifizierung des Terminals
Starten Sie ohne Zahlungsanschrift
Bei der ersten Aktivierung starten Sie Zoop ohne den Anmeldeblock und schalten Sie die DesktopPlugin. In JVM informieren Sie auch die Applikationsdaten, wenn sie von der SDK-Version verlangt werden; der Block
application nicht für Android
Zoop.initialize(context)
val desktopPlugin = DesktopPlugin(
Zoop.constructorParameters()
)
Zoop.plug(desktopPlugin)
Generen Sie das Token und verknüpfen Sie es mit dem Portal IOPAY
Erstellen Sie die Aktivierungsanfrage mit
createDashboardActivationRequestBuilder()Behandlung tokenCallback und die Anfrage mit Zoop.post(). Zeige das Token dem Betreiber und benutze es im IOPAY-Portal
Zahlungsterminals → Hinzufügen von Terminal. Dann warten Sie auf die von der SDK zurückgegebene Bestätigung
val activationRequest =
ZoopFoundationPlugin
.createDashboardActivationRequestBuilder()
.tokenCallback(/* receber e exibir o token */)
.confirmCallback(/* persistir dados confirmados */)
.build()
Zoop.post(activationRequest)
Bleiben Sie aktiviert und authentisieren Sie automatisch
Ich habe keine confirmCallbackdie Daten, die durch die Aktivierung zurückgegeben wurden, speichern Im nächsten Start wiederverwenden
marketplace, seller und
accessKey. Activation wird einmal pro Gerät durchgeführt, solange diese Daten gültig und verfügbar sind
{
"marketplace": "<retornado-na-ativacao>",
"seller": "<retornado-na-ativacao>",
"accessKey": "<retornado-na-ativacao>"
}
Erstzahlung ausführen
Befür den Verkauf bestätigen Sie, dass der Transaktionsschlüssel auf dem PINPad vorhanden ist Dann erstellen Sie einen Verkauf mit
DesktopPlugin.createPaymentRequestBuilder()Informationen in Cents, modalität und Parts und behandelt Nachrichten, Erfolg, Misserfolg und Ende des Flusses
Deine Applikation muss keine Zahlungsschlüssel beantragen oder vorab einfügen, um jedes Terminal zu aktivieren Die technischen Daten, die in den folgenden Initialungen verwendet werden, werden im Aktivierungsfluss gewonnen und von der Anwendung selbst fortgesetzt
Zoop Desktop SDK integriert direkt in den PDV
In diesem Ansatz befindet sich die Fächerkomponente in Ihrer Anwendung Das Plugin spricht lokal mit dem PINPad, während der Betrieb weiterhin an die IOPAY-Infrastruktur gebunden ist
Einführung nach der Aktivierung
Nach dem marketplace, seller und
accessKey Wenn sie wiederhergestellt und bestanden sind, verwenden Sie diese Werte zur Laufzeit, um das SDK neu zu starten Sie dürfen nicht manuell von dem Betreiber eingetragen werden
Zoop.initialize(context) {
credentials {
marketplace = storedMarketplace
seller = storedSeller
accessKey = storedAccessKey
}
}
val desktopPlugin = DesktopPlugin(
Zoop.constructorParameters()
)
Zoop.plug(desktopPlugin)
Integrationszustand
Start ohne Credentials, erzeugt Token und wartet auf einen Link über das IOPAY Portal
Ihre App speichert Marktplatz, Verkäufer und AccessKey geschützt
Die gespeicherten Daten werden ohne erneute Eintragung durch den Betreiber wiederverwendet
Das Token wird in SDK geboren und der Link wird in IOPAY abgeschlossen
Aktivierung verbindet das Gerät zum richtigen Konto Dieser Schritt muss vor dem ersten Transaktionsvorgang stattfinden und muss auch nach dem Neustart Ihres Anwendens getestet werden
Ihre Anwendung fordert die Aktivierung des Komponents Zoop und erhält ein temporäres Token
Das Token wird unter Zahlungsterminals → Terminal hinzufügen gemeldet
Der SDK gibt die Daten zurück, die Ihre Anwendung für zukünftige Startups erhalten muss
Sicher die zurückgegebenen Daten in einer geschützten Form Vermeiden Sie Marketplace, Seller und AccessKey in Benutzer-Screen, App-Logs, Open-Telemetry oder Debug-Dumps
Berichten Sie sich mit dem Transaktionsschlüssel, bevor Sie eine Gebühr erheben
Der Transaktionsschlüssel Zoop muss im PINPad vorhanden sein, damit Kartenzahlungen ausgeführt werden Wenn Sie ausstehen, aktivieren Sie IOPAY, um die Korrektur mit dem Equipment-Anbieter zu koordinieren
Betragen Sie das Fehlen des Schlüssels nicht als nur Software-Erfolgsfehler im PDV Das Terminal muss vor der Transaktion reguliert werden
Beispiel für Kartenerhebung
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)
Handelt auch mit Fluss-Mitteilungen um Anweisungen wie Annäherung, Einfügung oder Kartenlesen an den Betreiber anzuzeigen Local Return ermöglicht dem PDV, mit dem Terminal zu verfahren
Was bleibt aus dem Ergebnis
Verknüpfen Sie die lokale Transaktion mit dem Auftrag und dem von IOPAY begleiteten Handel
Preserve NSU and Authorization Code returned for Conciliation and Support
Speichern Sie die Beweisdaten, die von der SDK-Version zur Verfügung gestellt werden
Die Rückruf onComplete denkt an, dass der Fluss beendet ist, auch wenn es einen Fehler gab Betrachten Sie die genehmigte Zahlung nur anhand des entsprechenden Erfolgsrückgangs und korrelieren Sie das Ergebnis mit IOPAY's Transaktionsgeschäft
Alternative über lokale WebSocket
Der Zoop Desktop Server läuft wie ein lokales Service und stellt ein WebSocket für Ihre Anwendung dar Ihr Ziel ist weiterhin TEF-Fang Akkreditierung, Konto, Webhooks und Transaktionsfluss bleiben auf den IOPAY-Plattformen
Installieren und starten Sie den Service
Erhalten Sie den Installateur in den offiziellen Veröffentlichungen von Zoop In den Windows- und Linux-Installationen, die im Handbuch beschrieben sind, bereiten Sie Java/JDK 17 vor, mit Validieren
java -version und hält den Server am PINPad verbundenen Bahnhof laufen
java -version
Verbinden Sie Ihre App
Wenn Ihre Anwendung und der Desktop Server auf dem gleichen Computer sind, schalten Sie sich an die folgende lokale Adresse an Behandlung von Socket-Öffnung, Nachrichten, Fehler und Schließungen
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();
};
Starten Sie die Aktivierung
Schicken Sie {"type":"activation"}. Wenn der Server mit Status reagiert
tokenVorlegen Sie das Feld
token und schließt die Verbindung auf dem IOPAY-Portal ab Behalten Sie den Status
success.
{
"type": "activation"
}
Wenn du erfolgreich bist, dann bestehe marketplace,
seller und accessKey für die nächsten Initializationen
Starten Sie mit den wiederhergestellten Daten
Schicken Sie die Nachricht initialize mit den genau gespeicherten Wertvorgaben nach der Aktivierung. Das Feld devicePort ist optional; wenn sie ausgelassen wird, kann der Server den PINPad automatisch erkennen. Warten Sie status: success
bevor Transaktionen gestattet werden
{
"type": "initialize",
"marketplace": "<valor recebido na ativacao>",
"seller": "<valor recebido na ativacao>",
"accessKey": "<valor recebido na ativacao>"
}
Im PDO wird die Fangfunktion umgesetzt
Verwenden Sie die von Desktop Server dokumentierten JSON-Schemas für lokale Aufnahmen und verarbeiten Sie alle Rückgänge Local-Response dient zur Leitung des PINPad-Erlebnisses; Transaktionsmanagement und Webhooks werden von IOPAY fortgesetzt
<valor recebido na ativacao> Das ist die Daten, die von Ihrer Anwendung aufgehalten werden Sie sind keine Informationen, die der Betreiber bei jedem Starten eingeben muss
Ihre Anwendung empfängt weiterhin Ereignisse von IOPAY.
TEF hinzufügen ändert den Asynchron-Integrationsvertrag nicht: Ihre Anwendung erhält weiterhin von IOPAY die Webhooks für jedes Ereignis und jede Transaktion gemäß der vereinbarten Integration SDK/Server Local Return ergänzt das PDV-Erlebnis; es eliminiert nicht die IOPAY-Ereignis-Layer
Transaktionen, Betriebsupdates und Integrationsereignisse
Halten Sie Ihr Webhook-Endpunkt und korrelieren Sie die Ereignisse mit dem Anforderung, dem Terminal und dem lokalen Transaktionsort
Rekommendedes Korrelationsmodell
Verwenden Sie einen eigenen Identifikator, um die Zahlung mit Ihrem Applikationsantrag zu verbinden, wenn sie verfügbar ist
Speichern Sie die Identifikatoren, die durch den lokalen Terminalstrom zurückgegeben wurden
Aktualisieren Sie den Status der Operation mit den Ereignissen, die die IOPAY-Integration empfängt
Der TEF-Komponent ist lokal, aber Ihre Anwendung muss den bereits bestehenden Fluss von APIs und IOPAY-Webhooks nicht verlassen Während der Genehmigung weiterhin die Webhooks für jede Veranstaltung und jede Transaktion validieren
Üben Sie Fehler vor der Genehmigung
Validieren Sie nicht nur den Zulassungsszenario Der Pilot muss Kommunikationsfehler, abgelaufene Token, Unterbrechung während der Aufnahme, Neustart der Anwendung und Stornierungen berücksichtigen
Wenn für den lokalen Stream anwendbar, verwenden Sie die SDK-dokumenterten Befehle, um eine laufende Operation zu unterbrechen/zurückzusetzen
Der Server verfügt über eigene Lösch- und Statusmeldungen Begleiten Sie Start, Auswahl, Erfolg, Misserfolg und Abschluss gemäß der Dokumentation der verwendeten Version
Die Stornierung gilt auch für den IOPAY-Transaktionsfluss Bevor Sie eine Erneuerung nach Kommunikationsfehlern wiederholen, bestätigen Sie den tatsächlichen Status der Transaktion, um Doppelzahlungen zu vermeiden
Aktivierungsdaten müssen außerhalb der Schnittstelle und der Logs bleiben
Marktplatz, Verkäufer und AccessKey sind Teil des technischen Starts des Geräts Sie müssen sie automatisch nach dem Aktivieren schützen und verwenden
Verwenden Sie eine lokale Plattform-appropriate Mechanismus und beschränken Sie den Zugriff auf die Prozesse, die wirklich Daten benötigen
Schreiben Sie keinen AccessKey oder gleichwertige Daten in Logs, Spuren, Fehlermeldungen oder Analytics
Aktivierung ist technisch Der Betreiber muss keine Credentials kopieren, um zu verkaufen
Checklist vor der Freilassung des Piloten
Akkreditierung, Konto und Transaktionsfluss durch die IOPAY-Plattformen weiter, mit validierten Webhooks für Integrationsereignisse und Transaktionen
Bestätigen Sie die Verbindung in Zahlungsterminals → Add Terminal und starten Sie Ihre Anwendung erneut, um die Verwendung der gespeicherten Daten zu validieren
Show SDK-Messagen, differenzieren Sie den Erfolg von einfachen Flow-Endungen und speichern Sie transactionId, NSU, Zulassungscode und Belege/Receipt-Daten
Dieser Kommunikationsfehler, Tokenverfall, Abbruch der Aufnahme und Stornierung im IOPAY- und Lokalstrom, soweit zutreffend
Bestätigen Sie, dass der Transaktionsschlüssel vor dem ersten Verkauf vorhanden ist Wenn sie fehlt, aktivieren Sie IOPAY, um den Korrekt mit dem Anbieter zu koordinieren
Aktivierungsdaten, die sich sicher aufbewahrt und fehlt an Bildschirmen, Logs und unzulässiger Telemetrie
Offizielle Implementierungsdokumentation
Verwenden Sie die folgenden Leitfäden als technische Referenz für die Version des in dem Projekt installierten Komponents Parameter, Kompatibilität, Versionen und Protokolle können sich weiterentwickeln; die offizielle Dokumentation wird immer während der Implementierung validiert
Der Fluss wurde aus dem IOPAY-Technical Guide zur Integration von TEF und den öffentlichen Referenzen von Zoop strukturiert Verwenden Sie die genehmigte Version für das Projekt und bestätigen Sie die vollständigen Parameter in den offiziellen Leitfaden zum Zeitpunkt der Implementierung
Reit für die Genehmigung des ersten Terminals?
Manage das Token durch den SDK oder Desktop Server, verknüpfe das Terminal mit dem IOPAY-Portal und valide den vollständigen Fluss — Lokal-, Transaktions- und Webhooks — , bevor du weiter zur Produktion gehst

