Entwickler · TEF & 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

TEF vor Ort + IOPAY-Operation
APP
Schicht des Integrators Ihre Anwendung PDV + APIs + webhooks IOPAY
Ihr System
IO
Zentrale Schicht IOPAY-Plattformen Konto · Transaktions · Aktivierung · webhooks
IOPAY
SDK
Einheimische Fang Desktop SDK / Server TEF-Mitteilung mit dem Terminal
Ort
PIN
Körperliche Einrichtung PINPad / Terminal Interaktion mit Karte und Träger
TEF
01 · Übersicht

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

✓
Hauptregeln der Architektur

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

Anblick Zoop SDK / Server

Lokale Kommunikation zwischen PDV, Service/SDK und PINPad

Zentrale Schicht IOPAY

Authentifizierung, Konto, Terminalaktivierung, Transaktionen und Webhooks

Kundenintegration Ihre Anwendung

Halten Sie Ihre APIs und Webhooks IOPAY und fügen Sie den lokalen TEF-Aufnahme hinzu

02 · Verantwortlichkeiten

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
IO
— Dashboard — in der Zoop-Dokumentation

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.

03 · Wahl der Integration

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

Die
Startseite Zoop Desktop SDK

Bibliothek integriert in Ihre Anwendung Anzeigt, wann der PDV das Plugin direkt konsumieren und die lokale Kommunikation mit dem Terminal steuern kann

B.
Dokumentation über die Alternative Zoop Desktop Server

Lokaldienst im Hintergrund Deine Anwendung spricht mit ihm über WebSocket, normalerweise in ws://localhost:1337.

04 · Quickstart

Von einem leeren Projekt bis zur ersten Zahlung in fünf Schritten

01

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

Gradle · Beispiel JVM
implementation(
    "br.zoop.pos.plugin:zoop-pos-plugin-desktop-jvm:X.Y.Z"
)
!
GitHub Packages ≠ Zahlungsanschrift

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

02

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

Kotlin · erste Aktivierung
Zoop.initialize(context)

val desktopPlugin = DesktopPlugin(
    Zoop.constructorParameters()
)

Zoop.plug(desktopPlugin)
03

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

Aktivierungsschwerpunkt
val activationRequest =
    ZoopFoundationPlugin
        .createDashboardActivationRequestBuilder()
        .tokenCallback(/* receber e exibir o token */)
        .confirmCallback(/* persistir dados confirmados */)
        .build()

Zoop.post(activationRequest)
04

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

Logische Struktur · sichere Speicherung
{
  "marketplace": "<retornado-na-ativacao>",
  "seller": "<retornado-na-ativacao>",
  "accessKey": "<retornado-na-ativacao>"
}
05

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

✓
Keine manuelle Eintragung von Zahlungsbildern

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

05 · SDK Embedded

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

Kotlin · Nachstart
Zoop.initialize(context) {
    credentials {
        marketplace = storedMarketplace
        seller = storedSeller
        accessKey = storedAccessKey
    }
}

val desktopPlugin = DesktopPlugin(
    Zoop.constructorParameters()
)

Zoop.plug(desktopPlugin)

Integrationszustand

Erste Ausführung Aktivierung

Start ohne Credentials, erzeugt Token und wartet auf einen Link über das IOPAY Portal

Ausdauer Erhaltene Daten

Ihre App speichert Marktplatz, Verkäufer und AccessKey geschützt

Nächste Hinrichtungen Auto-Anstieg

Die gespeicherten Daten werden ohne erneute Eintragung durch den Betreiber wiederverwendet

06 · Aktivierung

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

1
Erzeugen von Token

Ihre Anwendung fordert die Aktivierung des Komponents Zoop und erhält ein temporäres Token

2
Portal IOPAY

Das Token wird unter Zahlungsterminals → Terminal hinzufügen gemeldet

3
Bestätigung

Der SDK gibt die Daten zurück, die Ihre Anwendung für zukünftige Startups erhalten muss

!
Nicht ausstellen der Aktivierungsdaten

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

07 · Erste Zahlung

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

!
PINPad ohne Transaktionsschlüssel ist nicht bereit zum Verkauf

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

Kotlin · Desktop SDK
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

Identifizierung transactionId

Verknüpfen Sie die lokale Transaktion mit dem Auftrag und dem von IOPAY begleiteten Handel

Genehmigung NSU + Code

