BCA Parser lagi

โ€”

by

in

Saat ini script tidak berfungsi karena ada sesuatu yang diubah di KlikBCA.

  1. Sebetulnya masih bisa diperbaiki, nanti kalau ada waktu saya posting. Yang punya saya sudah terintegrasi jadi nggak bisa langsung kopas.
  2. BCA membuka API. Untuk pelanggan corporate dan ada biayanya. Tapi barangkali ini adalah pilihan yang baik karena misalnya, tiap transaksi pasti ada unique ID nya yang bakalan mempermudah banyak hal ^_^

RL – 28 Juni 2022

Sambungan dari sini.

Saya kebetulan perlu untuk memasang BCA Parser di server lain, jadi akan saya tuliskan langkah-langkahnya supaya jelas ๐Ÿ™‚

Pertama-tama

Buat sebuah folder yang bisa diakses melalui http, misalnya http://www.example.com/bca

Kedua

Kopi IbParser.php ke dalam folder tersebut

Ketiga

Buat sebuah file, misalnya test.php, di dalam folder tersebut, dan ini isinya:

<?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 http://www.example.com/test.php lewat browser, pastikan IP server dan Path terdeteksi dengan benar, Writable = Ya, dan Tanggal & Jam adalah sama persis dengan Waktu Indonesia Barat (kalau tidak sama, ubah variabel $this->conf['time'] di IbParser.php)

Keempat

Jika tidak ada masalah di langkah #3, tambahkan isi test.php sehingga menjadi seperti ini:

<?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>

<?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>

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

Ubah username_klikbca dan password_klikbca menjadi username dan password anda, panggil kembali test.php melalui browser. Jika saldo dan transaksi muncul, berarti semuanya lancar.

Kok nanggung?

IbParser.php adalah dasar yang dibutuhkan untuk melakukan koneksi ke Klik BCA sekaligus melihat saldo dan mutasi rekening. Implementasi selanjutnya sangat luas, saya tidak bisa membuatkan sesuatu yang akan pas digunakan untuk semuanya. Postingan ini saya buat lagi untuk lebih menjelaskan cara penggunaan IbParser.php karena di postingan sebelum barangkali kurang begitu jelas, tapi tidak ada kode yang diubah. Postingan ini juga saya buat lagi karena kebetulan saya sedang utak-atik sebuah aplikasi yang perlu mendeteksi transferan dengan angka unik, yang tentunya terhubung ke database user yang pasti beda-beda untuk tiap aplikasi.

Untuk sekedar menerima notifikasi melalui email setiap kali saldo BCA berubah termasuk karena belanja dengan debit card, atau ada duit masuk karena menerima transferan, silakan lihat notifier.php di postingan sebelum. Nah tapi kayaknya file tsb agak kurang oke sedikit, kemungkinan besar akan membutuhkan penyesuaian sana-sini agar bisa berjalan lancar di server anda. ๐Ÿ˜€


Comments

