Laporan ini bertujuan untuk menjadi panduan dalam memahami dan mengimplementasikan sistem pembayaran digital “OVA-Pay” ke dalam sebuah R package. Studi kasus ini berawal dari ide Reno, pemilik perusahaan, yang ingin membangun sebuah sistem pembayaran non-tunai yang mudah digunakan. Untuk mewujudkan ide tersebut, Budi, seorang system engineer, menyarankan untuk membuat sebuah model kerja atau prototipe terlebih dahulu menggunakan bahasa pemrograman R.
Tujuan dari pembuatan prototipe ini adalah untuk menguji semua aturan dan alur kerja sistem dalam lingkungan yang terkendali sebelum dikembangkan menjadi aplikasi skala penuh. Dengan cara ini, kita bisa menemukan potensi masalah lebih awal dan memastikan desain sistem sudah benar-benar solid.
Langkah pertama adalah memahami rancangan sistem yang telah dibuat dalam bentuk use case diagram. Diagram ini adalah peta yang menunjukkan apa saja yang bisa dilakukan pengguna dan bagaimana fitur-fitur di dalam sistem saling berhubungan.
Berdasarkan diagram, sistem OVA-Pay memiliki beberapa komponen utama:
* Pendaftaran & Login: Fitur dasar bagi pengguna
untuk membuat akun (Register) dan masuk ke dalam sistem
(Login). * Manajemen Saldo: Pengguna dapat
mengisi ulang saldo mereka melalui fitur Top Up. *
Fitur Transaksi: Pengguna dapat melakukan dua jenis
transaksi utama, yaitu Transfer dana dan
Payment (Pembayaran).
Hubungan antar komponen diatur oleh dua jenis relasi penting:
<<include>> dan
<<extend>>. * Relasi
<<include>> (Wajib Ada): Sebuah fitur
wajib menyertakan fitur lainnya. Contohnya, semua transaksi wajib
didahului oleh Login. * Relasi
<<extend>> (Pilihan Tambahan): Sebuah
fitur dapat memiliki beberapa pilihan. Contohnya, Transfer
bisa ke Sesama OVA atau Rekening Bank.
OVAPayRSetelah memahami desainnya, langkah selanjutnya adalah
menerjemahkannya ke dalam kode R dan membungkusnya dalam sebuah
package yang kita sebut OVAPayR.
Kita membuat sebuah environment R internal yang berfungsi sebagai “database kecil” di dalam memori untuk menyimpan daftar pengguna, saldo, dan siapa yang sedang login.
Setiap komponen pada diagram kita buat menjadi sebuah fungsi R,
seperti register_user(), login_user(),
top_up(), make_transfer(), dan
make_payment().
Bagian ini akan memandu Anda melalui simulasi penggunaan
OVAPayR langkah demi langkah, dengan penjelasan untuk
setiap aksi yang dilakukan.
Catatan: Untuk menjalankan kode di bawah ini,
package OVAPayR harus di-build dan di-install terlebih
dahulu.
Pertama, kita siapkan sistem dengan mendaftarkan dua pengguna utama dari studi kasus, yaitu Reno dan Budi. Proses ini akan memasukkan data mereka ke dalam “database” internal package.
# Memuat package yang akan digunakan
library(OVAPayR)
# Registrasi Reno dan Budi. Saldo awal mereka adalah 0.
register_user(user_id = "reno01", name = "Reno")
register_user(user_id = "budi02", name = "Budi")Hasil yang Diharapkan: Sistem kini mengenali
reno01 dan budi02 sebagai pengguna
terdaftar.
Sekarang, kita simulasikan Reno menggunakan aplikasi. Ia harus login terlebih dahulu untuk mengaktifkan sesi transaksinya.
Reno masuk ke akunnya dan melakukan pengisian saldo awal.
# Reno login untuk memulai sesi
login_user("reno01")
# Reno melakukan top up sebesar 100,000
top_up(amount = 100000)Verifikasi Saldo Reno: Mari kita periksa langsung saldo Reno setelah top up.
Hasil yang Diharapkan:
## Saldo akhir untuk pengguna reno01 adalah: 100000
Penjelasan: Saldo Reno yang tadinya 0 kini telah berhasil diperbarui menjadi 100.000.
Masih dalam sesi yang sama, Reno mentransfer sebagian saldonya ke Budi.
# Reno mentransfer 30,000 ke Budi
make_transfer(amount = 30000, method = "sesama_ova", destination = "budi02")Verifikasi Saldo Kedua Pengguna: Sekarang kita cek saldo Reno dan Budi untuk melihat efek dari transaksi transfer.
Hasil yang Diharapkan:
## Saldo akhir untuk pengguna reno01 adalah: 70000
## Saldo akhir untuk pengguna budi02 adalah: 30000
Penjelasan: Saldo Reno berkurang sebesar 30.000 (100.000 - 30.000), dan saldo Budi yang awalnya 0 kini bertambah menjadi 30.000. Transaksi berhasil.
Selanjutnya, kita simulasikan Budi yang ingin menggunakan dana yang baru ia terima. Untuk keamanan, Reno harus keluar dari akunnya terlebih dahulu, lalu Budi masuk ke akunnya.
Proses logout dan login memastikan bahwa transaksi yang akan dilakukan Budi berasal dari akun dan saldo miliknya.
# Reno mengakhiri sesinya
logout_user()
# Budi memulai sesinya
login_user("budi02")
# Budi melakukan pembayaran pulsa sebesar 10,000
make_payment(amount = 10000, type = "tagihan", description = "Pembelian Pulsa")Verifikasi Saldo Budi: Kita periksa sisa saldo Budi setelah pembayaran.
Hasil yang Diharapkan:
## Saldo akhir untuk pengguna budi02 adalah: 20000
Penjelasan: Saldo Budi berkurang sebesar 10.000 (30.000 - 10.000) setelah pembayaran.
Sebagai langkah terakhir, kita periksa fitur histori untuk memastikan semua aktivitas tercatat dengan benar sebagai bukti transaksi.
Hasil yang Diharapkan:
## Histori Transaksi untuk pengguna reno01:
## - Melakukan Top Up Saldo sebesar 100000
## - Melakukan Transfer Keluar sebesar 30000 ke budi02
## Histori Transaksi untuk pengguna budi02:
## - Menerima transfer sebesar 30000 dari pengguna reno01
## - Melakukan Pembayaran - Pembelian Pulsa sebesar 10000
Penjelasan: Sistem pencatatan berhasil merekam semua aktivitas dari sudut pandang masing-masing pengguna, menyediakan jejak audit yang jelas dan transparan.
Melalui simulasi yang detail ini, terbukti bahwa package
OVAPayR tidak hanya mampu menjalankan fungsi-fungsi
individual, tetapi juga mengelola alur kerja yang kompleks antar
pengguna secara akurat. Setiap langkah, mulai dari registrasi hingga
pengecekan histori, telah divalidasi dan berjalan sesuai dengan logika
bisnis yang dirancang.