Preserve NSU and Authorization Code returned for Conciliation and Support

Beweise Entgegennahme-Daten

Speichern Sie die Beweisdaten, die von der SDK-Version zur Verfügung gestellt werden

i
Verwenden Sie — End of Flow — nicht als Synonym für Genehmigung

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

08 · Desktop Server

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

01

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

Terminal
java -version
02

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

WebSocket
ws://localhost:1337
JavaScript · Verbindungsergebnis
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();
};
03

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.

JSON · Aktivierung
{
  "type": "activation"
}

Wenn du erfolgreich bist, dann bestehe marketplace, seller und accessKey für die nächsten Initializationen

04

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

JSON · Initialieren
{
  "type": "initialize",
  "marketplace": "<valor recebido na ativacao>",
  "seller": "<valor recebido na ativacao>",
  "accessKey": "<valor recebido na ativacao>"
}
05

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

i
Die JSON-Marker werden runtime ausgefüllt

<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

09 · APIs & webhooks

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

Ereignis-Schicht IOPAY

Transaktionen, Betriebsupdates und Integrationsereignisse

Endpunkt konfiguriert Ihre Anwendung

Halten Sie Ihr Webhook-Endpunkt und korrelieren Sie die Ereignisse mit dem Anforderung, dem Terminal und dem lokalen Transaktionsort

Rekommendedes Korrelationsmodell

Anforderung referenceId

Verwenden Sie einen eigenen Identifikator, um die Zahlung mit Ihrem Applikationsantrag zu verbinden, wenn sie verfügbar ist

Das Gefangen TransaktionId / NSU

Speichern Sie die Identifikatoren, die durch den lokalen Terminalstrom zurückgegeben wurden

Asynchrone Ereignis Webhook IOPAY

Aktualisieren Sie den Status der Operation mit den Ereignissen, die die IOPAY-Integration empfängt

✓
Eine einzige Ereignis-Schicht für Ihre Anwendung

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

10 · Fehler und Stornierungen

Ü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

SDK Abschaffung der Kooperation

Wenn für den lokalen Stream anwendbar, verwenden Sie die SDK-dokumenterten Befehle, um eine laufende Operation zu unterbrechen/zurückzusetzen

Desktop Server JSON-Befehle

Der Server verfügt über eigene Lösch- und Statusmeldungen Begleiten Sie Start, Auswahl, Erfolg, Misserfolg und Abschluss gemäß der Dokumentation der verwendeten Version

!
Ablösung × Transaktionsstatus

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

11 · Sicherheit

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

Ausdauer Schutzgefüllter Speicher

Verwenden Sie eine lokale Plattform-appropriate Mechanismus und beschränken Sie den Zugriff auf die Prozesse, die wirklich Daten benötigen

Beobachtbarkeit Keine Geheimnisse in log

Schreiben Sie keinen AccessKey oder gleichwertige Daten in Logs, Spuren, Fehlermeldungen oder Analytics

Betriebs-UX Nicht wiederholt gedruckt

Aktivierung ist technisch Der Betreiber muss keine Credentials kopieren, um zu verkaufen

12 · Genehmigung

Checklist vor der Freilassung des Piloten

✓
Zentraler Betrieb bei IOPAY

Akkreditierung, Konto und Transaktionsfluss durch die IOPAY-Plattformen weiter, mit validierten Webhooks für Integrationsereignisse und Transaktionen

✓
Terminal mit dem Rechnungshof

Bestätigen Sie die Verbindung in Zahlungsterminals → Add Terminal und starten Sie Ihre Anwendung erneut, um die Verwendung der gespeicherten Daten zu validieren

✓
Ergebnis der ordnungsgemäß bewirtschafteten Zahlung

Show SDK-Messagen, differenzieren Sie den Erfolg von einfachen Flow-Endungen und speichern Sie transactionId, NSU, Zulassungscode und Belege/Receipt-Daten

✓
Fehler und Stornierungen

Dieser Kommunikationsfehler, Tokenverfall, Abbruch der Aufnahme und Stornierung im IOPAY- und Lokalstrom, soweit zutreffend

✓
Vorbereitete PINPad

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

✓
Sicherer Aufhalten

Aktivierungsdaten, die sich sicher aufbewahrt und fehlt an Bildschirmen, Logs und unzulässiger Telemetrie

13 · Referenzen

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

i
Technische Basis dieser Seite

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