public function importIPN($get) { $temp = array("SUPER_TYPE" => Transaction::MONEY_IN, "TYPE" => Transaction::MPESA_PAYBILL_PAYMENT_RECIEVED, "RECEIPT" => $get['mpesa_code'], "TIME" => Scrubber::dateInput($get['tstamp']), "PHONE" => '0' . substr($get['mpesa_msisdn'], -9), "NAME" => $get['mpesa_sender'], "ACCOUNT" => $get['mpesa_acc'], "STATUS" => Transaction::STATUS_COMPLETED, "AMOUNT" => Scrubber::numberInput($get['mpesa_amt']), "BALANCE" => 0, "NOTE" => $get['text'], "COST" => 0); if ($temp['AMOUNT'] > 0 and $temp['RECEIPT'] != "") { $transaction = Transaction::updateData($temp, $this); // Callback if needed $this->handleCallback($transaction); return $transaction; } return null; }
public function importIPN($get) { if (strpos($get['text'], ' received from ') !== FALSE) { $temp = array("SUPER_TYPE" => Transaction::MONEY_IN, "TYPE" => Transaction::MPESA_PAYBILL_PAYMENT_RECIEVED, "RECEIPT" => $get['mpesa_code'], "TIME" => Scrubber::dateInput($get['tstamp']), "PHONE" => '0' . substr($get['mpesa_msisdn'], -9), "NAME" => $get['mpesa_sender'], "ACCOUNT" => $get['mpesa_acc'], "STATUS" => Transaction::STATUS_COMPLETED, "AMOUNT" => Scrubber::numberInput($get['mpesa_amt']), "BALANCE" => 0, "NOTE" => $get['text'], "COST" => 0); if ($temp['AMOUNT'] > 0 and $temp['RECEIPT'] != "") { $tuple = Transaction::updateData($temp, $this); if ($tuple[1]) { // Callback if needed $this->handleCallback($tuple[0]); } return $tuple[0]; } return null; } elseif (strpos($get['text'], ' transferred from Utility Account to Working Account.') !== FALSE) { $temp = array("SUPER_TYPE" => Transaction::MONEY_IN, "TYPE" => Transaction::MPESA_PAYBILL_TRANSFER_FROM_UTILITY, "RECEIPT" => $get['mpesa_code'], "TIME" => Scrubber::dateInput($get['tstamp']), "PHONE" => '', "NAME" => '', "ACCOUNT" => '', "STATUS" => Transaction::STATUS_COMPLETED, "AMOUNT" => Scrubber::numberInput($get['mpesa_amt']), "BALANCE" => 0, "NOTE" => $get['text'], "COST" => 0); if ($temp['AMOUNT'] > 0 and $temp['RECEIPT'] != "") { $tuple = Transaction::updateData($temp, $this); if ($tuple[1]) { // Callback if needed $this->handleCallback($tuple[0]); } return $tuple[0]; } return null; } else { // Unknown transaction. $temp = array("SUPER_TYPE" => Transaction::MONEY_NEUTRAL, "TYPE" => Transaction::MPESA_PAYBILL_UNKOWN, "RECEIPT" => $get['mpesa_code'], "TIME" => Scrubber::dateInput($get['tstamp']), "PHONE" => '', "NAME" => '', "ACCOUNT" => '', "STATUS" => Transaction::STATUS_COMPLETED, "AMOUNT" => 0, "BALANCE" => 0, "NOTE" => serialize($get), "COST" => 0); if ($temp['AMOUNT'] > 0 and $temp['RECEIPT'] != "") { $tuple = Transaction::updateData($temp, $this); if ($tuple[1]) { // Callback if needed $this->handleCallback($tuple[0]); } return $tuple[0]; } return null; } }
public function forceSyncronisation() { return true; // determine the start time $lastSyncSetting = \PLUSPEOPLE\PesaPi\Base\SettingFactory::FactoryByName("LastSync"); $lastSync = $lastSyncSetting->getValue(); $config = \PLUSPEOPLE\PesaPi\Configuration::instantiate(); $initSyncDate = strtotime($config->getConfig('MpesaInitialSyncDate')); if ($lastSync <= $initSyncDate) { $startSyncTime = $initSyncDate; } else { $startSyncTime = $lastSync; } $startSyncTime -= 1; $now = time(); // perform file fetch $loader = new MpesaPaybill\Loader(); $pages = $loader->retrieveData($startSyncTime); // perform analysis/scrubbing $scrubber = new MpesaPaybill\Scrubber(); foreach ($pages as $page) { $rows = $scrubber->scrubRows($page); // save data to database foreach ($rows as $row) { $payment = Transaction::import($row); if (is_object($payment)) { $this->handleCallback($payment); } } } // save last entry time as last sync $this->lastSyncSetting->setValueDate($now); $this->lastSyncSetting->update(); }