• Tidak ada hasil yang ditemukan

4.1. Fase Konstruksi dan Percobaan

4.1.6 Implementasi Sistem Penjual

Aplikasi server ini bertugas untuk menerima pesan yang

masuk, memproses pengisian pulsa dan selanjutnya memberikan

konfirmasi kepada pelanggan perihal transaksi pengisian pulsa

tersebut. Tugas pengisian pulsa ini dapat berjalan apabila serverdalam

keadaan hidup ”ON”. Berikut merupakan tampilan Sistem dalam

keadaan server ”OFF”. Dan otomatis akan menampilkan menu

konfigurasi server.

Gambar 64 Aplikasi server Sicho Cell

2. Konfigurasihandphone

Sebelum menjalankan aplikasi server, penjual harus melakukan

pengaturan koneksi antara aplikasi dengan handphone. Pengaturan

dapat dilakukan dengan memanggil halaman menu konfigurasi

handphone. Pengaturan tersebut untuk mengubah nilai port, boudrate,

flowcontrol, databits, stopbits, dan parity sesuai dengan kemampuan

handphoneyang terkoneksi.

Untuk memperoleh nama port digunakan perintah portList =

CommPortIdentifier.getPortIdentifiers(); dan hasilnya akan

disimpan ke dalam variabel vectorPort yang bertipe Vector.

Setelah dipilih port yang sesuai, dalam hal ini adalah COM4 dan

handphone yang digunakan adalah siemens C55 maka pengaturan

koneksinya adalah sebagai berikut.

Gambar 65 menu konfigurasi handphone

Setelah proses pengaturan sudah sesuai dengan handphone maka

langkah selanjutnya adalah menekan tombol ”START”. Berikut

merupakan listinguntuk menjalankan server.

Vector vectorPort = new Vector();

portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) {

portId = (CommPortIdentifier) portList.nextElement();

if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (!vectorPort.contains(portId.getName())) { vectorPort.addElement(portId.getName()); } } }

if (statusServer == 1) {

Enumeration portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) {

CommPortIdentifier portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { if (portId.getName().equalsIgnoreCase(portName)) { try {

port = (SerialPort) portId.open("SMS", 50000); statusServer = 2;

} catch (PortInUseException piue) { port.close(); return false; } } } } } if (statusServer == 2) { try { output = port.getOutputStream(); input = port.getInputStream(); } catch (IOException ioe) { port.close();

} }

if (statusServer == 2) { try {

dapatNilaiParameter(boudrate, databits, stopbits, parity, flowcontrol); port.setSerialPortParams(nilaiBaud, nilaiData, nilaiStop, nilaiParity); port.setFlowControlMode(nilaiFlow); port.notifyOnDataAvailable(true); kirimAT("AT" + "\15", 1250); kirimAT("AT+CMGF=0" + "\15", 1250); kirimAT("AT+CSCS=GSM" + "\15", 1250); kirimAT("AT+CNMI=1,1,2,2,1" + "\15", 1250); kirimAT("AT+CMGL=0" + "\15", 1250); statusServer = 3;

} catch (UnsupportedCommOperationException ucoe) { port.close(); return false; } } if (statusServer == 3) { try { port.addEventListener(this);

} catch (TooManyListenersException ex) {

Logger.getLogger(TampilanUtama.class.getName()).log(Level.SEVERE, null, ex); }

threadTerimaSMS = new ThreadBukaSMS(); threadTerimaSMS.start();

cekStatusPengirimanPulsa = new ThreadCekStatusPengirimanPulsa(); cekStatusPengirimanPulsa.start();

kirimSmsPelanggan = new ThreadKirimSmsPelanggan(); kirimSmsPelanggan.start();

kirimSmsPenyedia = new ThreadKirimSmsPenyedia(); kirimSmsPenyedia.start();

return true; }

return false; }

Setelah server berjalan server akan mengecek apakah ada pesan

baru masuk atau tidak, berikut listing yang dijalankan jika ada

pesan baru yang masuk.

Listingdi atas adalah listinguntuk membaca responsdari terminal.

Apabila ada responsdari terminal atau sms baru masuk maka akan

memanggil fungsi terimaAT. Berikut ini adalah listing program

dalam fungsi terimaAT.

