private function newTransaction(PaymentSources &$paymentSource, $params = array()) { if ($paymentSource->hasPaymentProcessor()) { $processor = PaymentProcessors::findFirstById($paymentSource->payment_processor_id); } else { $processor = PaymentProcessors::findFirst(); } if (!$processor) { throw new \Phalcon\Exception('You do not have any payment processors.'); } $transaction = $processor->createTransaction($params); $transaction->payment_source_id = $paymentSource->id; return $transaction; }
/** * Loads the processor instance, handles errors and redirects in the case of an error * * @param string $processor * @return PaymentProcessor */ protected function _loadPaymentProcessor($processor) { try { list($plugin, $class) = pluginSplit($processor, true); if (substr($class, -9) != 'Processor') { $class = $class . 'Processor'; } $sandboxMode = false; $config = Configure::read($class); if (isset($config['sandboxMode']) && isset($config['sandbox'])) { $config = $config['sandbox']; $sandboxMode = true; } elseif (isset($config['live'])) { $config = $config['live']; } $Processor = PaymentProcessors::load($processor, $config, array('CakeRequest' => $this->request, 'CakeResponse' => $this->response)); $Processor->sandboxMode($sandboxMode); return $Processor; } catch (MissingPaymentProcessorException $e) { $this->Session->setFlash(__d('cart', 'The payment method does not exist!')); $this->redirect(array('action' => 'view')); } catch (Exception $e) { $this->Session->setFlash($e->getMessage()); $this->redirect(array('action' => 'view')); } }