Halo! Di awal musim panas, kami memperbarui Tinkoff Acquiring SDK dan merilis versi kedua untuk Android dan iOS. Tinkoff Acquiring SDK adalah pustaka sumber terbuka untuk platform seluler. Lebih mudah untuk menerima pembayaran dalam aplikasi dengannya. Pada artikel ini saya ingin memberi tahu Anda apa yang keren bagi pemilik bisnis internet dan pembelinya.
Apa yang telah diperbaiki
Masalah yang ada di versi sebelumnya:
- Arsitektur perpustakaan yang kompleks. Karena itu, para pengembang menghabiskan banyak waktu untuk mencari dan memperbaiki bug.
- API perpustakaan redundan. Pengembang sering membuat kesalahan saat mengintegrasikan SDK.
- Persyaratan Apple Pay dan Google Pay untuk menyiapkan metode pembayaran ini tidak diikuti.
Apa yang kami lakukan untuk memperbaikinya, dan apa lagi yang baru:
- Kami telah sepenuhnya menulis ulang kode untuk kedua sistem operasi. Refactoring kode dan menambahkan banyak fitur berguna. Library sekarang berfungsi di Kotlin dan Swift.
- Menambahkan Sistem Pembayaran Cepat. Anda dapat membayar melalui SBP menggunakan kode QR atau melalui "Akun Instan" - dengan mengklik tombol di layar pembayaran.
- Kami mendukung semua dalam satu solusi. Semuanya di satu tempat: menautkan kartu, pembayaran nirsentuh, pembayaran cepat menggunakan kode QR.
- Memperbarui desain. Menambahkan tema gelap. Tetapi kami tidak lupa tentang menyesuaikan tema di Android, yang ada di versi sebelumnya.
- Kami terus mendukung versi sebelumnya. Kami memikirkan semua klien, tidak menipu yang lama dan yang baru - SDK bekerja dengan cara yang sama di versi pertama dan kedua. Namun, kami menyarankan Anda meningkatkan untuk memanfaatkan fitur-fitur baru.
Dan sekarang tentang segalanya secara berurutan.
Untuk apa Tinkoff Acquiring SDK?
SDK mengintegrasikan perolehan Internet ke dalam aplikasi seluler apa pun dan cocok untuk bisnis yang menerima pembayaran online dalam aplikasi: toko online, pasar, perusahaan perjalanan, pembersihan, situs streaming, pertukaran freelance.
Solusi ini membantu pelanggan untuk menautkan kartu dalam aplikasi dan membayar pembelian dalam beberapa klik, dan bagi penjual untuk membuat aplikasi lebih berfungsi dan tidak kehilangan pelanggan pada tahap pembayaran.
Inilah yang dapat dilakukan SDK:
Memindai dan mengenali kartu bank menggunakan kamera dan NFC dan menyimpannya. Pembeli menautkan kartu satu kali dalam aplikasi, lalu hanya memasukkan kode CVC untuk membayar pembelian.
Terima semua jenis pembayaran dalam aplikasi: dengan kartu bank, melalui akun pribadi Anda tinkoff.ru, Apple Pay, dan Google Pay.Termasuk pembayaran berulang - yaitu, otomatis, dengan berlangganan, tanpa memasukkan kembali detailnya.

