Menerapkan Operasi Transfer Kartu-ke-Kartu P2P Gateway

Untuk proyek saya, saya perlu menyadari kemampuan untuk mentransfer dari kartu ke kartu. Untuk koneksi resmi ke antarmuka bank mana pun, perlu untuk menyimpulkan perjanjian dan memenuhi sejumlah persyaratan. Oleh karena itu, diputuskan untuk membuat gateway ke halaman publik bank. Untuk tujuan ini, dua bank Tinkoff dan BIN Bank dipilih yang memberikan kesempatan untuk mentransfer ke kartu β€œmereka” tanpa komisi. Anda dapat menemukan lebih banyak tentang tarif dan pembatasan transfer pada halaman bank yang relevan. Artikel ini menjelaskan secara singkat pengoperasian gateway yang mengimplementasikan fungsionalitas menerima pembayaran ke kartu.

Diperlukan untuk menerapkan transfer dari kartu apa saja ke kartu yang dipilih sebelumnya, dengan dukungan untuk prosedur otorisasi 3DSecure. 3DSecure adalah protokol otorisasi pengguna yang aman untuk operasi CNP (tanpa kehadiran kartu). Anda dapat membaca lebih lanjut di situs-situs khusus, diagram di bawah ini menunjukkan diagram yang disederhanakan tentang cara kerjanya dari sudut pandang pengguna.

gambar

Gambar menunjukkan mekanisme yang disederhanakan untuk mengotorisasi transaksi, apa yang terjadi "di bawah tenda" ketika Anda melakukan operasi pembayaran atau transfer dari kartu ke kartu, dan masukkan kode SMS untuk mengonfirmasi.

Mari kita pertimbangkan langkah demi langkah:

  1. Masukkan detail dan jumlah kartu, dan kirim ke situs web bank.
  2. Bank menggunakan layanan khusus (Merchant Plug-In MPI), yang menghasilkan permintaan PaReq khusus, yaitu XML dengan tanda tangan digital, berisi parameter transaksi, serta data di mana permintaan ini harus dikirim (Access Control Server ACS), dan ke mana harus mengirimnya tanggapan otorisasi (PaRes).
  3. Bank mengembalikan kepada pengguna halaman yang berisi informasi dari MPI dan secara otomatis mengalihkan browser ke halaman ACS bank yang mengeluarkan kartu pengguna. Pengguna diperlihatkan halaman untuk memasukkan kode SMS dan SMS dikirim ke nomor telepon yang terdaftar di bank penerbit.
  4. Setelah memasukkan kode SMS, server ACS menghasilkan halaman dengan respons otorisasi (PaRes), mengarahkan pengguna ke halaman MPI untuk menyelesaikan operasi atau menolak untuk melakukannya.

Untuk pemahaman yang lebih dalam tentang proses ini, baca dokumen Visa atau Mastercard yang relevan, level ini cukup untuk menyelesaikan masalah ini.

Untuk memastikan pengoperasian gateway yang lancar sehingga telinga situs web tempat terjemahan tidak mencuat, perlu untuk mengintegrasikan ke dalam proses pengalihan browser antara MPI dan ACS. Untuk melakukan ini, ganti alamat (TermUrl) yang diterima dari MPI. Ini adalah alamat dimana PaRes akan dialihkan setelah pengguna menyelesaikan otorisasi, sebagai TermUrl, alamat gateway dimasukkan dalam permintaan. Ini akan memungkinkan gateway untuk menerima respons (RaRes) untuk mengirimkannya ke server MPI dan setelah memproses respons MPI, mengarahkan pengguna ke halaman penyelesaian transaksi yang berhasil atau tidak berhasil.

Gateway berfungsi antara browser pengguna dan halaman bank, mengimplementasikan fungsi input / output yang meniru halaman bank, menambah dan memodifikasi data, dan memproses respons dan kesalahan dari layanan bank.

Protokol interaksi dengan masing-masing bank diklarifikasi secara manual dengan interaksi rekayasa balik antara browser dan situs web bank, secara umum, logikanya sama, perbedaan variabel dan metode transfer. Secara umum, ini adalah hambatan, dan fungsi perangkat lunak tergantung pada ketidakmampuan API, segera setelah bank mengubah operasi layanan, logika gateway juga harus diubah.

