/** * (non-PHPdoc) * @see Oara/Network/Oara_Network_Base#getPaymentHistory() */ public function getPaymentHistory() { $paymentHistory = array(); $startDate = new Zend_Date('01-01-2009', 'dd-MM-yyyy'); $endDate = new Zend_Date(); $dateArray = Oara_Utilities::monthsOfDifference($startDate, $endDate); for ($i = 0; $i < count($dateArray); $i++) { $dateMonth = $dateArray[$i]; $obj = array(); $obj['date'] = $dateMonth->toString("yyyy-MM-dd HH:mm:ss"); $value = rand(1, 1300); $obj['value'] = $value; $obj['method'] = 'BACS'; $obj['pid'] = $dateMonth->toString('yyyyMMdd'); $paymentHistory[] = $obj; } return $paymentHistory; }
/** * (non-PHPdoc) * @see Oara/Network/Oara_Network_Publisher_Base#getPaymentHistory() */ public function getPaymentHistory() { $paymentHistory = array(); $filter = new Zend_Filter_LocalizedToNormalized(array('precision' => 2)); $startDate = new Zend_Date("01-01-2012", "dd-MM-yyyy"); $endDate = new Zend_Date(); $dateList = Oara_Utilities::monthsOfDifference($startDate, $endDate); foreach ($dateList as $date) { $monthStartDate = clone $date; $monthEndDate = null; $monthEndDate = clone $date; $monthEndDate->setDay(1); $monthEndDate->addMonth(1); $monthEndDate->subDay(1); $monthEndDate->setHour(23); $monthEndDate->setMinute(59); $monthEndDate->setSecond(59); $valuesFromExport = array(); $valuesFromExport[] = new Oara_Curl_Parameter('Begin_Date', $monthStartDate->toString("MM/dd/yyyy")); $valuesFromExport[] = new Oara_Curl_Parameter('End_Date', $monthEndDate->toString("MM/dd/yyyy")); $valuesFromExport[] = new Oara_Curl_Parameter('cd', "c"); $valuesFromExport[] = new Oara_Curl_Parameter('disb', "false"); $valuesFromExport[] = new Oara_Curl_Parameter('coll', "true"); $valuesFromExport[] = new Oara_Curl_Parameter('transactionID', ""); $valuesFromExport[] = new Oara_Curl_Parameter('Begin_DatePN', ""); $valuesFromExport[] = new Oara_Curl_Parameter('Begin_DateCN', ""); $valuesFromExport[] = new Oara_Curl_Parameter('End_DatePN', ""); $valuesFromExport[] = new Oara_Curl_Parameter('End_DateCN', ""); $valuesFromExport[] = new Oara_Curl_Parameter('disbAcctIDRef', ""); $valuesFromExport[] = new Oara_Curl_Parameter('checkNumberID', ""); $valuesFromExport[] = new Oara_Curl_Parameter('paymentNum', ""); $valuesFromExport[] = new Oara_Curl_Parameter('sel_type', "OTH"); $valuesFromExport[] = new Oara_Curl_Parameter('payStatusCat', "ALL_STATUSES"); $valuesFromExport[] = new Oara_Curl_Parameter('amount', ""); $valuesFromExport[] = new Oara_Curl_Parameter('aggregatedCreditAmount', ""); $valuesFromExport[] = new Oara_Curl_Parameter('disbSiteIDManual', ""); $valuesFromExport[] = new Oara_Curl_Parameter('collSiteIDManual', ""); $valuesFromExport[] = new Oara_Curl_Parameter('agencyid', ""); $valuesFromExport[] = new Oara_Curl_Parameter('collbankAccount', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitInvoice', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitAccount', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitCustAccount', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitCustName', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitVendorNumber', ""); $valuesFromExport[] = new Oara_Curl_Parameter('remitVendorName', ""); $urls = array(); $urls[] = new Oara_Curl_Request('https://secure.paymode.com/paymode/payment-DB-search.jsp?dataSource=1', $valuesFromExport); $exportReport = $this->_client->post($urls); if (!preg_match("/No payments were found/", $exportReport[0])) { $dom = new Zend_Dom_Query($exportReport[0]); $results = $dom->query('form[name="transform"] table'); if (count($results) > 0) { $tableCsv = self::htmlToCsv(self::DOMinnerHTML($results->current())); $payment = array(); $paymentArray = str_getcsv($tableCsv[4], ";"); $payment['pid'] = $paymentArray[1]; $dateResult = $dom->query('form[name="collForm"] table'); if (count($dateResult) > 0) { $dateCsv = self::htmlToCsv(self::DOMinnerHTML($dateResult->current())); $dateArray = str_getcsv($dateCsv[2], ";"); $paymentDate = new Zend_Date($dateArray[1], 'dd-MMM-yyyy', 'en'); $payment['date'] = $paymentDate->toString("yyyy-MM-dd HH:mm:ss"); $paymentArray = str_getcsv($tableCsv[3], ";"); $payment['value'] = Oara_Utilities::parseDouble(preg_replace("/[^0-9\\.,]/", "", $paymentArray[3])); $payment['method'] = "BACS"; $paymentHistory[] = $payment; } } else { $results = $dom->query('table[cellpadding="2"]'); foreach ($results as $table) { $tableCsv = self::htmlToCsv(self::DOMinnerHTML($table)); $num = count($tableCsv); for ($i = 1; $i < $num; $i++) { $payment = array(); $paymentArray = str_getcsv($tableCsv[$i], ";"); $payment['pid'] = $paymentArray[0]; $paymentDate = new Zend_Date($paymentArray[3], 'MM/dd/yyyy', 'en'); $payment['date'] = $paymentDate->toString("yyyy-MM-dd HH:mm:ss"); $payment['value'] = Oara_Utilities::parseDouble($paymentArray[9]); $payment['method'] = "BACS"; $paymentHistory[] = $payment; } } } } } return $paymentHistory; }
/** * The affjet cli , read the arguments and build the report requested * @param array arguments, Map of the cli arguments * * @param network, the affiliate network * @return none */ public static function affjetCli($arguments, $network) { //Start date, the first two months ago $startDate = new Zend_Date($arguments['s'], "dd/MM/yyyy"); $startDate->setHour(00); $startDate->setMinute(00); $startDate->setSecond(00); //Yesterday, some networks don't give us the data for the same day, then is the safer way to have our data $endDate = new Zend_Date($arguments['e'], "dd/MM/yyyy"); $endDate->setHour(23); $endDate->setMinute(59); $endDate->setSecond(59); //are we connected? fwrite(STDERR, "\nAccessing to your account \n\n"); if ($network->checkConnection()) { fwrite(STDERR, "Connected successfully \n\n"); if (!isset($arguments['t']) || $arguments['t'] == 'payment') { fwrite(STDERR, "Getting payments, please wait \n\n"); //Get all the payments for this network. $paymentsList = $network->getPaymentHistory(); fwrite(STDERR, "Number of payments: " . count($paymentsList) . "\n\n"); fwrite(STDERR, "------------------------------------------------------------------------\n"); fwrite(STDERR, "ID\t\t\tDATE\t\t\t\t\tVALUE\n"); fwrite(STDERR, "------------------------------------------------------------------------\n"); foreach ($paymentsList as $payment) { $paymentDate = new Zend_Date($payment['date'], "yyyy-MM-dd HH:mm:ss"); if ($paymentDate->compare($startDate) >= 0 && $paymentDate->compare($endDate) <= 0) { fwrite(STDERR, $payment['pid'] . "\t\t\t" . $payment['date'] . "\t\t\t" . $payment['value'] . " \n"); } } if (isset($arguments['t']) && $arguments['t'] == 'payment') { return null; } } //Get all the Merhcants fwrite(STDERR, "\nGetting merchants, please wait \n\n"); $merchantList = $network->getMerchantList(array()); if (!isset($arguments['t']) || $arguments['t'] == 'merchant') { fwrite(STDERR, "Number of merchants: " . count($merchantList) . "\n\n"); fwrite(STDERR, "--------------------------------------------------\n"); fwrite(STDERR, "ID\t\t\tNAME\n"); fwrite(STDERR, "--------------------------------------------------\n"); foreach ($merchantList as $merchant) { fwrite(STDERR, $merchant['cid'] . "\t\t\t" . $merchant['name'] . " \n"); } if (isset($arguments['t']) && $arguments['t'] == 'merchant') { return null; } } // Building the array of merchant Id we want to retrieve data from. $merchantIdList = array(); foreach ($merchantList as $merchant) { $merchantIdList[] = $merchant['cid']; } //If we have joined any merchant if (!empty($merchantIdList)) { $merchantMap = array(); foreach ($merchantList as $merchant) { $merchantMap[$merchant['name']] = $merchant['cid']; } //Split the dates monthly, Most of the network don't allow us to retrieve more than a month data $dateArray = Oara_Utilities::monthsOfDifference($startDate, $endDate); for ($i = 0; $i < count($dateArray); $i++) { // Calculating the start and end date for the current month $monthStartDate = clone $dateArray[$i]; $monthEndDate = null; if ($i != count($dateArray) - 1) { $monthEndDate = clone $dateArray[$i]; $monthEndDate->setDay(1); $monthEndDate->addMonth(1); $monthEndDate->subDay(1); } else { $monthEndDate = $endDate; } $monthEndDate->setHour(23); $monthEndDate->setMinute(59); $monthEndDate->setSecond(59); fwrite(STDERR, "\n*Importing data from " . $monthStartDate->toString("dd-MM-yyyy HH:mm:ss") . " to " . $monthEndDate->toString("dd-MM-yyyy HH:mm:ss") . "\n\n"); fwrite(STDERR, "Getting transactions, please wait \n\n"); $transactionList = $network->getTransactionList($merchantIdList, $monthStartDate, $monthEndDate, $merchantMap); if (!isset($arguments['t']) || $arguments['t'] == 'transaction') { fwrite(STDERR, "Number of transactions: " . count($transactionList) . "\n\n"); $totalAmount = 0; $totalCommission = 0; foreach ($transactionList as $transaction) { $totalAmount += $transaction['amount']; $totalCommission += $transaction['commission']; } fwrite(STDERR, "--------------------------------------------------\n"); fwrite(STDERR, "TOTAL AMOUNT\t\t{$totalAmount}\n"); fwrite(STDERR, "TOTAL COMMISSION\t{$totalCommission}\n"); fwrite(STDERR, "--------------------------------------------------\n\n"); } } } fwrite(STDERR, "Import finished \n\n"); } else { fwrite(STDERR, "Error connecting to the network, check credentials \n\n"); } }
/** * It returns the transactions for a payment * @see Oara_Network::paymentTransactions() */ public function paymentTransactions($paymentId, $merchantList, $startDate) { $paymentTransactionList = array(); $paymentHistory = Oara_Utilities::registerBubbleSort($this->_paymentHistory); $paymentStartDate = new Zend_Date($startDate, "yyyy-MM-dd HH:mm:ss"); $paymentEndDate = null; $enc = false; $i = 0; $payment = null; while (!$enc && $i < count($paymentHistory)) { $payment = $paymentHistory[$i]; if ($payment['pid'] == $paymentId) { $enc = true; $paymentEndDate = new Zend_Date($payment['date'], "yyyy-MM-dd HH:mm:ss"); } $i++; } if ($enc && $paymentStartDate->compare($paymentEndDate) <= 0) { $totalTransactions = array(); $dateArray = Oara_Utilities::monthsOfDifference(new Zend_Date($startDate, "yyyy-MM-dd HH:mm:ss"), $paymentEndDate); for ($i = 0; $i < count($dateArray); $i++) { $monthStartDate = clone $dateArray[$i]; $monthEndDate = null; if ($i != count($dateArray) - 1) { $monthEndDate = clone $dateArray[$i]; $monthEndDate->setDay(1); $monthEndDate->addMonth(1); $monthEndDate->subDay(1); } else { $monthEndDate = $paymentEndDate; } $monthEndDate->setHour(23); $monthEndDate->setMinute(59); $monthEndDate->setSecond(59); echo "\n importing from " . $monthStartDate->toString("dd-MM-yyyy HH:mm:ss") . " to " . $monthEndDate->toString("dd-MM-yyyy HH:mm:ss") . "\n"; $urls = array(); $valuesFormExport = Oara_Utilities::cloneArray($this->_exportTransactionParameters); $valuesFormExport[] = new Oara_Curl_Parameter('DateFrom', $monthStartDate->toString("yyyy-MM-dd")); $valuesFormExport[] = new Oara_Curl_Parameter('DateTo', $monthEndDate->toString("yyyy-MM-dd")); $urls[] = new Oara_Curl_Request('http://affiliate.paidonresults.com/api/transactions?', $valuesFormExport); $exportReport = $this->_client->get($urls); $exportData = str_getcsv($exportReport[0], "\r\n"); $num = count($exportData); for ($i = 1; $i < $num; $i++) { $transactionExportArray = str_getcsv($exportData[$i], ","); $paid = $transactionExportArray[7] == "YES" ? true : false; if (in_array($transactionExportArray[0], $merchantList) && $paid) { $transactionDate = new Zend_Date($transactionExportArray[8], "dd/MM/yyyy HH:mm:ss"); echo $paymentEndDate->toString("yyyy-MM-dd") . " " . $transactionDate->toString("yyyy-MM-dd") . "\n\n"; if ($paymentEndDate->toString("yyyy-MM-dd") == $transactionDate->toString("yyyy-MM-dd")) { $paymentTransactionList[] = $transactionExportArray[2]; } } } } } return $paymentTransactionList; }