1 Pendahuluan

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.


2 Menganalisis Desain Sistem

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.

2.1 Komponen Utama Sistem

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).

2.2 Memahami Alur Kerja

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.


3 Membangun Package OVAPayR

Setelah memahami desainnya, langkah selanjutnya adalah menerjemahkannya ke dalam kode R dan membungkusnya dalam sebuah package yang kita sebut OVAPayR.

3.1 Tempat Penyimpanan Data Sementara

Kita membuat sebuah environment R internal yang berfungsi sebagai “database kecil” di dalam memori untuk menyimpan daftar pengguna, saldo, dan siapa yang sedang login.

# File: R/zzz.R
.ova_env <- new.env(parent = emptyenv())
# ... (kode setup environment)

3.2 Fungsi-Fungsi Utama

Setiap komponen pada diagram kita buat menjadi sebuah fungsi R, seperti register_user(), login_user(), top_up(), make_transfer(), dan make_payment().


4 Simulasi Sistem Secara Detail

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.

4.1 Langkah 1: Inisialisasi Sistem dan Pendaftaran Pengguna

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.

4.2 Langkah 2: Sesi Transaksi Reno

Sekarang, kita simulasikan Reno menggunakan aplikasi. Ia harus login terlebih dahulu untuk mengaktifkan sesi transaksinya.

4.2.1 2.1 Login dan Top Up Saldo

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.

get_balance("reno01")

Hasil yang Diharapkan:

## Saldo akhir untuk pengguna reno01 adalah: 100000

Penjelasan: Saldo Reno yang tadinya 0 kini telah berhasil diperbarui menjadi 100.000.

4.2.2 2.2 Transfer Dana ke Budi

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.

get_balance("reno01")
get_balance("budi02")

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.

4.3 Langkah 3: Sesi Transaksi Budi

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.

4.3.1 3.1 Manajemen Sesi dan Pembayaran

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.

get_balance("budi02")

Hasil yang Diharapkan:

## Saldo akhir untuk pengguna budi02 adalah: 20000

Penjelasan: Saldo Budi berkurang sebesar 10.000 (30.000 - 10.000) setelah pembayaran.

4.4 Langkah 4: Audit Histori Transaksi

Sebagai langkah terakhir, kita periksa fitur histori untuk memastikan semua aktivitas tercatat dengan benar sebagai bukti transaksi.

# Cek catatan transaksi untuk kedua pengguna
get_history("reno01")
get_history("budi02")

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.


5 Kesimpulan

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.