Exemple #1
0
 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;
     }
 }
Exemple #3
0
 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();
 }