Terminal QIWI. Cara memanfaatkan teknologi sederhana secara maksimal

Pada awal 2017, kami, tim pengembangan perangkat lunak untuk Terminal QIWI, mengumpulkan keinginan departemen perusahaan - kami mempelajari tugas global apa yang ingin diselesaikan oleh rekan kerja kami dengan bantuan kami, sehingga kehidupan menjadi lebih mudah.

Saya sangat senang dengan permintaan layanan pelanggan yang bekerja dengan panggilan dan klaim dari pembayar:

"Ada masalah: klien melakukan pembayaran di terminal, tetapi dia masih belum bisa memproses - terminal bisa membeku, atau Internet yang bekerja melalui modem gsm terputus. Dan ternyata klien memiliki cek, tetapi tidak ada pembayaran dalam sistem. Akan lebih baik dalam kasus seperti itu untuk mempelajari cara mengirim pembayaran ke QIWI.

Ada juga sekelompok klien yang cemas, segera setelah melakukan pembayaran, menghubungi nomor pusat panggilan untuk memastikan bahwa semuanya baik-baik saja dengannya. Akan bagus untuk memotong tulang untuk panggilan seperti itu. "

Jadi kami memiliki tugas yang kompleks: mempelajari cara melakukan pembayaran jika terjadi kegagalan komunikasi dengan terminal dan untuk mengurangi jumlah panggilan masuk dari pelanggan dengan menciptakan alat layanan mandiri untuk memeriksa status pembayaran. Kasingnya jelas. Mereka mulai mencari solusi yang nyaman bagi klien dan tanpa risiko keamanan.

Pelanggan, menurut tradisi, menawarkan pilihannya - untuk mencetak pada tanda terima serangkaian karakter yang dapat disampaikan oleh pembayar kepada operator, dan dia, pada gilirannya, untuk memahami apakah ini pembayaran kami atau tidak, menyaring penipuan atau melakukan operasi secara manual.

Konsep gagasan itu jelas, tetapi tidak dapat direalisasikan, jadi kami melangkah lebih jauh: kami memutuskan untuk menanamkan data pembayaran dalam kode QR, mencetaknya pada kwitansi, dan menduplikasi Terminal QIWI di layar untuk akurasi. Dengan memindai kode QR dengan kamera perangkatnya, klien dapat mengetahui status operasi. Dan dalam kasus non-pembayaran di QIWI, sistem secara otomatis membuatnya. Dengan demikian, klien tidak hanya mengetahui apakah uang telah tiba, tetapi juga melakukannya secara mandiri, terlepas dari keadaan terminal.

Pada pandangan pertama, solusinya jelas: mengambil permintaan yang ada dengan pembayaran, membungkusnya dalam kode QR, menulis halaman web dengan informasi transaksi dan permintaan proxy layanan microservice antara terminal, pemrosesan dan web. Diasumsikan bahwa proyek akan bekerja pada metode otentikasi terminal yang ada dan menggunakan metode pembayaran yang ada dalam pemrosesan.

Idenya datang segera, mengungkapkan potensi kreatif tim. Kami mulai memancar dan mengeluarkan opsi tambahan hingga menempatkan logo, slogan, dan bahkan beriklan dalam kode QR di samping data pembayaran:

gambar

Sebuah proyek untuk beberapa sprint, tidak lebih. Itu dia.

Frustrasi pertama


Kami mengambil pembayaran yang ada dan membentuk kode QR:

gambar

Akibatnya, bahkan iPhone7 terakhir saat itu tidak dapat membacanya. Pada cek, kode QR, hanya terdiri dari pembayaran dan data tanda tangan, hampir tidak muat di setengah lembar A4. Baris permintaan pembayaran terlalu panjang. Ini adalah kesedihan pertama.

Itu perlu untuk memecahkan dua masalah utama:

  • mengurangi jumlah karakter dalam permintaan pembayaran, mis. datang dengan solusi di mana kita bisa pergi dari permintaan xml yang ada ke yang lebih kompak;
  • pilih algoritma enkripsi dan panjang kunci yang akan memberikan kekuatan dan keandalan kriptografi yang tinggi dengan ukuran tanda tangan yang lebih kecil.

Kriteria untuk menilai jumlah karakter optimal untuk kode QR adalah satu - harus dibaca oleh kamera dari sebagian besar ponsel.

Namun, dalam beberapa pertemuan kerja, sebuah solusi ditemukan:

  • alih-alih permintaan xml, kami memutuskan untuk menggunakan permintaan-mendapatkan dengan parameter pembayaran dan pemisah di antara mereka;
  • membangun tanda tangan pada kurva eliptik untuk mempersingkat panjangnya.

Keuntungan menggunakan permintaan-mendapatkan adalah bahwa kamera ponsel atau program khusus, melihat tautan dalam kode QR, segera membukanya di browser, yang memungkinkan untuk melakukan pembayaran dalam satu tindakan. Untuk mengurangi ukuran permintaan dapatkan, kami harus mengganti nama parameter dengan pembatas.