109 responses to “BCA Parser lagi”

  1. […] Update di: sini […]

  2. Mas, Kulonuwun… Apa bisa dengan cara ini kita dapat melihat detail transfer dari orang ?

    1. bisa mas tapi hanya sebatas yang bisa terlihat di klikbca.

  3. Pak, dimana ya bisa menghubungi bapak? Email saya ya pak, ada yang mau saya bicarakan. Makasih.

  4. Ivan Da Costa Avatar
    Ivan Da Costa

    Mas mau tanya, cara nampilin array menjadi bentuk table gmn yah saya bingung dari variable array di IBParser. Udah otak atik dan cari sana sini mentok ga bisa2 mas ๐Ÿ™
    Mohon pencerahannya.

    Contoh bentuk array mutasi yang ingin dirubah menjadi tampilan tabel dari variabel IbParser:
    http://i61.tinypic.com/a101hc.jpg

    1. Iya saya barusan search juga belum nemu tutorial yang jelas ya mas? Padahal ini termasuk hal yang cukup umum… ๐Ÿ™‚ Nanti saya buatkan contohnya (tapi saya ga bisa sebut kapan-nya ya) ๐Ÿ˜€

  5. Numpang share yah mas, saya baca source code nya jadi tertarik bikin versi python nya.

    Bisa di buka dari sini

    https://github.com/rickyok/python-klikbca-parser

    1. Mantap mas ๐Ÿ˜€

  6. Gan bermanfaat nih scripnya, di hosting ane cuma bisa nampilin di browser aja notifiernya belum jalan, kalo dijalanin hasilnya muncul di browser “#!/usr/local/bin/php hapus” mohon pencerahannya gan.

    1. die( ‘hapus’ ) nya dihapus dulu gan ๐Ÿ˜€ Kalo ngga saya gituin, ntar tiap kali agan-agan buka file itu di server saya, script nya jalan ๐Ÿ˜€

      1. dah work gan brp bulan dah ane pake scriptnya, thanks ya

  7. Pak, saya test.php nya gagal di langkah ke empat. Tidak muncul apa-apa selain info ip adresss dan sebagainya itu. Apakah sudah tidak work ya scriptnya ?
    Thanks atas tanggapannya.

    1. Scriptnya sih masih berjalan pak (saya pakai utk beberapa keperluan).

      Kalau berhenti di Langkah 4, barangkali ada problem ketika melakukan koneksi ke BCA. Hostingnya di mana? Apakah bisa cURL? Lalu, harusnya ada pesan error karena di atas error_reporting() sudah di-set kan? Kalau tidak ada sepertinya disembunyikan oleh settingan server, coba dicari-cari deh pak. Kalau ada pesan error lebih mudah kita troubleshootingnya kan ๐Ÿ™‚

  8. mas kok mutasinya gagal terus ya

    Saldo : Gagal mengambil saldo

    1. eh Saldo udah muncul yg ga tampil2 juga mutasinya
      Transaksi : Gagal mengambil transaksi

    2. Kalau saldo muncul sih sudah ga ada masalah sis, mutasi ga muncul karena kadang memang di klikbca tuh kita bisa lihat informasi saldo tapi ga bisa lihat mutasi rekening ๐Ÿ™‚

      Kadang malah 2 2 nya ga bisa (malem-malem seputaran jam 8-12 kalo ga salah)

      1. Jadi demi efisiensi, buat yang nyetel cron, coba diset biar ga jalan pada jam-jam tersebut… Kayaknya buang buang sumberdaya aja gitu kalau script nya jalan padahal pasti ga bisa ๐Ÿ˜€

        Trus btw ini ada cron gampang: easycron.com ๐Ÿ™‚

  9. Kalo untuk ngelihat detail transaksi 6 bulan yang lalu bisa ndak?
    Ribet soalnya kalo untuk tabungan perorangan mau liat detail transaksi lebih dari 2 bulan yang lalu atau bahkan tidak bisa, jangankan 6 bulan yang lalu, di webnya aja cuma bisa 2 bulan transaksi kebelakang.

    1. memang ngga bisa mas kalau itu. Harus dateng ke BCA nya trus kalau ngga salah ada biaya. ๐Ÿ™‚

  10. Tidak dishare ke github, om?
    Saya juga lagi buat utk project saya, kira-kira sintaxnya seperti ini:

    set(‘bank’, ‘BNI’);
    // Masukkan username dan password.
    $ibank->set(‘username’, ‘MYUSERNAME’);
    $ibank->set(‘password’, ‘MYPASSWORD’);
    // Start object to get transaction history.
    $ibank->history();
    // Set range.
    $ibank->history->start(‘now’); // @see php.net/strtotime
    $ibank->history->end(‘last month’); // @see php.net/strtotime
    // Method execute akan melakukan http request, parsing html, save cookie, dll.
    $ibank->execute();
    // Hasil saldo dan mutasi rekening berada pada property result.
    $ibank->result;
    // Uncomment baris dibawah ini jika ingin menyimpan sebagai file csv.
    // $ibank->history->save(‘mutasi.csv’); // @see php.net/strtotime
    ?>

  11. Tidak dishare ke github, om?
    Saya juga lagi buat utk project saya, kira-kira sintaxnya seperti ini:

    <?php
    /**
    * Contoh Penggunaan Advanced
    * – mengambil saldo terakhir
    * – mengambil mutasi rekening 1 bulan terakhir.
    * – simpan hasil sebagai file CSV.
    */
    $ibank = new intenetBankingID;
    // Pilih bank, opsi tersedia: BCA, BNI, Mandiri.
    $ibank->set(‘bank’, ‘BNI’);
    // Masukkan username dan password.
    $ibank->set(‘username’, ‘MYUSERNAME’);
    $ibank->set(‘password’, ‘MYPASSWORD’);
    // Start object to get transaction history.
    $ibank->history();
    // Set range.
    $ibank->history->start(‘now’); // @see php.net/strtotime
    $ibank->history->end(‘last month’); // @see php.net/strtotime
    // Method execute akan melakukan http request, parsing html, save cookie, dll.
    $ibank->execute();
    // Hasil saldo dan mutasi rekening berada pada property result.
    $ibank->result;
    // Uncomment baris dibawah ini jika ingin menyimpan sebagai file csv.
    // $ibank->history->save(‘mutasi.csv’); // @see php.net/strtotime
    ?>

    1. ga sempet om, om aja terusin siapa tau ntar banyak yang ikutan ๐Ÿ˜€

      Masalah syntax sih terserah (yang penting gampang dipakai). Lalu kalau boleh komen, saya ga tau yang punyanya om di dalemnya gimana, tapi proses ngambil mutasi sama cek saldo baiknya dipisah. Jangan sampai cuma ada 1 proses yg melakukan keduanya dan dianggap gagal kalau salah satunya gagal. Soalnya (setidaknya di BCA) frekuensi keberhasilan ngebuka halaman Informasi Saldo lebih tinggi daripada Mutasi Rekening (bukan masalah koding/koneksi tapi emang di klikbca nya begitu).

      Trus perlu diinget juga bahwa hasil di Informasi Saldo itu lebih kecil ceban daripada akhir saldo di Mutasi Rekening.

      Logika script notifier.php saya gini (kalau blum dilihat):
      – cek saldo
      – kalau sama, skip
      – kalau beda, baru cek mutasi

      Proses ngambil saldo beda dengan proses cek mutasi.

      Jadi kadang memang dia berhasil cek saldo (dan bisa ngasi notfikasi kalo ada perubahan saldo) tapi mutasi rekeningnya (informasi mengenai apa yang bikin saldo berubah) gagal diambil.

      Trus sebetulnya ada rencana juga utk otomatis nyimpen data, barangkali flat file aja, supaya data taun lalu juga tetep tersimpan, tapi seperti saya bilang di atas kayaknya ini agak panjang kalau mau dibikin supaya fleksibel / gampang dijalankan di semua settingan server…

  12. sore om , saya nyoba skripnya yang di atasโ€ฆ
    untuk test berhasil hanya saja gagal menampilkan saldo dan mutasi

    saya coba liat errornya dimana, pas saya echokan bari di bawah,
    $src = $this->curlexec();
    echo $src;

    ternyata hasilnya cm nampilin angka โ€œ1โ€, apakah memang demikian ? hasil curlexec() hanya bernilai 1 atau 0 ?
    ataukah harusnya string tag html dibawah ini
    [code]000000,00[/code]

    atau skrip ini udah ga jalan jadi cuma nampilin angka 1 ?

    mohon petunjuknya om, masih bisa diperbaiki ga yaaaโ€ฆ
    makasih ๐Ÿ˜€

    1. halo,

      kayaknya harusnya kalau di-echo hasilnya nggak 1, coba di function curlexec(), CURLOPT_RETURNTRANSFER, 1, angka 1 nya ganti jadi 0, trus panggil lagi script nya utk sekedar melihat apakah curl berfungsi. Harusnya nanti akan ada tampilan halaman-halaman klikbca (dengan address bar yang tidak berubah).

      Lebih baik lagi kalau om tulis die(); di fungsi login(), tepat setelah $this->curlexec(); yang pertama. Gunanya supaya script berhenti pada langkah pertama, yaitu setelah mengambil halaman depan (sebelum melakukan login).

      Skripnya sih masih jalan ๐Ÿ™‚

  13. Mas, saya coba parsing BCA yang Anda buat. Saya jalankan di server hosting bisa muncul dengan baik. Waktu saya coba di localhost tidak berjalan dengan baik. Padahal filenya saya ambil dari hosting.

    berikut munculnya
    IP Server : 202.67.43.26
    Tanggal & Jam : 2015-05-17 19:45:34
    Path : C:\xampp\htdocs\mutasi
    Writable : Ya

    Akun : BCA ardian
    Saldo : Gagal mengambil saldo

    Transaksi : Gagal mengambil transaksi

    Kira2 kenapa ya? Jam nya sudah disesuaikan.

    1. localhostnya bisa curl ngga mas? coba jalankan fungsi curl sederhana (jgn lupa error_reporing( E_ALL ) biar ketauan kalau ada error.

      kalau memang blum ada, coba cek barangkali di sini utk mengaktifkan curl nya ๐Ÿ™‚

  14. sejauh ini ane make lancar bos udah beberapa bulan, tapi ga tau kenapa pagi ini script “GAGAL MENGAMBIL SALDO”, padahal semalem masih lancar2 aja…

    mohon bantu solusi bos ya, thx

  15. UPDATE BOS…
    ga tau kenapa barusan idup lagi rumus nya… jam 10:30 pagi WIB… kegagalan sebelumnya udh ane cek BCA redirect 302 ke halaman mobile, dan tiba2 normal lagi setelah halaman redirect 302 tidak muncul, kemungkinan sih BCA sedang meningkatkan keamanan via USERAGENT nya supaya REAL USER yang bener2 bisa login…

    moga ga terlalu jauh lah perubahan sistemnya, repot ngubek2 script nya beeuuuh…

    STATUS: SCRIPT WORK KEMBALI

    1. iya gan kadang memang suka gagal tapi rasanya itu wajar di BCA nya. Kadang kan kalau kita buka klikbca kita ga bisa lihat saldo/mutasi, walaupun di luar jam yang memang “sangat besar kemungkinan” ga bisa (sekitar setelah jam 8 malam) walau kadang-kadang bisa ๐Ÿ˜€

      Script nya masih berfungsi, ane kan pake juga notifiernya di sebuah website toko online yang sering terjadi transaksi, dan sampai barusan masih masuk kok notifikasi-notifikasinya.

  16. kalo class MandiriParser atau BNIParser sdh ada blm mas?

    1. blum mas ๐Ÿ˜€

  17. Gan, di crontab bawaan hosting, ada “shell=/bin/bash” dan “path=/usr/bin:/bin” , trus eksekusi perintahnya gimana?
    Terima kasih

    1. maaf gan, kalau itu tergantung os nya, ane ga bisa kasih jawaban yg pasti.
      coba agan tanya ke hostingan, atau baca-baca mengenai cara cron di os yang agan gunakan ๐Ÿ™‚

  18. siang gan, sebelumnya minal aidin wal faizin yah gan ๐Ÿ™‚

    Script diatas masih work kah? saya coba sesuai komen2 yg disini jg tetep yg muncul :

    Saldo : Gagal mengambil saldo
    Transaksi : Gagal mengambil transaksi

    padahal user n pass dibuat login di klikbca sukses.
    mohon solusinya gan,

    tengkiuu

  19. UPDATE : maaf bang, barusan saya tambahkan skrip “Matiin verifikasi SSL Certificate & server redirect” di link http://www.randomlog.org/article/bca-parser/comment-page-1/#comment-266

    dan bisa nampilkan saldo, sekarang masih coba utk mutasi nya gan…
    masih belum muncul.

  20. Mutasi belum muncul barangkali karena memang lagi ga bisa. Teorinya kalau saldo sudah bisa harusnya sudah tidak ada masalah ๐Ÿ™‚

  21. UPDATE :
    Bisa munculin saldo bos..
    Mantab.. Ditunggu update class Mandiri n BNI nya gan ๐Ÿ™‚

    Ane jg lagi coba2 Bank Mandiri nie. Barangkali ada update an jg dari agan2 dimari bisa di share dimari gans… :-*

    1. maksudnya munculin mutasi gan ๐Ÿ˜€

      1. saya coba kok mutasi nya gk muncul2 yaa..??
        ada yg bisa kasih masukan gk..??

        Thanks

      2. Kalau saldo muncul gan?

  22. di saya kok gagal ya.
    jam sudah cocok padahal

    1. ada info2 error yang muncul?

      1. sudah bisa sekarang ๐Ÿ˜€
        kalau buat BRI lewatin captcha nya gmn ya ?

      2. Agan bryan, Anda akses per 25 Sept ya ? Saya coba akses per 27 Sept jam 20 an lebih sedikit kok gak bisa.
        Agan pakai yg IbParser atau yg script lama sebelum ada IbParser ?

      3. Masih bisa gan, notifier.php ngasih info barusan per 29 September pukul 6:00 PM ๐Ÿ˜€

      4. Eh maaf gan, udah bisa. Ternyata harus copy paste yg
        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
        di IbParser nya. Kelupaan :p :p

      5. Waduh ane baca komennnya dari awal ๐Ÿ˜€

      6. cara lewatin captcha yang 100% sukses tuh pakai tenaga manusia gan ๐Ÿ˜€

        Konsepnya jadi setiap request captcha diteruskan ke segerombolan manusia yang akan nulis jawabannya, baru dibalikin. Ada banyak layanan2 untuk ini misalnya 2captcha.com.

    2. saya punya buat bca n mandiri, klo agan2 punya buat bri / bni kita barteran aja.

  23. kenapa ketika mengakses saldo atau transaksi harus request dua halaman, saya coba langsung ke halaman yang dituju bisa tuh

    1. Mungkin juga ya? Waktu itu soalnya kalau ga salah dia mendeteksi referer, jadi kalau kita datang langsung (bukan dari alur yg sebenarnya) ga bisa. Memang di cURL sudah di set referrer sih, tapi waktu itu saya buatnya memang ngikutin alur banget (biar persis sama seperti kalau orang beneran yang ngebrowsing websitenya). Nanti kapan-kapan ane benerin biar makin efisien hehehe ๐Ÿ˜€

  24. bro, kok kalo pake ibank.klikbca.com selalu gagal ya. dicoba pake wget/curl juga selalu larinya kena Redirect ke logoff.htm ๐Ÿ˜

    1. maksudnya website klikbca yang versi desktop ya? itu emang beda gan alur-alurnya. Dan justru ane pakai yang mobile karena terlihat lebih baru, jadi lebih kecil kemungkinan akan berubah dalam waktu dekat. Kalau yang desktop kan jadul banget, tampilan jelek, pakai frame, dkk…

  25. Gan RL, saya coba pakai 2 cara, yg PHP lama (sebelum ada IbParser) dan versi IbParser.
    Duluuuu memang jalan dua2nya. Top. Tapi ini nyoba lagi sekitar jam 8 malam kok gak bisa. Baca2 respon, bisa jadi krn memang dari server BCA nya.
    Lalu coba pakai web inspector di situs aslinya, ternyata ada tambahan parameter lagi yg dikirim, yaitu CurNum. Isinya rangkaian string acak.
    Apakah agan RL sudah tahu hal tsb ?
    Tks sebelumnya.

    1. Saya lupa deh sama parameter2nya ๐Ÿ˜€ Tapi sampai barusan masih jalan kok. Saya kan pakai untuk toko online yang sering transaksi, jadi kalau ada yg error pasti saya langsung tau.

  26. untuk bank mandiri:

    set_time_limit(600);

    $agent = “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:10.0.2) Gecko/20100101 Firefox/10.0.2”;
    $fcookie = dirname( __FILE__ ) . “/httpsCurl.cookie.txt”;

    function getMaxDay($year,$month) {
    if( in_array($month,array(1,3,5,7,8,10,12)) ) return 31;
    if( in_array($month,array(4,6,9,11)) ) return 30;
    if($year%4 == 0) return 29; // kabisat sederhana //
    return 28;
    }

    function httpsCurl($url,$urlref=false,$fields=false) {
    global $fcookie, $agent;
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    if($urlref) {
    curl_setopt($ch, CURLOPT_REFERER, $urlref);
    }
    if($fields) {
    $fields_string = ”;
    foreach($fields as $key=>$value) {
    $fields_string .= $key.’=’.$value.’&’;
    }
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    } else {
    curl_setopt($ch,CURLOPT_HTTPGET, TRUE);
    }
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,TRUE);
    curl_setopt($ch, CURLOPT_COOKIEJAR, $fcookie);
    curl_setopt($ch, CURLOPT_COOKIEFILE, $fcookie);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    $html = curl_exec($ch);
    return $html;
    }

    function baca_mutasi_bank_mandiri($userID, $password, $month,$year){

    // LOGOUT //
    $url0 = ‘https://ib.bankmandiri.co.id/retail/Logout.do?action=result’;
    $result0 = httpsCurl($url0);
    //file_put_contents(‘./result0.html’,$result0);
    //sleep(2);

    // MASUK //
    $url1 = ‘https://ib.bankmandiri.co.id/retail/Login.do?action=form&lang=in_ID’;
    $result1 = httpsCurl($url1,$url0);
    //file_put_contents(‘./result1.html’,$result1);
    //sleep(2);

    // LOGIN //
    $fields = array(
    ‘action’=>urlencode(“result”)
    , ‘password’=>urlencode($password)
    , ‘userID’=>urlencode($userID)
    , ‘image.x’=>urlencode(“0”)
    , ‘image.y’=>urlencode(“0″)
    );
    $url2 = ‘https://ib.bankmandiri.co.id/retail/Login.do’;
    $result2 = httpsCurl($url2,$url1,$fields);
    //file_put_contents(‘./result2.html’,$result2);
    //sleep(2);

    // BACA KODE CCOUNT //
    $url3 = ‘https://ib.bankmandiri.co.id/retail/TrxHistoryInq.do?action=form’;
    $result3 = httpsCurl($url3,$url2);
    //file_put_contents(‘./result3.html’,$result3);
    //sleep(2);
    $accID = strpos($result3,’name=”fromAccountID”‘);
    if( $accID && ($accID=strpos($result3,’ value=”‘,++$accID)) && ($accID=strpos($result3,’ value=”‘,++$accID)) ) {
    $accID = substr($result3,$accID+8,15);
    $accID = rtrim($accID, ‘”> ‘);
    //echo $accID;
    }

    // BACA MUTASI SATU BULAN //
    $max_day = getMaxDay($year,$month);
    $fields = array(
    ‘action’=>urlencode(“result”)
    , ‘fromAccountID’=>urlencode($accID)
    , ‘fromDay’=>urlencode(“1”)
    , ‘fromMonth’=>urlencode($month)
    , ‘fromYear’=>urlencode($year)
    , ‘orderBy’=>urlencode(“ASC”)
    , ‘searchType’=>urlencode(“R”)
    , ‘sortType’=>urlencode(“Date”)
    , ‘toDay’=>urlencode($max_day)
    , ‘toMonth’=>urlencode($month)
    , ‘toYear’=>urlencode($year)
    );
    $url4 = ‘https://ib.bankmandiri.co.id/retail/TrxHistoryInq.do’;
    $result4 = httpsCurl($url4,$url3,$fields);
    //file_put_contents(‘./result4.html’,$result4);
    //sleep(2);

    // LOGOUT //
    $resultx = httpsCurl($url0);
    // file_put_contents(‘./resultx.html’,$resultx);

    return $result4;
    }

    $_userid = ‘bamban2601’;
    $_passwd = ‘123456’;
    $_bulan = 11; // november
    $_tahun = 2015;

    $sret = baca_mutasi_bank_mandiri($_userid, $_passwd, $_bulan,$_tahun);
    $iawal = strpos($sret,’‘);
    $iakir = strpos($sret,’‘);
    if($iawal && $iakir && $iawal<$iakir) {
    echo substr($sret,$iawal,$iakir-$iawal);
    } else {
    echo "kosong";
    }

  27. gan mau tanya , kalau mau di tentukan berdasarkan 2 inputan tanggal bagaimana??
    mohon bantuan nya

    1. maksudnya biar range tanggalnya bisa disetel yah? Kalau itu harus ubah IbParser.php nya ๐Ÿ™‚

      1. Heru Prasetya Avatar
        Heru Prasetya

        master, di ubah yang sebelah mana yah. udah saya ubek”ga ketemu”..

      2. di function __construct gan ๐Ÿ˜€

  28. IP Server : 139.228.76.174
    Tanggal & Jam : 2016-02-01 19:35:32
    Path : C:\xampp\htdocs\bca\bca
    Writable : Ya
    Akun : BCA [SAYA HIDDEN]
    Saldo : Gagal mengambil saldo
    Transaksi : Gagal mengambil transaksi

    Untuk jam sudah sesuai GMT+7, tapi mengapa masih gagal ambil saldo ya gan?

    Untuk variable time di lbParser.php saya ganti menjadi: $this->conf[‘time’] = time();

    tidak ada keterangan errornya. Mohon pencerahannya. Terima Kasih

    1. Untuk cURL udah saya aktifkan dan saya coba google.com udah bisa…

  29. Update lagi gan, maaf terlalu panjang. ๐Ÿ˜€
    Ternyata ketika saya upload ke server tidak ada masalah dan bisa menampilkan saldo serta mutasi.

    Makasih gan, saya explore2 dulu…

    1. siaap gan ๐Ÿ˜€

      1. btw dulu saya pernah juga pusing gara-gara ternyata sempat login 2x tanpa logout, akibatnya kan kita ga bisa login selama 10 menit. Jadi kalau nemu masalah dicek2 juga login secara manual lewat browser, siapa tau ini yg terjadi.

  30. semua berfungsi dengan baik. thanks, gan.

  31. gan utk saldo sdh transaksi sudah bisa ada ada error pada line 14 di ibparser , mau tanya hrus di rubah apa ya scriptnya? thx gan

    1. Line #14 kalau di file saya itu adalah bagian fungsi file_get_contents() ya? Errornya seperti apa? Fungsi ini berguna untuk mendapatkan ip publik dari servernya agan ๐Ÿ™‚

      Kalau filenya sudah diubah (line #14 bukan yang itu), coba kasih tau apa isi dari line #14 dan apa errornya.

  32. Jonny Kartolo Avatar
    Jonny Kartolo

    Sebelumnya, kusampaikan Terima Kasih banyak buat Pak RL yg sudah membuat Tools membantu para programmer newbie…
    Boleh saya minta diajarin cara parse lebih banyak data ?
    $transactions = $parsernum->getTransactions( $bank, $user, $pass );
    Hanya menghasilkan 8 baris transaksi terakhir…
    Bisakah data di Showall sebanyak 31 hari seperti buka klikbca secara manual ?

    1. Sebetulnya bukan 8 transaksi terakhir, tapi “seluruh transaksi pada (kalau ngga salah) 3 hari terakhir”.

      Untuk 31 hari terakhir, baru saya jawab di komentar satu lagi ๐Ÿ™‚

  33. Tools yg sgt bagus Pak RL… apakah bisa ShowAll data sebanyak 31 hari spt manual buka klikbca?

    1. IbParser.php hanya membuka daftar mutasi (kalau ngga salah) 3 hari terakhir. Kalau mau dibuat supaya rentang waktunya lebih lama bisa aja dg mengubah variabel penentu tanggal di file IbParser.php

      Atau lebih baik lagi, IbParser ngga usah diubah, tapi program yg menggunakannya dibuat supaya menyimpan data ke database, jadi nantinya data yg bisa dilihat bukan cuma 1-3 bulan ke belakang ๐Ÿ™‚

      1. Terima kasih banget pak atas menyediakan source yg terbuka utk umum….. Coding tanggal ternyata ada di sini:
        $start = mktime( $d[3], $d[4], $d[5], $d[1], ( $d[2] – 31 ), $d[0] );
        mengenai ide bpk yg save ke tabel database sendiri… sgt inspiratif… jadi mau akses data berapa tahun pun tiada masalah lagi… pokoknya keren habis ! ๐Ÿ˜€

      2. betul pak kalau dibuat seperti itu maka yg ditampilkan adalah transaksi 31 hari terakhir ๐Ÿ™‚

  34. cara menjalankan notifier.php nya bagaimana yah pak?

    1. untuk test file tsb bisa dipanggil dari browser (hapus fungsi die()) di baris2 atas.

  35. Gan, ini masih bisa tidak ya?
    Kok saya coba sekarang tidak bisa ya. Dulu padahal bisa.

    1. Sebelumnya terima kasih ya gan, IBParser nya sangat berguna

      1. masih jalan kok gan di saya ๐Ÿ˜€

    2. masih bisa gan di saya ๐Ÿ™‚

      1. oh iya gan bisa..
        dah dibenerin temen, sempat ga bisa karena http dan https.

        makasih gan

  36. sigitholic Avatar
    sigitholic

    Halo om mau tanya ni saya masih bertanya2 untuk maksimal pengecekan mutasi di bank bca, yang saya mau tanyakn adakah maksimal pengecekan mutasi rekening di bca internet banking dalam sehari, takutnya keblokir kalo saya bikin tiap 3 menit sekali cek reking.

    karena saya dengan maksimal sehari hanya 48x pengecekan. mohon pencerahanya om.

    1. saya cuma pernah dikasih “nasehat” aja gan, supaya pengecekan nggak lebih dari 100x per hari. Jadi kalau 3 menit itu sepertinya terlalu sering ๐Ÿ˜€

  37. Permisi gan, seperti agan @rickyok diatas yg bikin versi python nya, sy jg jadi tertarik bikin package untuk Laravel 5 nya nih hehehe.
    Cek disini yah gan: https://github.com/rick20/ibanking.
    Available untuk bca sama mandiri.
    Semoga bisa berguna buat yg lain ๐Ÿ™‚

    1. Terima Kasih gan

    2. Iwan Sahat Avatar
      Iwan Sahat

      Bro ada yang versi php gak BCA dan Mandirinya.?
      Lagi ada tugas kuliah nih buat beginian..

  38. thanks for sharing gan sangat berguna

    untuk IbParser internet banking lain apakah ada juga? :p

    1. belum gan ๐Ÿ˜€

  39. Alex Yamin Avatar
    Alex Yamin

    bro, kalo mau otomatis di log ke sql, berarti ditaruh di notifier ?
    atau bagaimana yah ?

    1. iyah di notifier dibikinnya. Kalau IbParser isinya sebaiknya cuma class untuk konek ke bca nya aja ๐Ÿ™‚

      1. Alex Yamin Avatar
        Alex Yamin

        apakah tinggal insert, atau harus dibandingkan dulu dengan data sebelumnya ?
        bisa kasih contoh bro ?

      2. kalau log sih ga usah dibandingin. Bandingin perlu (sebetulnya cuma salah 1 cara yg saya pakai) untuk mengetahui apakah ada perubahan data / transaksi baru dengan cepat, tanpa harus membuka halaman mutasi rekening. Cukup buka informasi saldo, yang lebih mudah di-parse, dan lebih jarang gagal (kalau pagi2 gitu kadang informasi saldo bisa dibuka tapi mutasi rekening engga) ๐Ÿ˜€

  40. Mas ini tidak bisa dijalankan di localhost ya? padahal fungsi curl sudah aktif.

    muncul pesan seperti ini:

    IP Server : 112.215.XXX.XXX
    Tanggal & Jam : 2016-09-09 03:25:53
    Path : E:\Program Files\Xampp\htdocs\bankparser
    Writable : Ya
    Akun : BCA xxxxxxxxx
    Saldo : Gagal mengambil saldo
    Transaksi : Gagal mengambil transaksi

    1. Saya sudah coba grab google.com bisa.
      Tapi tiap coba ke link https selalu muncul Array ( [content] => )

      1. ok coba yakinkan dulu kalau klikbca nya, atau akun klikbca nya bisa diakses. Coba buka & login langsung melalui browser.

        kalau masih ngga bisa, coba cek function login(). Di situ ada 2 $this->curlexec();, ganti yg pertama menjadi echo $this->curlexec(); die();.

        Trus coba panggil lagi file utk test nya (yg munculin ip, tanggal, dkk). Di browser harusnya muncul halaman login klikbca versi mobile, kalau engga maka masalahnya ada sebelum itu nanti dipikirkan lagi cara test nya gimana. ๐Ÿ˜€

  41. script nya mantap gan.. sudah saya test selama kurang lebih 2 bulan, berjalan dengan lancar

  42. thanks gan atas source code nya. membantu sekali gan.

  43. mantap agan. thanks gan atas source code nya. membantu sekali gan.

    1. masih work emang gan script nya?

      1. masih dong gan

  44.  Avatar
    Anonymous

    april 2020 masih

    1. mei 2020 masih

  45. Syubngkit Avatar
    Syubngkit

    gan mau tanya, supaya tanggal transaksi y tampil dengan tahun y ubah y dimna y gan?

    1. di file IbParser.php di bagian $this->post_time. Di situ ditentukan tanggal bulan tahun awal & akhir atas data yang ingin diambil, yang adalah salah dua variabel yang wajib di-POST saat ingin mengambil data ke klikBCA.

      $d adalah tanggal bulan tahun saat ini.

      $start adalah tanggal bulan tahun saat ini, dikurangi 3 hari.

      1. Syubngkit Avatar
        Syubngkit

        ok mkasih gan, lalu jika ingiin menambahkan ke local db kita bgaimana gan? makasih ga sblm y

  46.  Avatar
    Anonymous

    Per pertengahan Maret 2022, fungsi get transaksi sepertinya uda ga “work”.
    Get saldo masih ok.

    Peningkatan saldo: Rp 1,000,000,000.00
    Saldo saat ini Rp 1,001,925,833.68
    Transaksi:
    Gagal mengambil transaksi

    Jadi ga tau nih siapa yang transfer 1M.

  47. Reynaldi Avatar
    Reynaldi

    Hallo, ini ada update script nya?

    Karena pada Juni 2022 ini sudah hanya dapat mengakses saldo saja. untuk mutasi tidak dapat.

    Mohon ada update atau arahannya. Terimakasih

  48. Iya agan2, gak berfungsi script nya. Masih bisa dibetulin tapi yang punya ane udah cukup terintegrasi jadi ga bisa langsung kopas.

    Trus selain itu juga BCA sekarang udah ada akses API (bayar dan untuk corporate).

  49. sdh diperbaiki juni 2022 dan jalan , tetapi sejak 20 juli kmrn tidak jalan lagi. kayaknya ada yg diubah lagi di klikbcanya

Leave a Reply

Your email address will not be published. Required fields are marked *