BCA Parser

Melanjutkan postingan terdahulu, berikut adalah class untuk mengambil saldo dan mutasi rekening (untuk saat ini hanya) dari internet banking BCA:

IbParser.php

Cara Penggunaan

$parser = new IbParser;
$parser->getBalance( $bank, $username, $password ); // string, false jika gagal
$parser->getTransactions( $bank, $username, $password ); // array, false jika gagal

Contoh

Periksa beberapa variabel yang telah dicoba untuk didefinisikan secara otomatis:

<?php

error_reporting( E_ALL );
require( 'IbParser.php' );
$parser = new IbParser();

?>

<pre>
IP Server     : <?php echo $parser->conf['ip']; ?>

Tanggal & Jam : <?php echo date( 'Y-m-d H:i:s', $parser->conf['time'] ); ?>

Path          : <?php echo $parser->conf['path']; ?>

Writable      : <?php echo ( is_writable( $parser->conf['path'] ) )? 'Ya': '<span style="color: #ff0000;">Tidak!</span>'; ?>

</pre>

Panggil script di atas melalui browser. Kalau lancar, lanjutkan ambil saldo:

<?php

$bank   = 'BCA';
$user   = 'username_klikbca';
$pass   = 'password_klikbca';

$balance = $parser->getBalance( $bank, $user, $pass );

?>

<pre>
Akun          : <?php echo $bank . ' ' . $user; ?>

Saldo         : <?php echo ( !$balance )? 'Gagal mengambil saldo': number_format( $balance, 2 ); ?>
</pre>

Lalu coba lanjut ambil mutasi rekening:

<?php $transactions = $parser->getTransactions( $bank, $user, $pass ); ?>
<pre>Transaksi     : <?php echo ( !$transactions )? 'Gagal mengambil transaksi': print_r( $transactions, true ); ?></pre>

Dan berikut adalah contoh file yang dapat dijalankan dengan cron untuk memberitahu melalui email setiap kali ada perubahan saldo:

notifier.php

Semoga bermanfaat :)

Jikalau anda menemui masalah

Mohon cek komentar-komentar berikut:

