Esempio n. 1
0
 /**
  * @param CreditCardTransaction $transaction
  */
 protected function processCreditCardTransaction(CreditCardTransaction $transaction)
 {
     $type = $transaction->getType();
     $method = $transaction->getMethod();
     switch ($type) {
         case CreditCardTransaction::TYPE_AUTH:
             if (null !== $transaction->getId()) {
                 throw new Exception('Invalid transaction');
             }
             // Persist pending transaction
             $this->em->persist($transaction);
             $this->em->flush();
             // Transaction processing
             $processor = $this->getProcessor($method);
             $processor->capture($transaction);
             break;
         case CreditCardTransaction::TYPE_PREAUTH:
         case CreditCardTransaction::TYPE_FULFILL:
         case CreditCardTransaction::TYPE_VOID:
         case CreditCardTransaction::TYPE_CANCEL:
         default:
             throw new Exception(sprintf('Unhandled transaction type "%s"', $type));
     }
 }