/** * Processes an order * * @param object $order The Model_Order object to process * @param string $transaction_type The transaction type to process * @param bool $test_mode set to true to force test mode. false * will use config value. Determines which * gateway to use. * @param bool $test_flag set to true to set test request flag * * @return object Payment_Transaction */ public static function process(Model_Order $order, $transaction_type = Payment::TYPE_CARD_SALE_REQUEST, $test_mode = FALSE, $test_flag = FALSE) { $driver = Kohana::config('payment')->default['driver']; $class = 'Payment_' . $driver; $user = $order->user; $driver = new $class($test_mode); // Make sure this driver is valid if (!$driver instanceof Payment_Driver) { throw new Payment_Exception($driver . ' is not a valid payment driver!'); } $driver->type = $transaction_type; if ($test_flag) { $authorize->test_request = 'TRUE'; } $driver->set_credit_card($order->credit_card); $driver->set_amount($order->amount()); $driver->set_name($user->first_name, $user->last_name); $driver->set_address($credit_card->address); try { return $driver->process(); } catch (Payment_Exception $e) { throw $e; } }