Panduan Menangkap SN Transaksi dengan Baik

Dalam setiap transaksi sukses yang terjadi, terdapat serial number transaksi atau yang biasa disebut SN sebagai bukti transaksi valid dan sukses dari operator. Script pulsa mengolah reply transaksi dari serpul / suplier kemudian menyajikan SN nya ke pembeli. Namun, SN bisa ditangkap dengan  tidak sempurna jika penggunaan regex SN tidak benar yang menyebabkan karakter, kata, atau bahkan kalimat yang tidak ada hubungannya dengan SN terbawa dan ikut tersajikan ke pembeli. Untuk menghindari hal tersebut mari ketika pahami cara kerja regular expression (regex) SN di script pulsa.

Pertama - tama siapkan reply transaksi sukses dari serpul / suplier yang digunakan. Semakin banyak contoh reply dari berbagai produk yang berbeda semakin baik, tapi disini kita ambil contoh dua saja.

(double tap untuk select all, agar mudah menyalin)

Contoh reply transaksi sukses 1:
T#87106974 R# Tsel bank 25rb S25.081208120812 SUKSES. SN/Ref: 9052712573021833911. Sisa saldo 100.987.123 - 24.6\950 = 100.962.173 @27/05 12:57:33

Contoh reply transaksi sukses 2:
T#87141841 R# PLN PLH50.14211419999 SUKSES. Kode = 4173-5516-3823-0772-0075/YAPHEHE/R1M/900VA/36,0. Saldo 82.006.847 - 50.235 = 81.956.612 @27/05 18:13:02

