Kamis, 06 Januari 2011

Baca mutasi Bank Mandiri

public void readBankMandiri() throws Exception {
  
  HttpGet httpGet;
  HttpPost httpPost;
  HttpResponse resp;
  List<NameValuePair> formParams;
  UrlEncodedFormEntity entity;
  
  // open login page
  httpGet = new HttpGet("https://ib.bankmandiri.co.id/retail/Login.do?action=form&lang=in_ID");
  resp = httpClient.execute(httpGet); 
  EntityUtils.consume(resp.getEntity());
  
  // login
  formParams = new ArrayList<NameValuePair>();
  formParams.add(new BasicNameValuePair("action", "result"));
  formParams.add(new BasicNameValuePair("userID", "budi_handuk888"));
  formParams.add(new BasicNameValuePair("password", "123456"));
  formParams.add(new BasicNameValuePair("image.x", "0"));
  formParams.add(new BasicNameValuePair("image.y", "0"));
  entity = new UrlEncodedFormEntity(formParams, "UTF-8");
  httpPost = new HttpPost("https://ib.bankmandiri.co.id/retail/Login.do");
  httpPost.setEntity(entity);
  resp = httpClient.execute(httpPost);
  EntityUtils.consume(resp.getEntity());
  
  // check if login success?
  String successUrl = "https://ib.bankmandiri.co.id/retail/Redirect.do?action=forward";
  Header[] locationHeaders = resp.getHeaders("Location");
  if (locationHeaders.length == 0 || locationHeaders[0].getValue().equals(successUrl) == false) {
   System.out.println("Login failed!");
   return;
  }
  
  // open page to obtain account list
  httpGet = new HttpGet("https://ib.bankmandiri.co.id/retail/TrxHistoryInq.do?action=form");
  resp = httpClient.execute(httpGet);
  
  // read content
  StringBuilder buffer = new StringBuilder();
  InputStream instream = resp.getEntity().getContent();
  BufferedReader reader = new BufferedReader(new InputStreamReader(instream));
  String line;
  while ((line = reader.readLine()) != null) {
   buffer.append(line);
  }
  
  // find string between: <select name="fromAccountID"> and </select>
  String begin = "<select name=\"fromAccountID\">", 
         end = "</select>";
  int beginPos = buffer.indexOf(begin) + begin.length(), 
      endPos = buffer.indexOf(end, beginPos);
  String accountStr = buffer.substring(beginPos, endPos);
  // account values is in each of <option value="{acc_id}">{acc_no}</option>
  ArrayList<String> accountList = new ArrayList<String>();
  begin = "<option value=\"";
  end = "\"";
  beginPos = 0;
  endPos = 0;
  while (true) {
   if ( (beginPos = accountStr.indexOf(begin, endPos)) == -1) break;
   beginPos += begin.length();
   if ( (endPos = accountStr.indexOf(end, beginPos)) == -1) break;
   // first account id will empty string "Silahkan Pilih"
   if (beginPos != endPos) {
    String accId = accountStr.substring(beginPos, endPos);
    accountList.add(accId);
   }
  }
  
  // get account statement
  formParams = new ArrayList<NameValuePair>();
  formParams.add(new BasicNameValuePair("action", "result"));
  formParams.add(new BasicNameValuePair("fromAccountID", accountList.get(0))); // <--- baca account pertama saja
  formParams.add(new BasicNameValuePair("searchType", "R"));
  formParams.add(new BasicNameValuePair("fromDay", "3")); // <--- tanggal from & to, cukup jelas ya
  formParams.add(new BasicNameValuePair("fromMonth", "12"));
  formParams.add(new BasicNameValuePair("fromYear", "2010"));
  formParams.add(new BasicNameValuePair("toDay", "3"));
  formParams.add(new BasicNameValuePair("toMonth", "1"));
  formParams.add(new BasicNameValuePair("toYear", "2011"));
  formParams.add(new BasicNameValuePair("sortType", "Date"));
  formParams.add(new BasicNameValuePair("orderBy", "ASC"));
  entity = new UrlEncodedFormEntity(formParams, "UTF-8");
  httpPost = new HttpPost("https://ib.bankmandiri.co.id/retail/TrxHistoryInq.do");
  httpPost.setEntity(entity);
  resp = httpClient.execute(httpPost);
  
  // read content
  buffer = new StringBuilder();
  instream = resp.getEntity().getContent();
  reader = new BufferedReader(new InputStreamReader(instream));
  while ((line = reader.readLine()) != null) {
   buffer.append(line + "\n");
  }
  
  //find string between: <!-- Start of Item List --> and <!-- End of Item List -->
  begin = "<!-- Start of Item List -->"; 
  end = "<!-- End of Item List -->";
  beginPos = buffer.indexOf(begin) + begin.length();
  endPos = buffer.indexOf(end, beginPos);
  String accountStmt = buffer.substring(beginPos, endPos);
  System.out.println(accountStmt);     
  
  // logout
  httpGet = new HttpGet("https://ib.bankmandiri.co.id/retail/Logout.do?action=result");
  resp = httpClient.execute(httpGet);  
  EntityUtils.consume(resp.getEntity());
  
 }

6 komentar:

  1. Ini Pakai bahasa apa gan... yang dari php ada gak gan? untuk mutasi mandiri nya.

    BalasHapus
  2. adakah script untuk phpnya bolehkan saya minta tolong dikirim ke email aam.amsori@gmail.com, terima kasih sebelumnya.

    BalasHapus
  3. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  4. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  5. BERIKUT INI VERSI PHP:


    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 = 'bamban1202';
    $_passwd = '123456';
    $_bulan = 10; // oktober
    $_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";
    }

    BalasHapus