Sebagai hasil dari serangkaian tindakan, permintaan pembayaran berkurang dari sekitar 1.100 menjadi 200 karakter. Plus, saya harus menerapkan tingkat koreksi kesalahan terendah dari kode QR - L.

Untuk implementasi, diperlukan untuk mengembangkan komponen dalam sistem:

  • buat api baru untuk melakukan pembayaran melalui kode QR;
  • memperkenalkan mekanisme baru untuk bekerja dengan kunci kriptografi antara terminal dan pemrosesan;
  • mengimplementasikan layanan mikro di mana fungsi permintaan proxy, memeriksa integritas data yang diterima, serta fungsi memblokir permintaan yang mencurigakan dan mengumpulkan statistik operasi akan menggantung;
  • mengembangkan halaman web untuk menampilkan informasi pembayaran;
  • Kembangkan sistem batasan dan periksa saluran pembayaran baru.

Untuk skema kerja yang ada:

gambar

Kami berencana untuk menambahkan alternatif:

gambar

Dalam perjalanan proyek, tampaknya, kecil, tetapi membutuhkan pemecahan masalah, yang sebenarnya membutuhkan banyak waktu, menunda tanggal peluncuran.

Penelitian UX, atau pekerjaan datang dari tempat mereka tidak menunggu


Saya ingin melakukan semua hal seperti yang dilakukan orang, jadi mereka membawa spesialis UX untuk mengimplementasikan proyek untuk menyelesaikan masalah:

  • di bagian mana dari layar Terminal QIWI untuk menempatkan kode QR dan bagaimana menjelaskan kegunaannya kepada klien?
  • di mana menempatkan kode QR pada cek dan bagaimana cara mendorong penjelasan serupa?
  • Bagaimana cara membuat tata letak halaman web dengan status pembayaran, sehingga jelas tentang panduan perusahaan?

Jelas, untuk pelanggan tingkat lanjut, penjelasan tambahan tentang kode QR tidak diperlukan, mereka hanya perlu menunjukkan hasilnya. Tapi kami ingin menutupi bagian pelanggan yang kode QR-nya adalah singkatan ajaib atau hanya "kotak hitam". Merekalah yang memutuskan jalur call center.

Untuk membuatnya indah dan dapat dimengerti, wawancara dilakukan di dalam kelompok fokus yang menarik bagi kami dengan hasil yang tidak terduga ...

Brevity mirip dengan menabung


Ternyata menakutkan - audiens yang kami butuhkan tidak selalu memahami arti kata "Pindai" dan turunannya. Oleh karena itu, kata asli “Pindai dan cari tahu statusnya” harus ditinggalkan. Solusinya adalah kemampuan teknis untuk mengirim foto kode QR melalui email. Dan itu juga perlu untuk mengatakan ini secara singkat dan jelas, karena pita periksa adalah bahan yang dapat dibuang dari pemilik terminal dan perhatian kita terhadap bisnis orang-orang ini adalah ekonomi. Akibatnya, cek sekarang terlihat seperti ini:

gambar

Sedangkan untuk tampilan kode QR pada layar terminal, ia ditempatkan pada halaman terakhir pembayaran - yang terbaru dalam skenario pembayaran. Ini ditampilkan pada saat cek dicetak dan pada dasarnya merupakan duplikat elektronik dari kode QR yang dicetak.

Email ada di mana-mana


Sehubungan dengan munculnya saluran baru untuk memproses kode QR dalam bentuk e-mail, menjadi perlu untuk mengembangkan mekanik dengan fungsi mengenali kode QR yang tertanam dalam surat dan menghasilkan respons dengan status pembayaran.

Fungsi mengenali kode QR diambil di microservice. Pada implementasi awal, tingkat pengakuan sekitar 65% dalam sampel foto yang disajikan. Kami mencoba bermain dengan perubahan warna dan peningkatan kontras - ini memberi sekitar + 20% pengakuan sukses.

Ceri pada kue dalam tugas mengenali foto-foto kode QR adalah pengenalan "kecerdasan alami" untuk kasus-kasus sulit yang tidak dikenal - pembuatan aplikasi dan pemrosesan mereka mulai dilakukan dalam mode manual:

gambar

Teknis bukan hal sepele


Perkembangan utama pada proyek ini, tentu saja, menyangkut microservice itu sendiri dan perangkat lunak terminal.