30 thoughts on “BCA Parser”

  1. jalan bos, tapi abis ditambahin kode berikut

    curl_setopt($this->ch, CURLOPT_SSL_VERIFYHOST, 0); //skipping SSL_CERT for host
    curl_setopt($this->ch, CURLOPT_SSL_VERIFYPEER, 0); //skipping SSL_CERT
    curl_setopt($this->ch, CURLOPT_FOLLOWLOCATION, 0); //ignoring server redirect

  2. Terima kasih infonya gan :D

    Kalau nggak salah di script Kaskus dulu ketiga option itu memang di-set, tapi ane hilangkan karena rasanya nggak perlu (dan kebetulan tetap berfungsi di kasus ane).

    Ane sudah update postingannya.

  3. Gan, ini cara menjalankannya gimana yak? Ane bener-bener gak mudeng gan. Serius. Ini file ditaro dimana? Apakah ditaro di web server / hosting gitu? Atau gmn gan? Thanks berat gan. Kalau Mandiri dan BRI bisa juga gak gan? Thanks. Makasih banyak gan.

    1. Beberapa hari terakhir notifiernya kadang ngga jalan (ada uang masuk/keluar tapi saya ngga dapat email, tau-tau kerekap beberapa jam kemudian), tapi saya pikir ini gara-gara koneksi antara hosting saya ke BCA yang sedang bermasalah (wajar).

      Notif terakhir yang saya terima adalah beberapa jam yang lalu dan benar (sebelumnya abis beli pulsa PLN di ATM).

      Jadi sepertinya masih valid :D

      • Beberapa test awal sudah lancar (IP Server, path, dkk)
      • Apakah bener-bener ngga ada pesan error/notice PHP?

      Mungkin ada hal tertentu yang membuat scriptnya ngga jalan di server mas. Langkah awal debugnya sepertinya adalah dengan mengubah fungsi curlexec(), ganti
      curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 1 ); menjadi curl_setopt( $this->ch, CURLOPT_RETURNTRANSFER, 0 );. Gunanya agar hasil dari dari cURL langsung muncul di layar.

      1 hal, BCA itu kalau kita logion padahal sedang ada “orang lain” yang login kan akunnya bakal terkunci 10 menit, jadi kalau kita jalanin script trus script nya sukses login tapi gagal logout, trus kita jalanin lagi, akun akan terkunci. Kita ga akan bisa login lagi sampai 10 menit.

      Dulu waktu membuat script nya saya menyiapkan beberapa akun BCA, jadi kalau ada yang salah langsung ganti akun yang lain dulu. :D

  4. Mas, yang di upload file IbParser.php dan notifier.php doank kan
    yang kode dibawah “Contoh” itu ga perlu kan?

    newbie mas mohon bimbingannya
    kalo 2 file php itu di upload sudah terima sich notifikasinya ke email tapi lama terkirimnya

    1. Betul mas, 2 file itu aja. Kalau sudah terima berarti sudah betul, tapi apakah notifier.php sudah dijalankan dengan cron?

      Kalau masalah lama, di notifier.php kan di-set supaya dia cuma jalan setiap 20 menit sekali, jadi kalau transaksi terjadi persis setelah dia jalan, notifikasinya baru akan muncul 20 menit kemudian (pas dia “jalan” berikutnya).

      Interval notifikasi ini memang jangan terlalu pendek, soalnya ada tips bahwa login ke klikbca ngga boleh lebih dari 100x per hari. Walaupun cron jalan tiap 1 menit, parsing ke klikbca tetap nurut dengan konfigurasi di notifier.php.

    1. Kayaknya di function __construct( $conf ) gan…

      $start = mktime( $d[3], $d[4], $d[5], $d[1], ( $d[2] – 3 ), $d[0] );

      … angka 3 coba ditambah… Maks 7 hari gan soalnya dia ngambil dari yang mobile (di situ max 7 hari kalo ga salah).

      Trus iyah kalau ngambil saldo bisa berarti scriptnya beres. Mutasi ga keambil bisa karna memang ga ada mutasi, atau halaman mutasinya lagi ga bisa dibuka walaupun kita akses secara biasa. Lumayan sering kok kayak gini.

      1. Script saya masih error mas,,, kadang bisa mengambil transaksi kadang GAGAL mengambil transaksi tergantung jam aksesnya. klu pas berhasil sudah bisa menampilkan data2 mutasi saya… dan klu script ini saya tampilkan di mutasiBCA.php:
        Tanggal & Jam : conf['time'] ); ?>
        ternyata gak sama ama tgl & jam di komputer saya…
        di tampilan 2014-08-23 00:24:10 tapi tgl di komputer 2014-08-22 11:30:20
        saya masih ngetes pake server lokal,,, jadi cuma masalah seting tglnya ya?? di php.ini nya juga sudah saya seting Asia/Jakarta…
        saya iseng buat file tes.php, isinya

        nah… klu cuma script kayak gitu tgl & waktunya udah sama ama tgl&waktu komputer

        Punya solusi mas? saya masih newbie,,, masih banyak yg blm dong … makasih… :)

        1. Kalau sudah sempat berhasil ambil mutasi rekening berarti sudah benar. Mutasi rekening BCA memang ngga bisa diakses setiap saat, kayaknya di atas jam 8 malam sering ngga bisa (termasuk kalau diakses langsung secara normal lewat browser). Jadi benar “tergantung jam aksesnya” :)

          Untuk memperbaiki tanggal, di bagian function __construct coba diedit aja angka 14-nya (yang berarti adalah jam server ditambah 14 jam).

  5. gan saya coba yang

    getTransactions( $bank, $user, $pass ); ?>
    Transaksi :

    kenapa gagal ambil transaksi terus yah ?
    untuk yang ambil jumlah rekening bisa

    thx gan

    1. maap lama balasnya gan :D

      udah ketemu masalahnya? Biasanya kalau sudah sukses cek saldo, maka gagal ambil transaksi cuma karena kebetulan emang ga bisa dari sananya. Biasanya malam antara jam 9 s/d 1 pagi.

  6. Klo script cuma bisa untuk ambil saldo tapi ga bisa liat mutasi itu penyebabnya kesalahan parsing parameter startDt, startMt, startYr, endDt, endMt, dan endYr.
    Menurut ane itu penyebab nya, soalnya setelah ‘ngoprek2′ script ini beberapa minggu, ternyata kesalahan parsing data itu menyebabkan gagal ambil saldo.
    Btw, terimakasih agan RL yg uda berbaik hati nge-share, terus berkarya gan..

  7. Pak, mau tanya, saya test utk cek saldo dan mutasi sudah bisa muncul, saya test buka di http://localhost/test.php
    kemudian saya test notifier.php nya dan bikin scheduler di windows
    tapi sepertinya tidak jalan utk notifikasinya,
    dan klo saya tidak salah mengerti, klo notifier dijalankan, nanti dia bikin file di folder data, tp utk fungsi mkdirnya ga jalan,
    saya test taro di hosting yang linux jg ga jalan notifikasinya
    mohon bantuannya :)
    thanks

    1. kalo dibagian die( ‘hapus’ ); // hapus
      di comment/hapus, file di folder data bisa muncul saldonya
      kira2 salah dimana ya?

      1. maksud ane, baris die() itu memang harus dihapus kalau mau jalan….

        Itu ane bikin karna filenya beneran ada di server, kalau dibiarkan bisa dijalankan, nanti bisa aja file tsb kepanggil sama agan2, atau ama crawlerbot2, trus BCA bakalan ngeliat banyak banget login gagal dengan username “username1″ dari server ane…. Begitu gan :D

  8. Pagi gan.. maaf klo commentnya agak beda dengan topik. klo kita mau ambil data harga maskapai penerbangan sesuai dengan kota dan hari, apa bisa juga pakai CURL / parsing gitu gan? Bole share2 by email gan.. Terimakasih ya ^^

    1. iyah bisa aja gan :)

      tapi kalau website2 tiket itu sepertinya kerjasama deh. Soalnya urusannya udah duit & serius, kalau datanya diambil dari nge-parse HTML kan kurang reliable gitu rasanya :D

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>