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();
}
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)); }