Completed
Push — master ( 0eb878...91fabd )
by Joachim
12:49
created

PaymentController   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 8

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 8
dl 0
loc 46
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B newAction() 0 37 3
1
<?php
2
namespace Loevgaard\DandomainAltapayBundle\Controller;
3
4
use Loevgaard\AltaPay\Payload\OrderLine as OrderLinePayload;
5
use Loevgaard\AltaPay\Payload\PaymentRequest as PaymentRequestPayload;
6
use Loevgaard\Dandomain\Pay\Handler;
7
use Loevgaard\DandomainAltapayBundle\Entity\TerminalInterface;
8
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
9
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
10
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
11
use Symfony\Component\HttpFoundation\Request;
12
13
class PaymentController extends Controller {
14
    /**
15
     * @Route("/{terminal}")
16
     * @ParamConverter("terminal", options={"mapping": {"terminal": "canonicalTitle"}})
17
     *
18
     * @param TerminalInterface $terminal
19
     * @param Request $request
20
     */
21
    public function newAction(TerminalInterface $terminal, Request $request) {
22
        $handler = new Handler(
23
            $request,
24
            $this->container->getParameter('loevgaard_dandomain_altapay.shared_key_1'),
25
            $this->container->getParameter('loevgaard_dandomain_altapay.shared_key_2')
26
        );
27
28
        if(!$handler->checksumMatches()) {
29
            // @todo what should happen here?
30
            throw new \RuntimeException('Checksum mismatch. Try again');
31
        }
32
33
        $paymentRequest = $handler->getPaymentRequest();
34
35
        $paymentRequestPayload = new PaymentRequestPayload(
36
            $terminal->getTitle(),
37
            $paymentRequest->getOrderId(),
38
            $paymentRequest->getTotalAmount(),
39
            $paymentRequest->getCurrencySymbol()
40
        );
41
42
        foreach ($paymentRequest->getOrderLines() as $orderLine) {
43
            $orderLinePayload = new OrderLinePayload(
44
                $orderLine->getName(),
45
                $orderLine->getProductNumber(),
46
                $orderLine->getQuantity(),
47
                $orderLine->getPrice(),
48
                $orderLine->getVat()
49
            );
50
51
            $paymentRequestPayload->addOrderLine($orderLinePayload);
52
        }
53
54
55
        $altapay = $this->container->get('loevgaard_dandomain_altapay.altapay_client');
56
        $altapay->createPaymentRequest($paymentRequestPayload);
57
    }
58
}