#disclaimer : Penulis tidak bertanggung jawab atas segala akibat buruk yg mungkin terjadi seperti trx IP, trx Gagal, Harga produk terkirim ke buyer, atau akibat lainnya seperti status jomblo dari pengguna modifikasi ini. Oleh karena itu, jangan lupa BACKUP semua file php yg akan dimodif sebelumnya dan DWYOR. Kalau ada yg ga paham silahkan bahas di group supaya bisa dibantu temen-temen yang lain, japri atau tag saya di group kena biaya 80jt. 😎
Langsung saja, caranya adalah dengan menambahkan 2 script di file mtrx.php yg terletak di folder application/models dan 2 script di view masing-masing produk, lengkapnya sbb:
- Tambahkan function get_gg berikut pada Mtrx.php
public function get_gg($regex, $message)
{
$message = str_replace("\n", " ", $message);
if (!$regex)
return '';
preg_match($regex, $message, $matches);
$gg = '';
if (isset($matches['gg'])) {
$gg = trim($matches['gg']);
$gg = (substr($gg, -1) == '.' ? substr($gg, 0, -1) : $gg);
}
return $gg;
}- Contoh peletakannya sbb

- Edit function set_gagal dan tambahkan script untuk mengcapture keterangan gagal, peletakannya sesuaikan dengan Mtrx.php masing-masing karena sangat mungkin sudah berbeda pada tiap webpul dan tiap versi update.
$opsi = $trx->tr_opsi ? json_decode($trx->tr_opsi, true) : array();
$opsi['server_message'] = $reply_message;
$gg=null;
if (is_null($gg)) {
$gg = $this->get_gg('/(GAGAL)(\. )(?P(.*?))(Sal\.|Sal |Sal:|Sal=|Saldo|Trx|Hrg|Refund)/i', $reply_message);
}
if ($gg) {
$opsi['gg'] = $gg;
}
$this->db->where('tr_id', $trx->tr_id);
if ($trx->us_id && $this->auto_refund && $trx->sv_gateway != 'sms') {
$this->db->set('tr_status_pembayaran', 'refund');
}
$this->db->set('tr_status', 'gagal');
$this->db->set('tr_opsi', json_encode($opsi));
$this->db->update('transaksi');
$consumer_message = "Trx #" . $trx->tr_id . " " . ($trx->vo_kode_trx ? $trx->
vo_kode_trx : $trx->vo_kode) . "." . ($trx->tr_id_plgn ? $trx->tr_id_plgn : $trx->
tr_no_hp) . " GAGAL. ".$gg."."; - Yang paling penting di sini adalah regex yg digunakan yaitu string sbb: '
/(GAGAL)(, |\. |\.| )(?P<gg>(.*?))(Sal\.|Sal |Sal:|Sal=|Saldo|Trx|Hrg|Refund)/i' Regex ini belum tentu bisa membaca semua reply dari supplier, oleh karena itu kalau ada keterangan gagal yang tidak terbaca silahkan sesuaikan dan cari regex yang "cocok". Untuk mencoba regex bisa menggunakan web https://regex101.com/ - Contoh peletakannya sbb

- Untuk view member, edit view php masing-masing produk di folder akun/riwayat_transaksi, misalnya pulsa.php. Scriptnya sbb
<?php if ($trx->tr_status == 'gagal' && isset($opsi['gg'])):?>
<tr><td>Ket</td><td><?php echo $opsi['gg'];?></td></tr>
<?php endif;?>
- Contoh peletakannya sbb
- Untuk view non member, edit view php masing-masing produk di folder history, misalnya pulsa.php. Scriptnya sbb:
<?php if ($trx->tr_status == 'gagal'):?>
<tr>
<td>Keterangan</td>
<td>
<?php
$this->db->select('*');
$this->db->from('transaksi');
$this->db->where('tr_id', $trx->tr_id);
$query = $this->db->get();
foreach ($query->result() as $res) {
$opsi = json_decode($res->tr_opsi, true);
if (isset($opsi['gg'])){
$gg = $opsi['gg'];
echo $gg;
}
}
;?>
</td>
</tr>
<?php endif;?>
- Contoh peletakannya sbb

Done. Ingat apabila ada reply serpul yg tidak tercapture keterangannya, silahkan edit regex di step 2. Demikian semoga bermanfaat untuk kita semua.