Bayar menggunakan Sistem Pembayaran Cepat (FPS). SDK membantu menerima pembayaran melalui UBS: pembeli membayar barang menggunakan kode QR, yang berisi semua informasi tentang pesanan. Mari terapkan dua skenario: pembayaran di aplikasi klien dan pembuatan faktur.
Mendukung kasir dan fiskal online. Semuanya sesuai dengan FZ-54.
Sesuaikan jendela pembayaran untuk desain aplikasi. Tersedia di aplikasi Android.
Perbaikan arsitektur
Masalah. Arsitektur kode SDK dirancang sedemikian rupa sehingga sulit dan memakan waktu untuk memelihara dan mengimplementasikan fitur baru ke dalamnya.
Keputusan. Pengembang SDK melakukan pemfaktoran ulang lengkap dari kode perpustakaan lama:
- kode ditulis dalam bahasa modern Kotlin dan Swift. Ini mempercepat proses pengembangan dan membantu membangun arsitektur nyaman yang mudah dirawat dan diperluas: kami memperkenalkan fitur baru lebih cepat, dan pelanggan menerima pembaruan lebih cepat. Pada versi pertama, kode tersebut ditulis dalam Java dan Objective-C;
- di Android, pengaturan layar dibuat dengan Kotlin DSL. Dan semua pekerjaan multithread dibangun di atas coroutine: mereka membantu memproses permintaan ke jaringan, sementara ukuran perpustakaan meningkat kurang dari 1 MB;
- jumlah kode telah dikurangi dalam proyek.Kami menggunakan enum Generik, penanganan kesalahan dengan lemparan dan ekstensi dari beberapa kelas dasar. Menjadi lebih mudah untuk memelihara proyek;
- Perpustakaan API yang diperbarui. Metode untuk layar panggilan dan fungsi dasar pembayaran dipindahkan ke kelas terpisah. Ini adalah satu titik masuk untuk pustaka: jauh lebih mudah untuk memanggil metode API dari satu tempat daripada dari tersebar di sekitar kode.
Struktur metode dirancang sedemikian rupa sehingga bekerja dengan API menjadi nyaman dan dapat dimengerti. Metodenya didokumentasikan dengan baik dan sesuai dengan standar biasa untuk kode Java, Kotlin, Swift.
Misalnya, seperti inilah pengaturan layar pembayaran dibuat dan diluncurkan di Android SDK:
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)
Contoh iOS SDK:
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)
}
}
SDK tidak membatasi aplikasi pelanggan: misalnya, Anda dapat menerima pembayaran tidak hanya melalui layar perpustakaan. Terkadang pemilik bisnis dan pengembangnya membutuhkan lebih banyak fitur dalam sebuah aplikasi.
Misalnya, di layar pembayaran kami, dua permintaan dibuat ke server, dan penjual membutuhkan pemrosesan pesanan tambahan dalam aplikasi. Oleh karena itu, salah satu permintaan harus dijalankan sebelum layar SDK terbuka, dan yang kedua harus sudah ada di layar. Kami bisa melakukannya.
Ada modul Inti terpisah untuk ini di SDK. Ini adalah platform agnostik dan dapat digunakan untuk menjalankan metode Tinkoff Acquiring API. Dan modul dengan bagian UI menawarkan solusi lain tanpa layar SDK - metode tambahan yang memulai layar pembayaran dari tahap tertentu.
Google Pay dan Apple Pay
Masalah. Google dan Apple mengharuskan metode pembayaran mereka ditempatkan tidak di sebelah kartu pada layar pembayaran SDK, tetapi sebagai tombol terpisah dalam aplikasi yang perlu Anda lakukan sendiri. Pengembang klien harus melakukan lebih banyak pekerjaan menyiapkan Google Pay dan Apple Pay.
Keputusan. SDK yang diperbarui telah meningkatkan dukungan untuk menerima pembayaran melalui Google Pay dan Apple Pay.
Kami memperhitungkan kebutuhan Google dan Apple, tetapi pada saat yang sama kami menyederhanakan tugas untuk pengembang. Sebagian besar setelan pembayaran ditangani oleh SDK, dan pengembang klien hanya perlu memanggil beberapa metode.
Metode ini melakukan:
- menyiapkan layanan pembayaran Google Pay dan Apple Pay;
- memproses ketersediaan layanan di perangkat;
- panggilan layanan untuk pembayaran;
- memproses hasil pembayaran.
Yang perlu dilakukan pengembang adalah membuat tombol sesuai dengan pedoman layanan, mengatur pengaturan pembayaran dan mentransfer token ke SDK untuk menyelesaikan pembayaran melalui akuisisi Internet Tinkoff.
Sistem pembayaran cepat
Ini adalah fitur baru di pasar fintech dan teknologi baru, sehingga para pengembang harus menerapkannya di SDK dari awal. SBP membantu menerima pembayaran dengan kode QR dan langsung menyetorkan uang ke akun pedagang - pembayaran langsung datang, bahkan pada akhir pekan dan hari libur.
Bagaimana itu bekerja:
- Saat membayar pesanan, pembeli mengklik "Bayar melalui SBP".
- Pembeli memasuki aplikasi perbankan dan mengonfirmasi penarikan uang di sana. Jumlahnya akan ditunjukkan dalam formulir pembayaran.
- Setelah pembayaran, uang segera masuk ke rekening penjual.

