Hallo! Zu Beginn des Sommers haben wir das Tinkoff Acquiring SDK aktualisiert und die zweite Version für Android und iOS veröffentlicht. Tinkoff Acquiring SDK ist eine Open-Source-Bibliothek für mobile Plattformen. Es ist bequem, Zahlungen in Anträgen damit zu akzeptieren. In diesem Artikel möchte ich Ihnen sagen, was für Internet-Unternehmer und ihre Käufer cool ist.
Was wurde verbessert
Probleme, die in der vorherigen Version waren:
- Komplexe Bibliotheksarchitektur. Aus diesem Grund haben die Entwickler viel Zeit damit verbracht, Fehler zu suchen und zu beheben.
- Redundante Bibliotheks-API. Entwickler haben bei der Integration des SDK häufig Fehler gemacht.
- Die Anforderungen von Apple Pay und Google Pay zum Einrichten dieser Zahlungsmethoden werden nicht eingehalten.
Was wir getan haben, um dies zu beheben, und was sonst noch neu ist:
- Wir haben den Code für beide Betriebssysteme komplett neu geschrieben. Refactoring des Codes und Hinzufügen vieler nützlicher Funktionen. Die Bibliotheken arbeiten jetzt in Kotlin und Swift.
- Das schnelle Zahlungssystem wurde hinzugefügt. Sie können per SBP mit einem QR-Code oder über "Instant Account" bezahlen - indem Sie auf die Schaltfläche im Zahlungsbildschirm klicken.
- Wir unterstützen die Komplettlösung. Alles an einem Ort: Karten verknüpfen, kontaktloses Bezahlen, schnelles Bezahlen mit einem QR-Code.
- Das Design wurde aktualisiert. Ein dunkles Thema wurde hinzugefügt. Wir haben jedoch nicht vergessen, das Thema auf Android anzupassen, das in der vorherigen Version enthalten war.
- Wir unterstützen weiterhin die vorherige Version. Wir haben an alle Clients gedacht, alte und neue nicht betrogen - das SDK funktioniert in der ersten und zweiten Version gleich. Wir empfehlen jedoch ein Upgrade, um die neuen Funktionen nutzen zu können.
Und jetzt über alles in Ordnung.
Wofür ist das Tinkoff Acquiring SDK gedacht?
Das SDK integriert die Internet-Erfassung in jede mobile Anwendung und eignet sich für Unternehmen, die Online-Zahlungen in Anwendungen akzeptieren: Online-Shops, Marktplätze, Reiseunternehmen, Reinigungsunternehmen, Streaming-Sites, freiberufliche Börsen.
Die Lösung hilft Käufern, eine Karte in der Anwendung zu verknüpfen und Einkäufe mit wenigen Klicks zu bezahlen, und Verkäufern, die Anwendung funktionsfähiger zu machen und Kunden an der Kasse nicht zu verlieren.
Das SDK kann Folgendes tun:
Scannen und Erkennen von Bankkarten mit der Kamera und NFC und Speichern. Der Käufer verknüpft die Karte einmal im Antrag und gibt dann nur den CVC-Code ein, um die Einkäufe zu bezahlen.
Akzeptieren Sie alle Arten von Zahlungen in der Anwendung: per Bankkarte, über Ihr persönliches Konto tinkoff.ru, Apple Pay und Google Pay.Einschließlich wiederkehrender Zahlungen - dh automatisch per Abonnement, ohne die Details erneut einzugeben.