QIWI secara aktif pindah ke arsitektur microservice agar tidak menyentuh mesin besar. Microservice memungkinkan Anda untuk dengan cepat melakukan perubahan pada proyek, melakukan tes dan merilis rilis. Karena itu, dalam beberapa bulan kami menulis sendiri. Kami bergantung pada itu semua perkembangan baru utama yang hanya bisa dibuat:

  • proksi permintaan dengan mem-parsing dan menganalisis permintaan-masuk yang masuk, mengubahnya menjadi xml untuk diproses,
  • fungsi untuk membatasi permintaan masuk dari terminal,
  • Fungsi pengenalan kode QR,
  • pengumpulan statistik untuk analisis lebih lanjut.

Selain penerapan mekanisme baru untuk bekerja dengan kunci kriptografi, peningkatan terminal menyentuh penerapan teknologi baru untuk mencetak tanda terima.

Fungsionalitas untuk formasi mereka diambil dari inti utama program dalam plugin. Sekarang kita dapat mengimplementasikan perubahan pada pemeriksaan dengan segera, tanpa menyentuh operabilitas terminal secara keseluruhan. Tugas mencetak kode QR, yang, pada pandangan pertama, tampaknya cukup sederhana dan turun untuk mencetak gambar pada cek, tidak benar-benar seperti itu.

Ini karena jaringan pemilik terminal kami memiliki sekitar 20 model beragam printer, dan kami mencetak sekitar 40 jenis tanda terima. Ketika mereka mulai implementasi, banyak nuansa yang keluar: baik garis dan lokasi objek dalam templat cek mulai mengambang ketika gambar ditambahkan, kemudian beberapa perintah sensitif terhadap lokasi, dan kemudian baris dipecah menjadi tab.

Kami mulai menguji, kami menyadari perlunya kompromi - beberapa model printer harus dikecualikan, karena ketika menguji semua konfigurasi, sejumlah besar case keluar.

Untuk pengujian, kami memutuskan untuk memilih 6 model utama, yang mencakup 91% dari jaringan agen. Dan, tentu saja, pada saat melakukan tes acak di lingkungan pertempuran, ternyata itu pada printer kuno yang mencakup sekitar 5% dari jaringan agen yang masalah dengan tanda terima pencetakan ditemukan. Model-modelnya sangat tua sehingga bahkan di pasaran mereka tidak bisa lagi dibeli. Saya harus mencari dengan mitra. Sekarang proyek ini mencakup 96% dari jaringan. Sudah sedikit lebih dekat dengan yang ideal :)

Bukan cek tunggal


Sejalan dengan penempatan informasi tentang kode QR pada cek dan halaman akhir pembayaran, tugas lain diangkat - membawa halaman ini ke tampilan universal untuk semua proyek terminal:

“Dalam hal halaman penyelesaian pembayaran di Terminal QIWI, semuanya sangat kuno: iklan, spanduk dan mengirim tanda terima elektronik. Dari lima halaman, orang-orang membuat satu, universal untuk semua pembayaran. " - Pemrogram terkemuka dari tim.

Sekarang halaman universal ini digunakan dalam interpretasi yang berbeda, tanpa melanggar aturan membangun naskah, menutup hutang karma dari tim pengembangan.

Dengan demikian, masalah sepuluh tahun yang lalu terpecahkan, yang tangan-tangan itu tidak menjangkau setiap saat. Ada beberapa tugas yang lama dimainkan.

"Di mana uangnya, Zin?" atau apa yang ada di garis bawah


Proyek, yang dirancang untuk beberapa sprint, memakan waktu enam bulan, memengaruhi sumber daya 10 karyawan dan keunggulan agen outsourcing.

Sebagai hasilnya, setelah mengimplementasikan proyek pada 85% dari jaringan terminal, kami mengejutkan diri kami dan pelanggan - layanan pelanggan. Pada hari ketiga kode QR, rekan kerja berpikir bahwa kesalahan sistem telah merayapi mereka - statistik jumlah panggilan ke pusat panggilan dengan pertanyaan "Di mana pembayaran saya?" sudah turun 20%. Pelanggan mulai memindai kode QR dan mengirim tanda terima foto melalui email, mencari tahu status dan melakukan pembayaran sendiri. Dan untuk bulan kedua. Saya harus mengatakan bahwa pelanggan mulai memahami apa "kotak hitam" itu dan bagaimana itu berguna.

Proyek dengan kode QR disukai oleh semua orang yang diberitahu tentang itu - itu adalah sinergi kepentingan: di satu sisi, mereka menyederhanakan kehidupan klien, dan di sisi lain, mereka memecahkan masalah teknis non-standar. Memeriksa status pembayaran dan melakukannya dalam selembar pemrosesan kertas hanya dengan memindai kode QR untuk QIWI adalah sesuatu yang baru. Sangat menyenangkan untuk mengambil teknologi yang terkenal dan sederhana untuk membuat proyek yang bermanfaat. Secara umum, proyek ini tidak hanya memompa keterampilan, tetapi juga meningkatkan komunikasi di dalam tim itu sendiri. Dan ini hampir merupakan nilai tambah utama dalam karma.

Source: https://habr.com/ru/post/id422631/


All Articles