Exemple #1
0
 /**
  * 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;
     }
 }