Bezahlen Sie mit dem Fast Payment System (FPS). Das SDK hilft bei der Annahme von Zahlungen per UBS: Der Käufer bezahlt die Ware mit dem QR-Code, der alle Informationen zur Bestellung enthält. Lassen Sie uns zwei Szenarien implementieren: Zahlung in der Client-Anwendung und Rechnungsstellung.
Unterstützung von Online-Kassierern und Fiskalisierung. Alles stimmt mit FZ-54 überein.
Passen Sie das Zahlungsfenster für das Anwendungsdesign an. Verfügbar in Android Apps.
Architektonische Verbesserungen
Problem. Die Architektur des SDK-Codes ist so konzipiert, dass es schwierig und zeitaufwändig ist, neue Funktionen zu warten und zu implementieren.
Entscheidung. Die SDK-Entwickler haben den alten Bibliothekscode komplett überarbeitet:
- Der Code ist in den modernen Sprachen Kotlin und Swift geschrieben. Dies beschleunigte den Entwicklungsprozess und trug dazu bei, eine komfortable Architektur zu erstellen, die einfach zu warten und zu erweitern ist: Wir führen neue Funktionen schneller ein und Kunden erhalten Updates schneller. In der ersten Version ist der Code in Java und Objective-C geschrieben.
- Unter Android werden Bildschirmeinstellungen mit Kotlin DSL erstellt. Alle Multithread-Arbeiten basieren auf Coroutinen: Sie helfen bei der Verarbeitung von Anforderungen an das Netzwerk, während die Größe der Bibliothek um weniger als 1 MB zunimmt.
- Die Codemenge wurde im Projekt reduziert.Wir verwenden generische Aufzählung, Fehlerbehandlung mit Würfen und Erweiterungen einiger Basisklassen. Es wurde einfacher, das Projekt zu pflegen;
- aktualisierte API-Bibliotheken. Methoden zum Aufrufen von Bildschirmen und Grundfunktionen für die Zahlung wurden in eine separate Klasse verschoben. Dies ist ein einzelner Einstiegspunkt für die Bibliothek: Es ist viel einfacher, API-Methoden von einem Ort aus aufzurufen, als über den Code verteilt.
Die Struktur der Methoden wurde so gestaltet, dass die Arbeit mit der API bequem und verständlich war. Die Methoden sind gut dokumentiert und entsprechen den üblichen Standards für Java-, Kotlin- und Swift-Code.
So werden beispielsweise die Einstellungen des Zahlungsbildschirms im Android SDK generiert und gestartet:
val tinkoffAcquiring = TinkoffAcquiring("terminalKey", "password", "publicKey")
val paymentOptions = PaymentOptions()
.setOptions {
orderOptions {
orderId = "777"
amount = Money.ofCoins(1000)
title = "Order Title"
description = "Order Description"
}
customerOptions {
customerKey = "user-key"
checkType = CheckType.HOLD.toString()
email = "useremail@gmail.com"
}
featuresOptions {
localizationSource = AsdkSource(Language.RU)
useSecureKeyboard = true
}
}
tinkoffAcquiring.openPaymentScreen(this, paymentOptions, PAYMENT_REQUEST_CODE)
IOS SDK Beispiel:
let credentional = AcquiringSdkCredential(terminalKey: "terminalKey", password: "terminalPassword", publicKey: "testPublicKey")
let acquiringSDKConfiguration = AcquiringSdkConfiguration(credential: credentional)
if let sdk = try? AcquiringUISDK.init(configuration: acquiringSDKConfiguration) {
sdk.presentPaymentView(on: self, paymentData: createPaymentData(), configuration: acquiringViewConfiguration()) { [weak self] (response) in
self?.responseReviewing(response)
}
}
Das SDK beschränkt Kundenanwendungen nicht: Sie können beispielsweise Zahlungen nicht nur über die Bibliotheksbildschirme akzeptieren. Manchmal benötigen Geschäftsinhaber und ihre Entwickler mehr Funktionen in einer Anwendung.
Auf unserem Checkout-Bildschirm werden beispielsweise zwei Anfragen an den Server gestellt, und der Verkäufer benötigt eine zusätzliche Auftragsabwicklung in der Anwendung. Daher muss eine der Anforderungen ausgeführt werden, bevor der SDK-Bildschirm geöffnet wird, und die zweite muss bereits auf dem Bildschirm angezeigt werden. Wir können das schaffen.
Hierfür gibt es im SDK ein separates Core-Modul. Es ist plattformunabhängig und kann zum Aufrufen von Tinkoff Acquiring API-Methoden verwendet werden. Und das Modul mit dem UI-Teil bietet andere Lösungen ohne den SDK-Bildschirm - zusätzliche Methoden, mit denen der Zahlungsbildschirm ab einer bestimmten Phase gestartet wird.
Google Pay und Apple Pay
Problem. Google und Apple verlangen, dass sich ihre Zahlungsmethoden nicht neben den Karten auf dem SDK-Zahlungsbildschirm befinden, sondern als separate Schaltflächen in der Anwendung, die Sie selbst ausführen müssen. Die Client-Entwickler müssen mehr Arbeit beim Einrichten von Google Pay und Apple Pay leisten.
Entscheidung. Das aktualisierte SDK hat die Unterstützung für das Akzeptieren von Zahlungen über Google Pay und Apple Pay verbessert.
Wir berücksichtigen die Anforderungen von Google und Apple, vereinfachen aber gleichzeitig die Aufgabe für Entwickler. Die meisten Zahlungseinstellungen werden vom SDK verwaltet, und die Entwickler des Kunden müssen nur einige Methoden aufrufen.
Diese Methoden tun:
- Einrichten von Google Pay- und Apple Pay-Zahlungsdiensten;
- Verarbeiten der Verfügbarkeit von Diensten auf dem Gerät;
- Serviceabruf zur Zahlung;
- Verarbeitung des Zahlungsergebnisses.
Der Entwickler muss lediglich eine Schaltfläche gemäß den Servicerichtlinien erstellen, die Zahlungseinstellungen festlegen und das Token an das SDK übertragen, um die Zahlung über die Internet-Akquisition von Tinkoff abzuschließen.
Schnelles Zahlungssystem
Dies ist eine neue Funktion auf dem Fintech-Markt und eine neue Technologie, daher mussten die Entwickler sie von Grund auf im SDK implementieren. SBP hilft dabei, Zahlungen per QR-Code zu akzeptieren und sofort Geld auf das Konto des Händlers einzuzahlen - sie kommen sofort, auch an Wochenenden und Feiertagen.
Wie es funktioniert:
- Bei der Bezahlung der Bestellung klickt der Käufer auf "Pay via SBP".
- Der Käufer gibt den Bankantrag ein und bestätigt dort die Abhebung des Geldes. Der Betrag wird im Zahlungsformular angegeben.
- Nach der Zahlung geht das Geld sofort auf das Konto des Verkäufers.

