Sonata\Component\Payment\Scellius\ScelliusPayment::sendConfirmationReceipt PHP Method

sendConfirmationReceipt() public method

public sendConfirmationReceipt ( Sonata\Component\Payment\TransactionInterface $transaction )
$transaction Sonata\Component\Payment\TransactionInterface
    public function sendConfirmationReceipt(TransactionInterface $transaction)
    {
        $data = $this->getResponseData($transaction);
        $parameters = $transaction->getParameters();
        $parameters['DECODED_DATA'] = $data;
        $transaction->setParameters($parameters);
        if ($data['code'] == -1) {
            $transaction->setState(TransactionInterface::STATE_KO);
            $transaction->setStatusCode(TransactionInterface::STATUS_ERROR_VALIDATION);
            $transaction->getOrder()->setStatus(OrderInterface::STATUS_ERROR);
            $transaction->getOrder()->setPaymentStatus(TransactionInterface::STATUS_ERROR_VALIDATION);
            return false;
        } elseif ($data['code'] != 0) {
            $transaction->setState(TransactionInterface::STATE_KO);
            $transaction->setStatusCode(TransactionInterface::STATUS_UNKNOWN);
            return false;
        }
        // error
        if ($data['response_code'] != '00') {
            $transaction->setState(TransactionInterface::STATE_OK);
            $transaction->setStatusCode(TransactionInterface::STATUS_ERROR_VALIDATION);
            $transaction->getOrder()->setValidatedAt(new \DateTime());
            $transaction->getOrder()->setStatus(OrderInterface::STATUS_VALIDATED);
            $transaction->getOrder()->setPaymentStatus(TransactionInterface::STATUS_ERROR_VALIDATION);
            return false;
        }
        $transaction->setState(TransactionInterface::STATE_OK);
        $transaction->setStatusCode(TransactionInterface::STATUS_VALIDATED);
        $transaction->getOrder()->setValidatedAt(new \DateTime());
        $transaction->getOrder()->setStatus(OrderInterface::STATUS_VALIDATED);
        $transaction->getOrder()->setPaymentStatus(TransactionInterface::STATUS_VALIDATED);
        return new Response();
    }

Usage Example

 public function testSendConfirmationReceipt()
 {
     $logger = $this->getMock('Symfony\\Component\\HttpKernel\\Log\\LoggerInterface');
     $templating = $this->getMock('Symfony\\Bundle\\FrameworkBundle\\Templating\\EngineInterface');
     $router = $this->getMock('Symfony\\Component\\Routing\\RouterInterface');
     $generator = $this->getMock('Sonata\\Component\\Payment\\Scellius\\ScelliusTransactionGeneratorInterface');
     $payment = new ScelliusPayment($router, $logger, $templating, $generator, true);
     $payment->setOptions(array('base_folder' => __DIR__, 'response_command' => 'cat response_ko.txt && echo '));
     $transaction = $this->getMock('Sonata\\Component\\Payment\\TransactionInterface');
     $transaction->expects($this->any())->method('get')->will($this->returnValue('" >> /dev/null'));
     $transaction->expects($this->any())->method('getParameters')->will($this->returnValue(array()));
     $transaction->expects($this->any())->method('getOrder')->will($this->returnValue($this->getMock('Sonata\\Component\\Order\\OrderInterface')));
     $this->assertFalse($payment->sendConfirmationReceipt($transaction));
     $payment->setOptions(array('base_folder' => __DIR__, 'response_command' => 'cat response_nok.txt && echo '));
     $this->assertFalse($payment->sendConfirmationReceipt($transaction));
     $payment->setOptions(array('base_folder' => __DIR__, 'response_command' => 'cat response_code_nok.txt && echo '));
     $this->assertFalse($payment->sendConfirmationReceipt($transaction));
     $payment->setOptions(array('base_folder' => __DIR__, 'response_command' => 'cat response_ok.txt && echo '));
     $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\Response', $payment->sendConfirmationReceipt($transaction));
 }