BCA Parser

โ€”

by

in

Update di: sini

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:


Comments

37 responses to “BCA Parser”

  1. […] Script baru 13 Agustus 2013 di postingan ini […]

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

    1. nambahin script ini dimananya gan?

      1. di function curlexec() gan, di situ sekarang ada 1 curl_setopt, tambahin aja 3 lagi ๐Ÿ™‚

  3. Terima kasih infonya gan ๐Ÿ˜€

    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.

  4. 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. iya gan, ditarok di web server ๐Ÿ˜€

      Bank-bank lain teorinya bisa tapi blum saya buat coding nya ๐Ÿ˜€

  5. Mas, kenapa ya, setiap saya eksekusi selalu gagal ambil saldo dan gagal ambil mutasi.
    Apa sudah tidak valid ya?

    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 ๐Ÿ˜€

      • 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. ๐Ÿ˜€

  6. Rea Ananda Avatar
    Rea Ananda

    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. Rea Ananda Avatar
        Rea Ananda

        oke, makasih mas
        mudah mudahan mutasi bank lain juga bisa dibuatkan juga
        lumayan nggak capek2 cek manual mutasi transferan

  7. Mas, saya sudah coba scriptnya, untuk cek saldo berhasil, tapi untuk cek mutasi gagal. Mohon petunjuk.

    Makasih.

  8. Update gan, ternyata kemungkinan karena hari ini tidak ada mutasi. Untuk ngeset tanggal awal mutasi yg mau dicek, dimana ya ?

    Thx

    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. Dian Ratnawati Avatar
        Dian Ratnawati

        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… ๐Ÿ™‚

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

    2. trus gan itu kalo ga salah ya, ane cuma liat sekias, blum bisa liat mlototin dengan serius ๐Ÿ˜€

      1. siaapp, thx gan, ane coba2 deh, hehe..

      2. ketemu masalahnya gan, ternyata karena server hosting ane di amerika, maju sehari..jadi kena error end date nya lebih dari current date ๐Ÿ˜€

  9. 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 ๐Ÿ˜€

      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.

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

  11. 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. maksudnya gan? die(‘hapus’) itu memang harus dihapus kok ๐Ÿ˜€

      2. 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 ๐Ÿ˜€

    2. ada pesan errornya mas?

      kalau ga bisa nulis (bikin file) barangkali masalah di permission foldernya?

  12. 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 ๐Ÿ˜€

  13. udah ga jalan yah gan?

    1. jalan kok gan, barusan aja ada notifikasi…

      ane kan dagang online kecil2an, jadi perlu aplikasi ini. Kalo rusak pasti buru2 ane betulin (kalau masih bisa dibetulin) ๐Ÿ˜€

      1. gagal mengambil saldo gan, padahal sudah benar sesuai instruksi diatas

      2. kalau agan akses klikbca secara biasa lewat browser bisa gan? Takutnya memang pas klikbca nya lagi ga bisa cek saldo (tiap hari biasanya sekitaran jam 8-12 malam)

  14. Saldo : Gagal mengambil saldo
    Transaksi : Gagal mengambil transaksi

    ada solusi? kenapa gagal yak

    1. Kalau test awal di bagian “Contoh” di postingan atas hasilnya gimana? “Gagal mengambil saldo” itu agan tambahkan di sebelah mana?

  15. […] Sambungan dari sini. […]