Kunden können eine neue Zahlungsmethode in ihr persönliches Konto bei Tinkoff Payments einbinden. Danach können Kunden im mobilen SDK Zahlungen über das SBP akzeptieren - über eine Schaltfläche und einen QR-Code.
"Sofortkonto". Auf dem Zahlungsbildschirm wird eine Schaltfläche mit dem SBP-Logo angezeigt.
Die Bildschirmeinstellung fpsEnabled enthält eine Schaltfläche zum schnellen Auschecken im Android SDK:
var paymentOptions = PaymentOptions().setOptions {
orderOptions { /*options*/ }
customerOptions { /*options*/ }
featuresOptions {
fpsEnabled = true
}
}
Im iOS SDK müssen Sie buttonPaySPB übergeben:
let viewConfigration = AcquiringViewConfigration.init()
viewConfigration.fields = []
viewConfigration.fields.append(AcquiringViewConfigration.InfoFields.buttonPaySPB)
Durch statischen QR-Code. Der Verkäufer muss den Zahlungsbildschirm auf seinem Gerät öffnen und der Käufer muss den QR-Code vom Bildschirm aus scannen. Dies kann in der Bankanwendung oder mit einem beliebigen QR-Reader erfolgen. Die mobile Anwendung der Bank wird geöffnet, der Käufer gibt den Bestellbetrag ein und bezahlt die Waren.
Im SDK gibt es eine entsprechende Methode für den QR-Code-Zahlungsbildschirm. Ein Anwendungsentwickler muss eine Schaltfläche im Markup erstellen und eine Methode aufrufen.
Auf Android:
tinkoffAcquiring.openStaticQrScreen(context, screenOptions, STATIC_QR_REQUEST_CODE)
Methode unter iOS:
sdk.presentPaymentSbpQrImage(on: self, paymentData: createPaymentData(), configuration: acquiringViewConfiguration()) { [weak self] (response) in
self?.responseReviewing(response)
}
Aktualisiertes Design und dunkles Thema
Was:

Jetzt:

Wir haben an der Gestaltung von Bildschirmen gearbeitet. Die visuellen Elemente wurden aktualisiert - jetzt sehen sie modern aus und entsprechen der Corporate Identity von Tinkoff. Wie in der vorherigen Version haben wir die Anpassung des Themas auf Android über die Stilattribute belassen. Das Fenster kann wie eine Karte aussehen oder im Vollbildmodus geöffnet werden - dies lässt sich auch einfach in den Attributen einstellen.
Außerdem unterstützen SDK-Bildschirme jetzt die horizontale Geräteorientierung und das dunkle Thema. Um die Einstellungen der Clientanwendung beizubehalten, kann im Android SDK der dunkle Designmodus in den Anzeigeeinstellungen angegeben werden. Mögliche Werte: "Immer ein", "Immer aus", "Umschalten je nach Geräteeinstellungen oder Batteriesparmodus". Im iOS SDK wechselt das dunkle Thema abhängig von den Einstellungen der Anwendung.
Bildschirmlokalisierung
Problem. Wir haben die Standardlokalisierung aus dem SDK verwendet, abhängig von der auf dem Gerät installierten Sprache. Einige Clients benötigten erweiterte Einstellungen für die Bildschirmlokalisierung.
Entscheidung. Erweiterte Unterstützung für die Bildschirmlokalisierung für das Android SDK gestartet. Jetzt hängt es nicht mehr vom Gebietsschema des Geräts ab. Sie können Ihre eigene Lokalisierung für jede Sprache erstellen oder die Standard-SDK-Lokalisierung installieren. Die russische und englische Lokalisierung wird weiterhin auf beiden Plattformen unterstützt.
Wie fange ich an?
Um das SDK in die Anwendung zu integrieren, müssen Sie zuerst die Internetbeschaffung von Tinkoff Payments verbinden . Es ist schnell: Der Geschäftsinhaber reicht einen Antrag ein und füllt einen Fragebogen aus. Sobald wir die Daten überprüft und sichergestellt haben, dass alles in Ordnung ist, können wir das SDK verwenden. Dies dauert normalerweise zwei Tage oder weniger.
Methoden zum Verbinden von Bibliotheken, Dokumentation und Quellcode finden Sie in unserem GitHub:
→ Android SDK
→ iOS SDK
Wenn Sie Fragen zur Bibliothek haben oder Hilfe beim Upgrade auf eine neue Version benötigen, schreiben Sie uns, wir helfen Ihnen dabei, dies herauszufinden: oplata@tinkoff.ru . Oder erstellen Sie ein Problem im entsprechenden Abschnitt auf GitHub.