Kemudian siapkan regex SN yang bisa kamu lihat di admin panel > klik nama server / suplier yang kamu gunakan, lalu lihat kolom regex SN, letaknya ada di bawah halaman. Contoh regex SN bawaan seperti ini:
/(SN|Ref|Voucher|Token)( :|:|=| =)(?P<sn>(.*?))(Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

Mari kita mulai pelajaran menangkap SN nya! Dimulai dari contoh reply 1:

1. Untuk memudahkan pembuatan regex SN kamu bisa membuka Regex SN Tester di halaman berikut: blanksreload.com/regex.php

2. Setelah dibuka regex SN testernya, masukkan contoh reply 1 ke kolom Balasan Server.

3. Masukkan contoh regex SN pada kolom Regex.

4. Tekan Test Regex maka hasilnya akan seperti berikut:

Test contoh 1 dengan default regex

Bisa dilihat pada gambar di atas jika SN sukses ditangkap tapi ada kata Sisa yang menempel dibelakang SN dan itu terlihat sangat tidak enak plus mengganggu. Yang kesulitan melihat gambar, SN yang ditangkap pada kasus diatas adalah:
SN: 9052712573021833911. Sisa

Untuk menghilangkan kata Sisa tersebut kita pelajari dulu cara kerja regex SN dalam menangkap regex.

Contoh reply 1 sebagai berikut:
T#87106974 R# Tsel bank 25rb S25.081208120812 SUKSES. SN/Ref: 9052712573021833911. Sisa saldo 100.987.123 - 24.6\950 = 100.962.173 @27/05 12:57:33

Contoh regex sebagai berikut:
/(SN|Ref|Voucher|Token)( :|:|=| =)(?P<sn>(.*?))(Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

Saya membagi regex SN kedalam tiga bagian, ada bagian berwarna biru, ada bagian berwarna hijau, dan ada bagian berwarna merah. Kegunaan tiga bagian ini adalah sebagai batas yang mengapit SN, singkatnya, SN yang tertangkap adalah seluruh karakter, huruf, dan angka yang dibatasi bagian biru dan hijau di depan dan dibatasi bagian merah di belakang.

Bagian biru:
Merupakan karakter berupa sebuah kata yang berada di depan SN. Pada contoh reply 1 terdapat kata Ref maka kita perlu menuliskan Ref pada bagian biru di regex. Tetapi karena di regex sudah tertera kata Ref maka tidak perlu ditulis lagi. Jika menggunakan banyak server / suplier dan kata pada bagian biru sangat bervariasi pada tiap reply nya, maka perlu dituliskan semua kata - kata tersebut dengan dipisahkan tanda baca | contohnya seperti diatas jadi (SN|Ref|Voucher|Token).

Bagian hijau:
Merupakan karakter berupa tanda baca yang berada diantara bagian biru dan SN yang mau ditangkap. Pada contoh reply 1 diatas, terdapat tanda baca : (titik dua) diantara Ref dan SN yang mau ditangkap. Namun karena pada contoh regex sudah tertera tanda baca : (titik dua) maka tidak perlu dituliskan lagi.

Bagian merah:
Merupakan karakter berupa sebuah kata yang berada di bagian belakang SN yang mau ditangkap, bisa dibilang batas belakang SN yang mau ditangkap itu sampai mana. Pada contoh reply 1 terdapat kata Sisa setelah SN, kebetulan kata Sisa tersebut belum ada di regex jadi kita masukkan ke bagian merah pada regex dan hasilnya akan seperti ini:
/(SN|Ref|Voucher|Token)( :|:|=| =)(?P<sn>(.*?))(Sisa|Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

Sekarang kita masukkan ulang contoh reply 1 dan regex yang baru saja kita perbaiki pada halaman Regex SN Tester, kemudian tekan Test Regex. Hasilnya menjadi sebagai berikut:

Test contoh 1 dengan regex yang diperbaiki

Selamat! SN yang ditangkap sudah sempurna dan tidak ada karakter tidak penting yang ikut tertangkap.

Sekarang Pakai Contoh Reply 2

Contoh reply 2:
T#87141841 R# PLN PLH50.14211419999 SUKSES. Kode = 4173-5516-3823-0772-0075/YAPHEHE/R1M/900VA/36,0. Saldo 82.006.847 - 50.235 = 81.956.612 @27/05 18:13:02

Kita pakai regex dari hasil perbaikan reply contoh 1 ya:
/(SN|Ref|Voucher|Token)( :|:|=| =)(?P<sn>(.*?))(Sisa|Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

Kemudian kita masukkan contoh reply 2 dan regex ke halaman Regex SN Tester. Hasilnya seperti berikut:

Test contoh 2 dengan regex dari contoh 1

Hasilnya SN tidak ditemukan, artinya regex harus diperbaiki kembali. Pada kasus ini bisa kita lihat bagian biru contoh reply 2 terdapat kata Kode yang belum tercantum di regex. Pada bagian hijau adalah tanda = (sama dengan) dan sudah tertera di regex. Pada bagian merah terdapat kata Saldo yang juga sudah tertera di regex. Oleh karena itu hanya perlu menambahkan kata Kode pada bagian biru di regex, hasilnya menjadi seperti ini:
/(SN|Ref|Voucher|Token|Kode)( :|:|=| =)(?P<sn>(.*?))(Sisa|Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

Sekarang kita tes kembali contoh reply 2 menggunakan regex yang baru diperbaiki diatas. Hasilnya jadi seperti ini:

Tes contoh 2 dengan regex yang sudah diperbaiki

Selamat SN sudah tertangkap dengan sempurna, silakan kamu coba sendiri menggunakan reply dari serpul / suplier yang kamu gunakan.

Apa jadinya jika pada bagian merah bukan berupa kata? Biasanya jika bukan berupa kata kita bisa menggunakan:

\n yang artinya enter, maksunya setelah SN adalah enter bukan sebuah kata.

Contoh replynya:
T#87141841 R# PLN PLH50.14211419999 SUKSES. Kode = 4173-5516-3823-0772-0075/YAPHEHE/R1M/900VA/36,0.
Saldo 82.006.847 - 50.235 = 81.956.612 @27/05 18:13:02

Contoh regexnya:
/(SN|Ref|Voucher|Token|Kode)( :|:|=| =)(?P<sn>(.*?))(\n|Sisa|Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i

$ yang artinya akhir kalimat, maksudnya setelah SN tidak ada karakter apapun lagi, kita bisa menambahkan $ pada bagian merah di regex.

Contoh replynya:
T#87141841 R# PLN PLH50.14211419999 SUKSES. Kode = 4173-5516-3823-0772-0075/YAPHEHE/R1M/900VA/36,0.

Contoh regexnya:
/(SN|Ref|Voucher|Token|Kode)( :|:|=| =)(?P<sn>(.*?))($|Sisa|Sal\.|Sal |Sal:|Sal=|Saldo|Trx)/i


Sekian tutorial untuk menangkap SN transaksi sukses dengan baik dan benar, mudah - mudahan bisa bermanfaat untuk kita semua. Jika bingung jangan ragu untuk menanyakan di grup dan jangan pantang menyerah untuk mencoba, terima kasih.

Untuk kembali ke halaman tutorial scrpt pulsa klik disini.

Comments

Popular posts from this blog

Spark Sebagai Alternatif Pengganti Jabber API

Cron Job untuk Menstabilkan Transaksi

Membuat Menu Teks Berjalan di Aplikasi Android V2

Modul HT - Notifikasi WA Edisi Terbatas