public function testEditingRecordIsLogged() { $this->_login(); $this->request->setMethod('POST')->setPost(array('firstName' => 'Bryan', 'lastName' => 'Zarzuela', 'phoneNumber' => '7371131', 'mobileNumber' => '09178604736', 'deliveryAddress' => '462 C. Palanca St. Quiapo Manila', 'courier' => '2GO', 'releaseDate' => date('Y-m-d', strtotime('today +7 day')), 'officialReceiptNumber' => 123)); $this->dispatch('/transactions/new'); $this->assertController('transactions'); $this->assertAction('new'); $res = json_decode($this->getResponse()->getBody(), true); $this->assertTrue($res['success']); $this->assertEquals(1, $res['id']); $this->resetRequest()->resetResponse(); $t = Model_Transaction::find(1); $this->request->setMethod('POST')->setPost(array('referenceNumber' => $t->referenceNumber, 'firstName' => 'Dyan', 'lastName' => 'Zarzuela', 'phoneNumber' => '7371131', 'mobileNumber' => '09178604736', 'deliveryAddress' => '462 C. Palanca St. Quiapo Manila', 'courier' => '2GO', 'releaseDate' => date('Y-m-d', strtotime('today +7 day')), 'officialReceiptNumber' => 123)); $this->dispatch('/transactions/edit'); $this->assertController('transactions'); $this->assertAction('edit'); $res = json_decode($this->getResponse()->getBody(), true); $this->assertTrue($res['success']); $t = Model_Transaction::find(1); $this->assertEquals('DYAN', $t->firstName); $this->assertEquals('ZARZUELA', $t->lastName); $this->assertEquals('7371131', $t->phoneNumber); $this->assertEquals('09178604736', $t->mobileNumber); $this->assertEquals('462 C. PALANCA ST. QUIAPO MANILA', $t->deliveryAddress); $this->assertEquals('2GO', $t->courier); $this->assertEquals(date('Y-m-d', strtotime('today +7 day')), $t->releaseDate); $this->assertEquals('foo', $t->acceptingUser); $this->assertEquals('123', $t->officialReceiptNumber); $this->assertEquals('foo', $t->logs[0]->username); $this->assertEquals('Created Transaction', $t->logs[0]->message); $this->assertEquals('foo', $t->logs[1]->username); $this->assertEquals('Edited:', substr($t->logs[1]->message, 0, 7)); }
public function post_process() { list($params, $shipping) = $this->load_params(); $PARAM_DEFAULTS = array('USER' => Config::get('paypal_user'), 'PWD' => Config::get('paypal_pass'), 'SIGNATURE' => Config::get('paypal_sig'), 'METHOD' => 'DoDirectPayment', 'VERSION' => '2.3', 'IPADDRESS' => $_SERVER['REMOTE_ADDR']); $params = array_merge($PARAM_DEFAULTS, $params); $query = array(); foreach ($params as $key => $value) { $query[] = strtoupper($key) . '=' . urlencode($value); } $nvpstr = implode('&', $query); //setting the curl parameters. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, Config::get('paypal_url')); curl_setopt($ch, CURLOPT_VERBOSE, true); // put this on for testing curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_CAINFO, APPPATH . 'cacert.pem'); //TODO: not sure if i need this... curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); //setting nvpstr as POST var curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpstr); //getting response from server $response = curl_exec($ch); curl_close($ch); //convert NVP response to an associative array $response = $this->deformat_nvp($response); //TODO: Check to see if the payment was successful, and create a Model_Transaction if ($response && ($response['ACK'] == 'SuccessWithWarning' || $response['ACK'] == 'Success')) { $response['success'] = '1'; //transaction success $trans = Model_Transaction::factory(); $trans->first = $params['FIRSTNAME']; $trans->last = $params['LASTNAME']; $trans->street = $shipping['ship_street']; $trans->city = $shipping['ship_city']; $trans->zip = $shipping['ship_zip']; $trans->state = $shipping['ship_state']; $trans->amount = $params['AMT']; $trans->order_sent = 0; $trans->save(); if ($trans->id) { foreach ($this->releases as $rel_id => $quantity) { DB::insert('releases_transactions', array('release_id', 'transaction_id', 'quantity'))->values(array($rel_id, $trans->id, $quantity))->execute(); } } } else { if (isset($response['ACK']) && isset($response['L_ERRORCODE0'])) { return array('success' => '0', 'message' => $response['L_LONGMESSAGE0']); } else { return array('success' => '0', 'message' => 'Transaction failed.<br />Try again later.'); } } return $response; }
public function testTeleservImport() { $import = file_get_contents(dirname(__FILE__) . '/deliveryExport - 2010-03-16.dat'); $output = Model_Transaction::teleservImport($import); $q = Doctrine_Query::create()->from('Model_Transaction t'); $data = json_decode($import, true); $this->assertEquals(count($data), $q->count()); $this->assertEquals(count($data), $output['total']); $this->assertEquals(count($data), $output['created']); $this->assertEquals(0, $output['updated']); $t = Model_Transaction::findByRef($data[0]['referenceNumber']); $this->assertEquals(strtoupper($data[0]['firstName']), $t->firstName); }
/** * Add transaction and return the new transaction id * * @param arr $data - array( * 'accounting_date' => 'YYYY-MM-DD', OPTIONAL * 'transfer_date' => 'YYYY-MM-DD', * 'description' => 'text', OPTIONAL * 'journal_id' => int or NULL OPTIONAL * 'vat' => amount of money, 0 or above OPTIONAL * 'sum' => amount of money, above 0 * 'employee_id' => int or NULL OPTIONAL * ) * @return int **/ private function add($data) { if (!isset($data['accounting_date'])) { $data['accounting_date'] = $data['transfer_date']; } if (!isset($data['description'])) { $data['description'] = ''; } if (!isset($data['journal_id'])) { $data['journal_id'] = NULL; } if (!isset($data['vat'])) { $data['vat'] = 0; } if (!isset($data['employee_id'])) { $data['employee_id'] = NULL; } if (self::$prepared_insert == NULL) { self::$prepared_insert = $this->pdo->prepare('INSERT INTO transactions (accounting_date, transfer_date, description, journal_id, vat, sum, employee_id) VALUES(?,?,?,?,?,?,?)'); } self::$prepared_insert->execute(array($data['accounting_date'], $data['transfer_date'], $data['description'], $data['journal_id'], $data['vat'], $data['sum'], $data['employee_id'])); return $this->pdo->lastInsertId(); }
public function testdebitTransaction() { $currency = 'EUR'; $invoiceModel = new \Model_Invoice(); $invoiceModel->loadBean(new \RedBeanPHP\OODBBean()); $invoiceModel->currency = $currency; $clientModdel = new \Model_Client(); $clientModdel->loadBean(new \RedBeanPHP\OODBBean()); $clientModdel->currency = $currency; $transactionModel = new \Model_Transaction(); $transactionModel->loadBean(new \RedBeanPHP\OODBBean()); $transactionModel->amount = 11; $clientBalanceModel = new \Model_ClientBalance(); $clientBalanceModel->loadBean(new \RedBeanPHP\OODBBean()); $dbMock = $this->getMockBuilder('\\Box_Database')->getMock(); $dbMock->expects($this->atLeastOnce())->method('load')->will($this->onConsecutiveCalls($invoiceModel, $clientModdel)); $dbMock->expects($this->atLeastOnce())->method('dispense')->will($this->returnValue($clientBalanceModel)); $dbMock->expects($this->atLeastOnce())->method('store'); $di = new \Box_Di(); $di['db'] = $dbMock; $this->service->setDi($di); $this->service->debitTransaction($transactionModel); }
public function action_account() { $this->template->title = 'RN | Account'; $data['transactions'] = Model_Transaction::find('all'); $this->template->content = View::forge('user/changepassword', $data); }
public function testprocessTransaction_IpnDuplicate() { $adapterMock = $this->getMockBuilder('\\Payment_Adapter_Interkassa')->disableOriginalConstructor()->setMethods(array('isIpnValid', 'isIpnDuplicate'))->getMock(); $adapterMock->expects($this->atLeastOnce())->method('isIpnValid')->willReturn(true); $adapterMock->expects($this->atLeastOnce())->method('isIpnDuplicate')->willReturn(true); $dbMock = $this->getMockBuilder('\\Box_Database')->getMock(); $transactionModel = new \Model_Transaction(); $transactionModel->loadBean(new \RedBeanPHP\OODBBean()); $invoiceModel = new \Model_Invoice(); $invoiceModel->loadBean(new \RedBeanPHP\OODBBean()); $clientModel = new \Model_Client(); $clientModel->loadBean(new \RedBeanPHP\OODBBean()); $dbMock->expects($this->atLeastOnce())->method('load')->withConsecutive(array('Transaction'), array('Invoice'), array('Client'))->willReturnOnConsecutiveCalls($transactionModel, $invoiceModel, $clientModel); $dbMock->expects($this->atLeastOnce())->method('store')->with($transactionModel); $clientServiceMock = $this->getMockBuilder('\\Box\\Mod\\Client\\Service')->getMock(); $clientServiceMock->expects($this->never())->method('addFunds'); $invoiceServiceMock = $this->getMockBuilder('\\Box\\Mod\\Invoice\\Service')->getMock(); $invoiceServiceMock->expects($this->never())->method('payInvoiceWithCredits')->with($invoiceModel); $invoiceServiceMock->expects($this->never())->method('doBatchPayWithCredits'); $di = new \Box_Di(); $di['mod_service'] = $di->protect(function ($serviceName) use($clientServiceMock, $invoiceServiceMock) { if ($serviceName == 'Client') { return $clientServiceMock; } if ($serviceName == 'Invoice') { return $invoiceServiceMock; } }); $di['db'] = $dbMock; $adapterMock->setDi($di); $adminModel = new \Model_Admin(); $api_admin = new \Api_Handler($adminModel); $transaction_id = 1; $invoice_id = 22; $data = array('post' => array('ik_x_iid' => $invoice_id, 'ik_trn_id' => 2, 'ik_inv_st' => 'success', 'ik_am' => 1.0, 'ik_cur' => 'USD'), 'get' => array('bb_invoice_id' => $invoice_id)); $gateway_id = 1; $this->setExpectedException('Payment_Exception', 'IPN is duplicate'); $adapterMock->processTransaction($api_admin, $transaction_id, $data, $gateway_id); }
public function testprocessTransaction_invoiceIdIsNotSet() { $adapterMock = $this->getMockBuilder('Payment_Adapter_ClientBalance')->disableOriginalConstructor()->setMethods(array('isIpnValid'))->getMock(); $adapterMock->expects($this->atLeastOnce())->method('isIpnValid')->willReturn(true); $di = new \Box_Di(); $transactionModel = new \Model_Transaction(); $transactionModel->loadBean(new \RedBeanPHP\OODBBean()); $invoiceModel = new \Model_Invoice(); $invoiceModel->loadBean(new \RedBeanPHP\OODBBean()); $dbMock = $this->getMockBuilder('\\Box_Database')->getMock(); $dbMock->expects($this->atLeastOnce())->method('load')->withConsecutive(array('Transaction'), array('Invoice'))->willReturnOnConsecutiveCalls($transactionModel, $invoiceModel); $dbMock->expects($this->atLeastOnce())->method('store')->with($transactionModel); $di['db'] = $dbMock; $invoiceServiceMock = $this->getMockBuilder('\\Box\\Mod\\Invoice\\Service')->getMock(); $invoiceServiceMock->expects($this->atLeastOnce())->method('isInvoiceTypeDeposit')->with($invoiceModel)->willReturn(false); $invoiceServiceMock->expects($this->never())->method('payInvoiceWithCredits')->with($invoiceModel); $invoiceServiceMock->expects($this->once())->method('doBatchPayWithCredits'); $di['mod_service'] = $di->protect(function ($serviceName) use($invoiceServiceMock) { if ('Invoice' == $serviceName) { return $invoiceServiceMock; } }); $transactionId = 1; $data = array('get' => array()); $gatewayId = 1; $adapterMock->setDi($di); $result = $adapterMock->processTransaction(null, $transactionId, $data, $gatewayId); $this->assertTrue($result); }
public function testtransaction_get() { $data = array('id' => 1); $transactionService = $this->getMockBuilder('\\Box\\Mod\\Invoice\\ServiceTransaction')->getMock(); $transactionService->expects($this->atLeastOnce())->method('toApiArray')->will($this->returnValue(array())); $validatorMock = $this->getMockBuilder('\\Box_Validate')->getMock(); $validatorMock->expects($this->atLeastOnce())->method('checkRequiredParamsForArray'); $dbMock = $this->getMockBuilder('\\Box_Database')->getMock(); $model = new \Model_Transaction(); $model->loadBean(new \RedBeanPHP\OODBBean()); $dbMock->expects($this->atLeastOnce())->method('getExistingModelById')->will($this->returnValue($model)); $di = new \Box_Di(); $di['validator'] = $validatorMock; $di['db'] = $dbMock; $di['mod_service'] = $di->protect(function () use($transactionService) { return $transactionService; }); $this->api->setDi($di); $result = $this->api->transaction_get($data); $this->assertInternalType('array', $result); }
public function transactiondisplayAction() { $Transaction = new Model_Transaction(); $TransID = $this->_getParam('ID'); $this->view->status_list = $Transaction->transactionStatus(); if ($_POST) { $Transaction->updateStatus($_POST); $this->_redirect('/admin/transactiondisplay/ID/' . $_POST['TransactionID']); } $data = $Transaction->getTransaction($TransID); if (!$data) { $this->_redirect('/admin/transactionlist/'); } $rawStates = $Transaction->getData("Shipping", "", "State asc"); foreach ($rawStates as $row) { $states[$row['ID']] = $row['State']; } $this->view->states = $states; $this->view->payment_methods = $this->paymentMethods(); $this->view->data = $data; $this->render('transactiondisplay'); }
public function trackingAction() { $this->_helper->layout()->setLayout('page'); $Transaction = new Model_Transaction(); $TransID = $this->_getParam('trackingID'); $Email = $this->_getParam('esig1234'); //honeypot $data = array(); if ($TransID && $Email) { $data = $Transaction->getTransaction($TransID, $Email); $this->view->status_list = $Transaction->transactionStatus(); $this->view->msg = ''; if (empty($data)) { $this->view->msg = "Nothing found enter a valid email address and tracking id."; } } $this->view->data = $data; }