while ((n = input.available()) > 0) {

n = input.read(bacaBuffer, bufferOffset, n); bufferOffset += n;

// Jika ada respons "\15" (Line Feed Carriage Return),

if ((bacaBuffer[bufferOffset - 1] == 10) && (bacaBuffer[bufferOffset - 2] == 13)) {

String buffer = new String(bacaBuffer, 0, bufferOffset - 2); terimaAT(buffer); bufferOffset = 0; } } st = new StringTokenizer(buffer, "\r\n"); while (st.hasMoreTokens()) { respons = st.nextToken(); try { if (respons.startsWith("RING")) { kirimAT("ATH0" + "\15", 100); } else if (respons.startsWith("+CMTI:")) { Pattern pattern = Pattern.compile(","); hasil = pattern.split(respons.trim()); Index = Integer.parseInt(hasil[1].trim()); kirimAT("AT+CMGR=" + Index + "\15", 1250); } else if (respons.startsWith("+CMGR:")) { PDU = 1; } else if (respons.startsWith("+CMGL")) { Pattern pattern = Pattern.compile(":"); hasil = pattern.split(respons.trim()); pattern = Pattern.compile(","); hasil = pattern.split(hasil[1].trim()); Index = Integer.parseInt(hasil[0].trim()); PDU = 1; } else if (PDU == 1) { prosesTerimaSms(Index, respons.trim()); PDU = 0; } else { }

Pada fungsi ini dilakukan parsingterhadap responsyang diperoleh

dari terminal. Data yang dilakukan parsing adalah berupa String.

Pada baris ” if (respons.startsWith("RING"))” disini akan dicek

apakah responsdari terminal berupa panggilan telepon atau bukan,

dan apabila berupa panggilan telepon maka akan dilakukan

pemutusan panggilan dengan perintah “kirimAT("ATH0" + "\15",

100);” . Pada baris “else if (respons.startsWith("+CMTI:"))” maka

akan dilakukan pembacaan dengan AT+CMGR

“kirimAT("AT+CMGR=" + Index + "\15", 1250);”, dan apabila

respons yang diterima memenuhi “else if

(respons.startsWith("+CMGR:"))” atau “else if

(respons.startsWith("+CMGL"))” maka selanjutnya akan

memanggil fungsi “prosesTerimaSms()”

Pada fungsi ini akan dilakukan penyimpanan data sms yang masuk

ke dalam tabel ”inbox_pelanggan” agar bisa diproses lebih lanjut.

Disini juga dilakukan penghapusan sms pada kartu SIM sehingga

kartu SIM tidak dipenuhi oleh SMS karena keterbatasan kapasitas

kartu SIM dalam menyimpan SMS.

dataPesan DP = new dataPesan(koneksi); try {

PduTerimaSms(Pdu); } catch (Exception e) { }

if (dapatNotlp.endsWith("F")) {

dapatNotlp = dapatNotlp.substring(0, dapatNotlp.length() - 1); }

kirimAT("AT+CMGD=" + Index + "\15", 1250);

Dalam keadaan ”ON” server dapat mendeteksi sms yang masuk

ataupun mengirim sms. Pada menu konfigurasi terdapat tombol

”STOP” yaitu tombol untuk mematikan server. Berikut merupakan

listinguntuk mematikan server.

Dalam listing diatas terdapat perintah untuk menutup koneksi dengan

database ” koneksi.close();”, juga terdapat perintah untuk

menghentikan thread-thread yang telah dijalankan pada saat penjual

menekan tombol ”START”.

3. Kelola data status pengisian pulsa

Setelah menghidupkan server maka menu status transaksi

pengisian pulsa yang dilakukan pelanggan akan muncul. Dalam menu

ini terdapat pilihan tampilan yaitu tampilkan semua pesan baik pesan

dengan status pengisian pulsa berhasil ataupun pengisian gagal, pesan

try {

if (!koneksi.isClosed()) { koneksi.close(); }

} catch (SQLException ex) { } port.close(); try { threadTerimaSMS.stop(); cekStatusPengirimanPulsa.stop(); kirimSmsPelanggan.stop(); kirimSmsPenyedia.stop(); } catch (Exception e) { } try { Thread.currentThread().sleep(500); } catch (Exception ex) {

}

dengan status pengisian berhasil saja dan pesan dengan status

pengisian gagal saja.

Gambar 66 menu status pengisian pulsa

Selain untuk melihat semua pesan transaksi terdapat juga tombol

untuk membatalkan transaksi yaitu apabila terdapat kesalahan

sistem dalam menentukan status pengisian pulsa. Misalkan

pelanggan A melakukan transaksi dan transaksi yang dia lakukan

gagal tetapi status dalam sistem transaksi pelanggan A tersebut

berhasil maka dapat dilakukan pembatalan transaksi dengan

menekan tombol ”BATALKAN TRANSAKSI” dengan terlebih

dahulu memilih pesan status pengisian yang bermasalah tersebut.

Terdapat juga fasilitas untuk menghapus pesan secara satu persatu

ataupun menghapus semua pesan sekaligus. Penghapusan pesan

dilakukan apabila pesan tersebut transaksi yang sudah lama

dilakukan dan terebih dahulu dibuatkan laporan transaksi.

Proses pengisian pulsa adalah sebagai berikut

Pesan yang masuk akan disimpan dalam tabel inbox_pelanggan

dengan status sms ”unread” dan akan dilakukan proses selanjutnya

apabila pesan tersebut berstatus sms ”unread” dan akan status akan

berubah menjadi ”read” apabila pesan sudah diproses pada fungsi

prosesInboxPelanggan().

Apabila diketemukan pesan dengan status “unread” maka pesan

tersebut akan diproses dengan memanggil fungsi

prosesInboxPelanggan() dan akan dicek data pesan apakah dari

pengirim yang berhak dan sesuai dengan format penulisan yang

ditentukan.

Apabila sesuai format dan dari pengirim yang benar pesan

ditampung dalam tabel ”pesan_transaksi” untuk selanjutnya

try {

String sql_newSms = "select kode_inbox_pelanggan, no_telepon_pelanggan, isi_pesan from inbox_pelanggan where status_sms='unread'";

Statement stmtUnread = koneksi.createStatement();

ResultSet rsUnread = stmtUnread.executeQuery(sql_newSms);

while (rsUnread.next()) {

System.out.println("ketemu pesan yang unread"); dataId = rsUnread.getString("kode_inbox_pelanggan"); dataNoTelp = rsUnread.getString("no_telepon_pelanggan"); dataPesan = rsUnread.getString("isi_pesan");

prosesInboxPelanggan(dataId, dataNoTelp, dataPesan); }

dikirim ke penyedia pengisian pulsa, dalam sistem ini sebagai

penyedia adalah SEVEN CELL dan menunggu sms konfirmasi

status pengiriman pulsa dari SEVEN CELL.

Setelah mendapat sms konfirmasi status pulsa dari penyedia

pengisian pulsa (SEVEN CELL) maka dilakukan pengecekan

status pengisian pulsa dari penyedia terhadap permintaan dari

pelanggan, apabila status pengisian dari penyedia dan permintaaan

dari pelanggan sesuai maka dilakukan konfirmasi kepada

pelanggan sesuai dengan status dari penyedia pengisian pulsa

(SEVEN CELL). Berikut ini merupakan listing untuk mengirim

sms konfirmasi kepada pelanggan.

Pertama kali pesan dimasukan ke dalam fungsi PDUKirimSms()

sehingga didapat format PDU untuk dikirimkan melalui sms,

pengiriman ini dengan memanggil perintah “kirimAT("AT+CMGS="

+ (pesanPDUKirim.length() / 2) + "\15", 500);” diikuti “kirimAT("00"

+ pesanPDUKirim, 2500);” dan yang terakhir “kirimAT("\032",

100);”.

try {

String pesanPDUKirim = PDUKirimSms(notlp.trim(), pesan.trim()); kirimAT("AT+CMGS=" + (pesanPDUKirim.length() / 2) + "\15", 500); kirimAT("00" + pesanPDUKirim, 2500);

kirimAT("\032", 100);

Thread.currentThread().sleep(2000); } catch (InterruptedException ex) {

Logger.getLogger(TampilanUtama.class.getName()).log(Level.SEVERE, null, ex); }

4. Cetak laporan

Berikut merupakan tampilan menu untuk membuat laporan,

baik laporan transaksi pelanggan maupun laporan transaksi yang

dilakukan antara SICHO CELL sebagai penjual dan SEVEN CELL

sebagai penyedia layanan pengisian pulsa. Berikut merupakan

tampilan laporan pelanggan dan juga hasil cetak laporan pelanggan.

Gambar 67 menu cetak laporan

Dalam laporan transaksi pelanggan terdapat pilihan pembuatan

laporan yaitu waktu dan juga nama pelanggan. Untuk waktu dapat

dipilih perhari ataupun perbulan. Dan untuk pelanggan dapat

dipilih untuk laporan transaksi semua pelanggan ataupun menurut

nama pelanggan. Berikut ini merupakan tampilan laporan Sicho

Cell beserta hasil dari cetak laporan Sicho Cell.

Gambar 69 menu laporan sicho cell

Demikian juga untuk laporan SICHO CELL yaitu terdapat pilihan

untuk mencetak laporan transaksi tetapi dalam laporan ini hanya

pilihan waktu saja yang digunakan apakah perhari atau perbulan.

5. Kelola data pelanggan

Untuk menampilkan data pelanggan maka dibuatlah menu data

pelanggan di menu data pelanggan ini selain ditampilakan data-data

pelanggan juga terdapat fasilitas kelola data pelanggan yaitu tambah

data pelanggan, editdata pelanggan dan hapus data pelanggan. Berikut

ini adalah tampilan dari menu data pelanggan.

Gambar 71 menu data pelanggan

Apabila terdapat pelanggan baru yang ingin mendaftar maka

pendaftaran dilakukan dengan mengisi formtambah pelanggan. Di

form ini dimasukan data-data dari pelanggan antara lain nama

pelanggan, no telepon pelanggan yaitu nomor yang akan digunakan

untuk bertransaksi, alamat, PIN dan saldo awal dari pelanggan

sesuai uang yang disetorkan. Berikut merupakan form untuk

tambah pelanggan baru.

Gambar 72 menu tambah data pelanggan

Untuk meng-edit data pelanggan terlebih dahulu memilih data

pelanggan yang akan di-edit dan tekan tombol edit pelanggan,

demikian juga untuk menghapus data pelanggan dengan terlebih

dahulu memilih data pelanggan yang akan dihapus dan selanjutnya

menekan tombol hapus pelanggan. Dalam edit pelanggan ini hanya no

telepon, alamat dan PIN saja yang dapat di-edit. Dilakukan editnomor

telepon karena dimungkinkan terdapat pelanggan yang lalai sehingga

dia kehilangan handphone beserta no telepon mereka. Berikut

merupakan formuntuk meng-editdata pelanggan.

Gambar 73 menu edit data pelanggan

6. Tambah saldo pelanggan

Dalam menu tambah saldo pelanggan berikut terlebih dahulu

memilih data pelanggan yang akan ditambahkan saldo dan selanjutnya

memilih nominal saldo yang akan ditambahkan.

Gambar 74 menu tambah saldo pelanggan

7. Kelola data pulsa

Untuk menampilkan data pulsa maka dibuatlah menu data

pulsa di menu data pulsa ini selain ditampilakan data-data pulsa juga

terdapat fasilitas kelola data pulsa yaitu tambah data pulsa, edit harga

pulsa dan hapus data pulsa. Berikut ini adalah tampilan dari menu data

pulsa.

Gambar 75 menu data pulsa

Apabila terdapat data pulsa baru maka dilakukan dengan mengisi

form tambah pulsa. Di form ini dimasukan data-data dari pulsa

antara lain nama pulsa (dalam sistem ini hanya lima produk saja

yaitu SIMPATI, AS, MENTARI, IM3 dan XL), nominal pulsa,

harga pulsa dan tipe pulsa (REGULER, SMS, GPRS) dan saldo

awal dari pelanggan sesuai uang yang disetorkan. Berikut

merupakan formuntuk tambah pulsa baru.

Untuk meng-edit data pulsa terlebih dahulu memilih data pulsa yang

akan di-edit dan tekan tombol edit pulsa, demikian juga untuk

menghapus data pulsa dengan terlebih dahulu memilih data pulsa yang

akan dihapus dan selanjutnya menekan tombol hapus pulsa. Dalam edit

pulsa ini hanya data harga saja yang dapat di-edit karena nilai yang

selalu berubah adalah harga jual dari pulsa tersebut. Dan apabila data

pulsa tersebut tidak diperlukan lagi (kebijakan operator selular) maka

data pulsa tersebut dapat dihapus. Berikut merupakan form untuk

meng-editharga pulsa.

Gambar 77 menu edit data pulsa

8. Kirim sms

Untuk layanan tambahan dari sistem ini adalah mengirimkan pesan

kepada pelanggan yaitu fasilitas kirim sms kepada pelanggan. Fasilitas ini

digunakan untuk pemberitahuan informasi baru kepada pelanggan. Untuk

dapat mengirim pesan maka terlebih dahulu dipilih nama pelanggan yang

akan dikirim pesan dan selanjutnya menulis isi pesan yang akan dikirim.

Gambar 78 menu kirim sms

Dokumen terkait