is_ownership_verified: true. Dadurch kann eine verknüpfte Travel-Rule-Transaktion aus dem Status UNCONFIRMED_OWNERSHIP voranschreiten.
Wann Didit die Sitzung für Sie erstellt
Sie müssen selten selbst eine Sitzung erstellen. Wennauto_wallet_verification in Ihren Travel-Rule-Einstellungen aktiviert ist (Standardeinstellung), erstellt Didit bei der Anlage der Transaktion automatisch eine Widget-Sitzung, sobald eine Transaktion den Nachweis der Wallet-Kontrolle durch den Endbenutzer erfordert:
- Die Transaktion befindet sich im Status
UNCONFIRMED_OWNERSHIP, weil die Gegenpartei-Wallet bei der Einreichung als selbstverwahrt deklariert wurde. - Die Transaktion ist ausgehend und befindet sich im Status
COUNTERPARTY_VASP_NOT_FOUND. Es konnte kein VASP der Gegenpartei ermittelt werden, daher ist der Eigentumsnachweis der verbleibende Weg zum Abschluss.
action_required der Transaktion zurückgegeben (type: "wallet_ownership", mit der zu öffnenden url). Die SDKs starten sie bei der clientseitigen Übermittlung automatisch.
Eingehende Transaktionen, die Didit für Sie anlegt (eine Sunrise-Registrierung, eine eingehende TRP-Anfrage oder der eingehende Abschnitt der INTERNAL-Schiene), erhalten niemals eine automatisch erstellte Sitzung, auch wenn sie im Status UNCONFIRMED_OWNERSHIP landen.
Erstellen Sie die Sitzung manuell mit POST /v3/travel-rule/widget-session/, wenn Sie eine Wallet vor dem Bestehen einer Transaktion vorab verifizieren möchten, wenn auto_wallet_verification deaktiviert ist oder wenn es um eine der genannten eingehenden Transaktionen geht.
Was es belegt
Das Widget bietet bis zu vier Nachweismethoden. Welche davon angezeigt werden, hängt davon ab, wie Sie die Sitzung erstellt haben, und von Ihren Travel-Rule-Einstellungen:Vertragsprüfung bei Nachrichtensignierung
Die Übermittlung der Signatur liefert200 mit status: "VERIFIED", sobald sie die Kontrolle über die Wallet belegt.
Sie liefert 400 und lässt den Nachweis offen, damit der Kunde erneut signieren kann, mit einem dieser code-Werte:
Vertragsprüfung beim Satoshi-Test
Die Verifizierung einer Satoshi-Test-Einzahlung erfolgt asynchron, da die Transaktion On-Chain sichtbar sein und anschließend bestätigt werden muss. Die Übermittlung dertxid der Einzahlung liefert 200 mit status: "PENDING", solange die Einzahlung On-Chain noch nicht bestätigt ist. Die txid wird dabei gespeichert und nicht verworfen.
Sobald die Einzahlung bestätigt ist, liefert sie 200 mit status: "VERIFIED".
Bei einer tatsächlich falschen Einzahlung liefert sie 400 mit status: "REJECTED": wenn sie von einer anderen Wallet stammt, nicht den erwarteten Betrag an die Einzahlungsadresse sendet, älter als die Challenge ist oder die Transaktion bereits den Besitz einer anderen Wallet nachgewiesen hat. Der Nachweis wird dann geschlossen, und der Kunde kann einen neuen starten, solange die Sitzung noch Versuche übrig hat.
Eine Einzahlung, die noch nicht indexiert ist, liefert ebenfalls 200 mit status: "PENDING". Schlägt eine Abfrage auf Seiten von Didit fehl, liefert sie 400 mit dem Code DEPOSIT_LOOKUP_FAILED. In beiden Fällen bleibt der Nachweis offen, und Didit prüft weiter.
Sie liefert 410, wenn das Testfenster abläuft, bevor eine gültige Einzahlung erkannt wurde.
Sobald eine txid übermittelt wurde, prüft ein Hintergrundjob die ausstehende Einzahlung alle fünf Minuten erneut und schließt den Nachweis ab, nachdem die Transaktion bestätigt wurde. Der Kunde muss die txid daher nicht erneut übermitteln.
Wenn Sie eine satoshi_deposit_address übergeben, wird der eigene expires_at-Wert der Widget-Sitzung auf mindestens das 24-Stunden-Fenster des Satoshi-Tests verlängert. So hat die Einzahlung Zeit zur Bestätigung, bevor die Sitzung selbst abläuft.
Ablauf
1
Widget-Sitzung erstellen
Rufen Sie
POST /v3/travel-rule/widget-session/ mit dem Wallet auf, das verifiziert werden muss. Optional können Sie die Sitzung mit einer Transaktion verknüpfen, damit die Transaktion automatisch voranschreitet, sobald der Besitz nachgewiesen ist.2
Die zurückgegebene URL öffnen
Senden Sie Ihren Kunden an die
url aus der Antwort. Dort erbringt er einen Nachweis, ohne dass ein Didit-Konto oder ein API-Schlüssel erforderlich ist. Das Token in der URL dient als Authentifizierung.3
Abschluss erkennen
Wenn ein Nachweis verifiziert wurde, markiert das Widget den Adressbucheintrag als verifiziert und schreitet die Transaktion voran, sofern die Sitzung mit einer Transaktion verknüpft ist. Achten Sie auf
travel_rule.status.updated (bei verknüpften Transaktionen) oder fragen Sie den Widget-Kontext ab.Widget-Sitzung erstellen
Dieses Beispiel verknüpft die Sitzung mit der deklarierten selbstverwahrten Transaktion aus dem Travel-Rule-Leitfaden. Daher istwallet_address die Ziel-Wallet dieser Transaktion.
Eine mit einer Transaktion verknüpfte Sitzung akzeptiert nur Nachweise für die Wallet der Gegenpartei dieser Transaktion.
url immer unverändert. Erstellen Sie sie nicht selbst.
Die zurückgegebene URL öffnen
Abschluss erkennen
Das Widget stellt einen öffentlichen Lese-Endpoint bereit, der über das Token adressiert wird. Fragen Sie ihn ab, um den Fortschritt zu sehen, oder verlassen Sie sich auf Webhooks, wenn die Sitzung mit einer Transaktion verknüpft ist:completed_atist nicht mehr null, sobald ein Nachweis verifiziert wurde.- Jeder Eintrag in
proofsenthält die Felder, die seine Methode benötigt: EinSATOSHI_TEST-Nachweis ergänztdeposit_address,expected_amountund sein eigenesexpires_at. EinMESSAGE_SIGNING-Nachweis ergänztchallenge, die Zeichenfolge, die der Kunde signiert. - Ein
SATOSHI_TEST-Nachweis kann den Statusstatus: "PENDING"haben, während seine Einzahlung On-Chain erkannt, aber noch nicht bestätigt ist. Dafür müssen weder Sie noch der Kunde etwas tun. Siehe oben den Verifizierungsvertrag für den Satoshi-Test. - Wurde die Sitzung mit einer
transaction_iderstellt, schreitet die verknüpfte Transaktion voran, sobald der Nachweis verifiziert ist. In einer Live-Anwendung wird außerdem der Webhooktravel_rule.status.updatedausgelöst. Bevorzugen Sie den Webhook gegenüber Polling. Eine eingehendeTRP-Anfrage wird genehmigt und an den Absender zurückgesendet und wechselt zuCOMPLETED, sobald diese Freigabe zugestellt ist. Jede andere Transaktion inUNCONFIRMED_OWNERSHIP(oder eine eingehende Transaktion inON_HOLD) wechselt zuCOMPLETED. Stimmt der Name des Begünstigten nicht mit dem Wallet-Inhaber überein, wechselt sie stattdessen zuCOUNTERPARTY_MISMATCHED_DATA. Eine abgewickelte Sunrise-Einzahlung, die abgeschlossen wird, wechselt zuFINISHED. Eine ausgehende Transaktion inCOUNTERPARTY_VASP_NOT_FOUNDwechselt zuCOMPLETED. - Ein
SCREENSHOT-Nachweis behält in diesem Kontext den Statusstatus: "PENDING", auch nachdem Sie den Besitz bestätigt haben. Sie genehmigen ihn mitPOST .../travel-rule/ownership/. Dieser Endpoint akzeptiert nur eine Transaktion, die auf die Bestätigung des Besitzes wartet. Ein Screenshot hat daher keinen Genehmigungsweg in einer Sitzung ohne verknüpfte Transaktion oder in einer Sitzung mit einer ausgehenden Transaktion inCOUNTERPARTY_VASP_NOT_FOUND. Deaktivieren Sieallow_screenshot_proof, wenn solche Sitzungen diesen Nachweistyp nicht anbieten dürfen. - Nach einem abgelehnten Nachweis erhält die Sitzung einen neuen Versuch, solange noch Versuche übrig sind.
max_attempts,attempts_usedundattempts_remaininggeben die Anzahl an. Ein abgelehnter Nachweis enthältrejection_reason. Istattempts_remaininggleich0, liefert der Start eines weiteren Nachweises die Antwort409, und Sie erstellen eine neue Sitzung. - Der Kontext-Endpoint liefert
404für ein unbekanntes Token und410, sobald die Sitzung abgelaufen ist, ohne abgeschlossen worden zu sein.
Hier besteht keine Abhängigkeit von einmaligen Vorgängen: Das Widget und Ihr Backend greifen beide auf denselben dauerhaften Zustand zu (den verifizierten Adressbucheintrag und den Transaktionsstatus). Der Vorgang lässt sich daher nach einem verlorenen Webhook oder einem geschlossenen Tab immer wieder fortsetzen, indem Sie die Transaktion oder den Widget-Kontext erneut abrufen.
Lokalisierung und Branding
Das Widget wird in 54 Sprachen angezeigt und folgt dabei dem Sprachpfad des Links (oder der Browser-Standardsprache). Wenn White-Label für Ihre Anwendung aktiviert ist, übernimmt das Widget automatisch Ihr Branding des Verifizierungsablaufs: Logo, Markenfarben, Gestaltung von Schaltflächen und Panels, benutzerdefinierte Schriftart, Favicon und den öffentlichen Namen Ihrer App im Titel. Dafür ist keine separate Konfiguration nötig: Es gilt dieselbe Anpassung, die Sie für KYC-Sitzungen eingerichtet haben. Ein Benutzer, der zu einem bereits abgeschlossenen Link zurückkehrt, sieht erneut den Abschlussbildschirm. Haben Sie einecallback_url übergeben, leitet das Widget ihn dorthin weiter.
Abgelaufene Links zeigen einen gebrandeten Ablaufbildschirm an, auf dem der Benutzer aufgefordert wird, einen neuen Link anzufordern.
Erstellen Sie für ihn eine neue Sitzung mit POST /v3/travel-rule/widget-session/: Das erneute Senden eines Transfers mit action: "resend" erstellt keine Sitzung.
Nächste Schritte
Travel Rule
Der vollständige Lebenszyklus des Austauschs, Zahlungswege, Einstellungen und Empfangsabläufe.
Wallet-Adressbuch
Registrieren Sie die Wallets, die Sie kontrollieren, damit eingehende Transfers ihnen zugeordnet werden.
Webhooks
Abonnieren Sie travel_rule.status.updated, um zu reagieren, sobald ein Nachweis einen Transfer weiterbringt.
Native SDKs
Öffnen Sie die Widget-URL im System-Browser und nicht in der WebView des SDK.