/**
  * 
  * Processes the transaction using the specified BankAccountTransaction.
  * Returns an updated BankAccountTransaction containing the response information.
  * 
  * @param vo_bct    the bank account transaction
  * @return  the updated bank account transaction
  * @throws BaseCommerceClientException if invalid credentials were given or if there was an internal server error. Please contact tech support if there is an internal server error.
  * @author Rob Kurst <*****@*****.**>
  */
 public function processBankAccountTransaction(BankAccountTransaction $vo_bat)
 {
     $triple_des = new TripleDESService($this->is_key);
     $o_query = array();
     $o_query['gateway_username'] = $this->is_gateway_username;
     $o_query['gateway_password'] = $this->is_gateway_password;
     $o_query['payload'] = $triple_des->encrypt($vo_bat->getJSON());
     $s_query = json_encode($o_query);
     $response = $this->do_post_request('/pcms/?f=API_processBankAccountTransactionV4', $s_query, $triple_des, 0);
     $vo_bat = BankAccountTransaction::buildFromJSON($response["bank_account_transaction"]);
     if (array_key_exists("exception", $response) && !is_null($response['exception'])) {
         foreach ($response['exception'] as $s_key => $s_error) {
             $vo_bat->addMessage($s_error);
         }
     }
     return $vo_bat;
 }