function respond_financial_request() { $response = new JAK8583(); global $data_element; $bal_txn = 0; $account = sprintf('%.0f', $data_element[2]); $processing_code = $data_element[3]; $amount = sprintf('%.0f', $data_element[4]); $amount = $amount / 100; $terminalNumber = $data_element[41]; $encr_pin = $data_element[52]; $transaction_code = substr($processing_code, 0, 2); $account_type = substr($processing_code, 2, 2); $client = new Client(); $client->principal_type = "USER"; $client->principal = substr(preg_replace("/^23450/", "", $account), 0, strlen(preg_replace("/^23450/", "", $account)) - 1); //Decrypt pin $pin = file_get_contents("http://154.0.130.42/decrypt.php?account={$account}&pin={$encr_pin}"); $client->pin = $pin; //should decrypt first $data = $client->getMember(); $data1 = $client->checkCredentials(); if (isset($data->return->id)) { $bal_inquiry = $client->getAccountStatus(); var_dump($bal_inquiry); if ($transaction_code == '31') { // Balance enquiry $balance = round($bal_inquiry->balance) * 100; $bal_txn = 1; $response_code = "00"; } else { if (!isset($data->return->id)) { $response_code = "14"; } elseif ($data1->return != "VALID") { if ($data1->return == "INVALID") { $response_code = "55"; //Incorrect personal identification number } elseif ($data1->return == "BLOCKED") { $response_code = "38"; //Allowable PIN tries exceeded, capture } } elseif ($amount > round($bal_inquiry->balance)) { $response_code = "13"; } else { //do the transaction here if ($transaction_code == "01") { //cash withdrawal $stan = $data_element[11]; $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die(mysql_error()); mysql_select_db(DB_NAME, $link) or die(mysql_error()); $records = mysql_query("SELECT * FROM interswitch_status WHERE stan='{$stan}' AND account='{$account}' AND date > DATE_SUB(NOW(), INTERVAL 24 HOUR)\n AND date <= NOW()"); //check if we have a transaction with the same account and stan within 24hrs if (mysql_num_rows($records) == 0) { $payment = new Payment(); $payment->fromMemberPrincipalType = "USER"; $payment->fromMember = substr(preg_replace("/^23450/", "", $account), 0, strlen(preg_replace("/^23450/", "", $account)) - 1); $payment->toMemberPrincipalType = "USER"; $payment->toMember = "interswitch"; $payment->amount = $amount; $payment->description = "ATM Withdrawal"; $payment->transferTypeId = 33; $payment->setTerminal($terminalNumber); $payment_data = $payment->doPayment(); if (isset($payment_data->return)) { if ($payment_data->return->status == "PROCESSED") { $response_code = "00"; $transfer_id = $payment_data->return->transfer->id; //lets add this to the db incase we have to chargeback later //status codes(00:ok, 01:charged_back,02:chargeback failed) $query = mysql_query("INSERT INTO interswitch_status (stan, transfer_id, status_code,account) VALUES('{$stan}','{$transfer_id}','00',{$account})") or die(mysql_error()); } else { //the transfer failed. send back appropriate response $response_code = "06"; } } } else { $response_code = "94"; //duplicate transmission } } } } } $response->addMTI("0210"); $response->addData(2, $account); $response->addData(3, $data_element[3]); $response->addData(4, $data_element[4]); if (!empty($data_element[5])) { $response->addData(5, $data_element[5]); } $response->addData(7, $data_element[7]); if (!empty($data_element[9])) { $response->addData(9, $data_element[9]); } $response->addData(11, $data_element[11]); $response->addData(12, $data_element[12]); $response->addData(13, $data_element[13]); if (!empty($data_element[14])) { $response->addData(14, $data_element[14]); } if (!empty($data_element[15])) { $response->addData(15, $data_element[15]); } if (!empty($data_element[18])) { $response->addData(18, $data_element[18]); } if (!empty($data_element[28])) { $response->addData(28, $data_element[28]); } $response->addData(32, $data_element[32]); $response->addData(37, $data_element[37]); $response->addData(39, $response_code); if (!empty($data_element[41])) { $response->addData(41, $data_element[41]); } $response->addData(49, $data_element[49]); if (!empty($data_element[50])) { $response->addData(50, $data_element[50]); } if ($bal_txn == 1) { $balance_text = sprintf("2001800C%012.0f2002800C%012.0f", $balance, $balance); $response->addData(54, $balance_text); } if (!empty($data_element[102])) { $response->addData(102, $data_element[102]); } print "Response is: "; print_r($response->getData()); return $response->getISO(); }