Mari kita pertimbangkan secara lebih terperinci logika kerja.

Untuk memastikan operasi di gateway, halaman pembayaran diimplementasikan, panggilan yang dilakukan di alamat:

http://< >/pay/page?payid=123456&sum=100&text=Test 

URL berisi variabel-variabel berikut:

payid - ID transaksi diperlukan untuk mengidentifikasi hasil permintaan pembayaran setelah transaksi selesai;
jumlah - jumlah transaksi;
teks - bidang informasi "Tujuan pembayaran".



Setelah mengisi data kartu, menyetujui ketentuan eksekusi, permintaan komisi untuk operasi dibuat. Ukuran komisi dan bank (salah satu dari dua Tinkoff dan BIN) di mana transfer akan dilakukan tergantung pada kartu yang ditentukan dalam pengaturan gateway sebagai penerima transfer dan ketersediaan layanan bank. Mekanisme sederhana untuk perutean dan penanganan kesalahan diimplementasikan di gateway: Tinkoff selalu dipilih, jika halaman bank tidak tersedia, maka halaman BIN Bank dipilih.

Setelah mengklik tombol transfer, sistem dialihkan ke halaman bank penerbit kartu yang mengeluarkannya (ACS), dari mana operasi pendebetan akan dilakukan. Gateway akan meminta parameter PaReq dari MPI, mengganti TermUrl dan mengirim data ke pengguna, setelah mengingat parameter transaksi dalam cache (Redis).

Setelah otorisasi selesai, PaRes akan pergi ke gateway, dan berdasarkan pada data cache, itu akan meneruskannya ke MPI terkait, memproses respons, dan mengarahkan pengguna ke salah satu halaman (ERROR_PAGE, SUCCESS_PAGE) yang ditentukan dalam pengaturan gateway.

URL ke halaman untuk berhasil menyelesaikan operasi berisi variabel payid, yang mentransmisikan hasil operasi dalam bentuk JWT dengan tanda tangan digital.

Contoh JWT:

 eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiI2Njk2NzFlYi1mYmZlLTVlMTMtYTdkZi05NDEwZjg1N2U5ODkiLCJpYXQiOjE1NzE5MDg5MjgsInN1YiI6ImZpeGVkIiwiaXNzIjoicnUucGhvbmU0cGF5IiwicGF5X2lkIjoiMTIzNDUiLCJzdW0iOiIxMDAuMCIsInRyYW5zYWN0aW9uX2lkIjoiODY4MTE5ODYzIn0.c-IK3FowoR_tVe3-cpT7-rmA4EQhYy8rZkWrWASHZlc0ZzzpQont5XriCSzuDaY7jf7iIC8ZAxknAMwmTNmAHg 



Dengan memverifikasi konten JWT, Anda bisa mendapatkan informasi yang dapat diandalkan tentang keberhasilan operasi, token JWT melakukan fungsi yang mirip dengan PaReq dan menyediakan kemampuan untuk berintegrasi dengan sistem eksternal.

Solusi ini adalah prototipe gateway pembayaran, yang dengannya Anda dapat menerapkan perolehan Internet (menerima pembayaran dengan kartu) di situs web atau halaman jejaring sosial Anda. Anda dapat membuat parameter halaman pembayaran Anda atau menulis sendiri, memodifikasi perangkat lunak secara kreatif, yang terpenting adalah mentransfer jumlah dan id operasi ke input dan memeriksa pada output bahwa tidak ada yang telah diubah secara kreatif oleh orang lain. Sumber dan contoh kerja tersedia di github .

Ada juga gateway untuk mengisi dompet VK.pay Anda, yang juga dapat digunakan sebagai gateway pembayaran. Secara umum, ini menerapkan prinsip yang sama, Selenium digunakan untuk mengimplementasikan bagian dari fungsi, dengan bantuan otorisasi di situs dan otorisasi untuk mengakses dompet diimplementasikan.

PENTING! Setiap transaksi Internet berpotensi berbahaya, data Anda mungkin dicuri, Anda harus berhati-hati saat melakukan transaksi Internet.

PENTING! Tanggung jawab pidana diberikan untuk pencurian dana dari kartu bank orang lain (Pasal 159.3, 159.6 KUHP Federasi Rusia) .

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


All Articles