Pelanggan dapat menghubungkan metode pembayaran baru di akun pribadi Tinkoff Payments mereka. Setelah itu, di SDK seluler, pelanggan akan dapat menerima pembayaran melalui SBP - dengan tombol dan kode QR.
"Akun instan". Tombol dengan logo SBP muncul di layar pembayaran.
Setelan layar fpsEnabled menyertakan tombol untuk pembayaran cepat di Android SDK:
var paymentOptions = PaymentOptions().setOptions {
orderOptions { /*options*/ }
customerOptions { /*options*/ }
featuresOptions {
fpsEnabled = true
}
}
Di SDK iOS, Anda harus meneruskan buttonPaySPB:
let viewConfigration = AcquiringViewConfigration.init()
viewConfigration.fields = []
viewConfigration.fields.append(AcquiringViewConfigration.InfoFields.buttonPaySPB)
Dengan kode QR statis. Penjual harus membuka layar pembayaran di perangkatnya, dan pembeli harus memindai kode QR dari layar. Ini dapat dilakukan di aplikasi perbankan atau dengan pembaca QR apa pun - aplikasi seluler bank akan terbuka, pembeli akan memasukkan jumlah pesanan dan membayar barang.
Ada metode yang sesuai untuk layar pembayaran kode QR di SDK. Pengembang aplikasi perlu membuat tombol di markup dan memanggil metode.
Di Android:
tinkoffAcquiring.openStaticQrScreen(context, screenOptions, STATIC_QR_REQUEST_CODE)
Metode di iOS:
sdk.presentPaymentSbpQrImage(on: self, paymentData: createPaymentData(), configuration: acquiringViewConfiguration()) { [weak self] (response) in
self?.responseReviewing(response)
}
Desain yang diperbarui dan tema gelap
Dulu:

Sekarang:

Kami telah mengerjakan desain layar. Elemen visualnya telah diperbarui - sekarang terlihat modern dan sejalan dengan identitas korporat Tinkoff. Seperti di versi sebelumnya, kami meninggalkan kustomisasi tema di Android melalui atribut gaya. Jendela dapat terlihat seperti kartu atau terbuka dalam layar penuh - ini juga mudah diatur di atribut.
Selain itu, layar SDK sekarang mendukung orientasi perangkat horizontal dan tema gelap. Untuk mempertahankan pengaturan aplikasi klien, di Android SDK, mode tema gelap dapat ditentukan di pengaturan tampilan. Nilai yang memungkinkan: "Selalu aktif", "Selalu nonaktif", "Pengalihan bergantung pada setelan perangkat atau mode hemat baterai." Di SDK iOS, tema gelap beralih tergantung pada pengaturan aplikasi itu sendiri.
Lokalisasi layar
Masalah. Kami menggunakan lokalisasi standar dari SDK, bergantung pada bahasa yang diinstal di perangkat. Beberapa klien memerlukan pengaturan lokalisasi layar lanjutan.
Keputusan. Meluncurkan dukungan tambahan untuk pelokalan layar untuk Android SDK. Sekarang tidak tergantung pada lokal perangkat. Anda dapat membuat pelokalan Anda sendiri untuk bahasa apa pun atau memasang pelokalan SDK standar. Pelokalan bahasa Rusia dan Inggris masih didukung di kedua platform.
Bagaimana cara mulai menggunakan
Untuk mengintegrasikan SDK ke dalam aplikasi, Anda harus terlebih dahulu menghubungkan akuisisi internet Tinkoff Payments . Cepat: pemilik bisnis mengajukan aplikasi, mengisi kuesioner. Setelah kami memeriksa data dan memastikan semuanya sudah beres, kami dapat mulai menggunakan SDK. Ini biasanya membutuhkan waktu dua hari atau kurang.
Metode untuk menghubungkan perpustakaan, dokumentasi dan kode sumber, lihat GitHub kami:
โ Android SDK
โ iOS SDK
Jika Anda memiliki pertanyaan tentang perpustakaan atau butuh bantuan dengan transisi ke versi baru, menulis kepada kami, kami akan membantu Anda mencari tahu: oplata@tinkoff.ru . Atau buat Masalah di bagian yang sesuai di GitHub.