Tapaya
Zahlungsannahme vor OrtErste SchritteSchnellstart

Schnellstart

Android

Erfahren Sie, wie Sie das SDK einrichten, Ihre Umgebung konfigurieren und Ihre erste Transaktion erfolgreich durchführen.

Das Accept SDK läuft in Ihrer App und wickelt Zahlungen direkt auf dem Gerät ab: Es erfasst die Karte oder die Tap-to-Pay-Zahlung, verschlüsselt die Daten und hält die Kartenverarbeitung aus Ihrem Code heraus, sodass Sie außerhalb des PCI-Geltungsbereichs bleiben. Ihr Backend authentifiziert jede SDK-Session gegenüber der Tapaya API, führt das Onboarding der Händler durch und stößt KYB an. Tapaya führt die KYB-Prüfungen durch und rechnet die Gelder gegenüber dem Händler ab.

Integrationsweg wählen

Es gibt zwei Möglichkeiten, Kartenzahlungen mit Tap to Pay anzunehmen. Beide übergeben die eigentliche Interaktion mit der Karte an die Plugin-App Tapaya Terminal auf demselben Gerät. Sie unterscheiden sich darin, wie viel dieser Übergabe Ihre App selbst steuert:

Integrator-Konto einrichten

Bevor Sie Code schreiben, richten Sie das Konto ein, gegenüber dem sich Ihr Backend authentifiziert:

  1. Registrieren Sie sich unter platform.tapaya.com/register. Die Registrierung erfolgt per Self-Service: Eine Einladung ist nicht erforderlich.
  2. Melden Sie sich an und erstellen Sie dann Ihre Organisation oder treten Sie einer bestehenden bei; Sie werden direkt nach der Registrierung automatisch dazu aufgefordert.
  3. Generieren Sie Ihr Server Secret Token auf der Seite „API Keys“: Ihr Backend verwendet es, um die Tapaya Platform API aufzurufen (siehe Authentifizierung der Platform API).

Nicht dasselbe wie das Händler-Onboarding

Dies ist die Kontoeinrichtung für Sie als Integrator. Ihre Händler durchlaufen das Onboarding separat, entweder über das SDK, das Tapaya Platform UI, Ihre eigene Oberfläche oder einen Einladungslink. Details finden Sie unter Händler-Onboarding. POST /merchant/auth/register legt nur den Basis-Händlerdatensatz an; das gehostete Onboarding per Einladung beginnt mit POST /integrator/merchant/send-registration-invite.

Der Rest dieses Leitfadens beschreibt, wie Sie das SDK zu Ihrem Projekt hinzufügen, eine Session authentifizieren und Ihre erste Transaktion durchführen.

Abhängigkeit hinzufügen

Für Android wird das SDK über Maven Central veröffentlicht; unter React Native wird es mit npx expo install @tapayadot/accept-react-native aus npm installiert und über sein Config-Plugin eingebunden.

build.gradle.kts
dependencies {
    implementation("com.tapaya:accept:1.15.0")
}

Synchronisieren Sie das Projekt (Android) oder führen Sie npx expo prebuild --clean aus (React Native). Initialisieren und authentifizieren Sie das SDK anschließend in Ihrem Anwendungscode.

MyApplication.kt
// Step 1: Initialize (once, in Application.onCreate)
Accept.initialize(this) // sandbox by default; pass isProduction = true to go live

Authentifizieren Sie eine Händler-Session mit einem Token, das Sie von Ihrem Backend erhalten. authenticate ist eine suspend-Funktion und wirft bei einem Fehler eine AcceptException.

// Step 2: Authenticate (suspend; call from a coroutine)
try {
    val sdkToken = myBackend.login() // token from POST /merchant/auth/login
    Accept.auth.authenticate(sdkToken)
    // Accept.state now emits SdkState.Authenticated
} catch (e: AcceptException) {
    // handle authentication failure
}

Onboarding des Händlers

Bevor Transaktionen zugelassen werden, muss der Händler das KYB-Onboarding abschließen. Das Onboarding wird nicht mehr über das Accept SDK gesteuert. Schließen Sie es über das Tapaya Platform UI, Ihre eigene Oberfläche auf Basis der Tapaya API oder einen Einladungslink ab. Alle Methoden finden Sie unter Händler-Onboarding.

Automatische Genehmigung in der Sandbox

In der Sandbox-Umgebung werden Händler direkt nach dem Onboarding automatisch genehmigt, sodass Sie nicht auf die Prüfung durch den Zahlungsabwickler warten müssen.

Bereitschaft des Händlers prüfen

Stellen Sie sicher, dass der Händler das Onboarding abgeschlossen hat und für die Zahlungsannahme genehmigt ist.

val ready = when (val status = Accept.merchant.onboardingStatus()) {
    OnboardingStatus.ReadyForPayments -> true
    is OnboardingStatus.RequiresAction -> false // status.state describes what's blocking
}

Der Händler ist erst bereit, nachdem der Zahlungsabwickler ihn genehmigt hat. Fehlen Angaben, muss das Onboarding wiederholt werden. In manchen Fällen kann der Zahlungsabwickler den Händler vollständig sperren, etwa beim Verkauf verbotener Waren.

Terminal installieren und aktivieren

Plugin-App erforderlich

Für Kartenzahlungen muss das Plugin Tapaya Accept auf dem Gerät installiert sein. Prüfen Sie dies mit Accept.plugin.isInstalled() und öffnen Sie mit Accept.plugin.install() den Store-Eintrag, falls es fehlt.

Das Plugin Tapaya Accept ist für Kartenzahlungen erforderlich. Prüfen Sie, ob es installiert ist, und aktivieren Sie dann das Terminal, oder öffnen Sie den Eintrag im Play Store, um es zu installieren.

Plugin

if (Accept.plugin.isInstalled()) {
    // suspend; returns ActivateTerminalResult (Success / Canceled / Failed)
    Accept.plugin.activateTerminal()
} else {
    Accept.plugin.install() // opens the store listing
}

Zahlungstransaktion erstellen

Um eine Transaktion durchzuführen, rufen Sie Accept.payments.pay() mit dem Betrag (in der kleinsten Einheit der Währung) und einem Währungscode nach ISO 4217 auf. Die Methode gibt einen Flow<PaymentEvent> zurück; sammeln Sie ihn ein (collect), um den Fortschritt und das endgültige Ergebnis zu verfolgen. pay() wirft nie eine Exception: Fehler kommen als PaymentEvent.CreationFailed an.

Für den Schnellstart genügen amount und currency. Alle optionalen Parameter, etwa ein festes Trinkgeld, Anpassungen am Beleg oder Metadaten, finden Sie unter Zahlung erstellen.

Zahlung

Accept.payments.pay(amount = 15000, currency = "CZK") // 150.00 Kč
    .collect { event ->
        when (event) {
            PaymentEvent.Creating -> Log.d("pay", "creating")
            is PaymentEvent.Created -> Log.d("pay", "created ${event.paymentToken}")
            PaymentEvent.Launched -> Log.d("pay", "launched")
            is PaymentEvent.Result -> Log.d("pay", event.payResult.toString())
            is PaymentEvent.CreationFailed -> Log.e("pay", event.cause.toString())
        }
    }
Fehlt Ihnen etwas auf dieser Seite?Wünschen Sie sich eine Funktion. Wir hängen diese Seite an, damit das Team den Kontext sieht.