Completed
Pull Request — master (#7)
by Cesar
01:33
created

PaymentsController::paymentsPayload()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace App\Controller\Braintree;
4
5
use Braintree\Exception\NotFound;
6
use Braintree\Transaction;
7
use Symfony\Component\HttpFoundation\Request;
8
use Symfony\Component\Routing\Annotation\Route;
9
use Symfony\Component\HttpFoundation\Response;
10
11
/**
12
 * Class PaymentsController
13
 *
14
 * @package App\Controller\Braintree
15
 *
16
 * @Route("/braintree/payments", name="braintree-payments-")
17
 */
18
class PaymentsController extends AbstractController
19
{
20
    /**
21
     * @Route("/dropui", name="dropui", methods={"GET"})
22
     *
23
     * @return Response
24
     */
25
    public function dropUI()
26
    {
27
        $clientToken = $this->braintreeService->getPaymentService()->getClientToken();
28
        return $this->render('braintree/payments/dropui.html.twig', [
29
            'clientToken' => $clientToken,
30
        ]);
31
    }
32
33
    /**
34
     * @Route("/hosted-fields", name="hosted-fields", methods={"GET"})
35
     *
36
     * @return Response
37
     */
38
    public function hostedFields()
39
    {
40
        $clientToken = $this->braintreeService->getPaymentService()->getClientToken();
41
        return $this->render('braintree/payments/hosted-fields.html.twig', [
42
            'clientToken' => $clientToken,
43
        ]);
44
    }
45
46
    /**
47
     * @Route("/payload", name="payload", methods={"POST"})
48
     *
49
     * @return Response
50
     */
51
    public function paymentsPayload()
52
    {
53
        $request = Request::createFromGlobals();
54
        $payload = $request->request->all();
55
        return $this->render('default/dump.html.twig', [
56
            'result' => (object) $payload,
57
            'raw_result' => false,
58
        ]);
59
    }
60
61
    /**
62
     * @Route("/transaction", name="create", methods={"POST"})
63
     *
64
     * @return Response
65
     */
66
    public function createTransaction()
67
    {
68
        $request = Request::createFromGlobals();
69
        $paymentNonce = $request->request->get('payment_nonce');
70
        $amount = $request->request->get('amount');
71
        $deviceData = $request->request->get('device_data');
72
        $sale = $this->braintreeService->getPaymentService()->createSale($amount, $paymentNonce, $deviceData);
73
        /** @var Transaction $transaction */
74
        $transaction = $sale->transaction;
75
        return $this->render('default/dump-input-id.html.twig', [
76
            'result' => $sale,
77
            'raw_result' => false,
78
            'result_id' => $transaction->id
79
        ]);
80
    }
81
82
    /**
83
     * @Route("/transaction/{transactionId}/capture", name="capture", methods={"POST"})
84
     *
85
     * @param string $transactionId
86
     *
87
     * @return Response
88
     */
89
    public function captureTransaction(string $transactionId)
90
    {
91
        $request = Request::createFromGlobals();
92
        $amount = $request->request->get('amount');
93
        $capture = $this->braintreeService->getPaymentService()->captureSale($transactionId, $amount);
94
        return $this->render('default/dump.html.twig', [
95
            'result' => (object) $capture,
96
            'raw_result' => false,
97
        ]);
98
    }
99
100
    /**
101
     * @Route("/{transactionId}", name="get", methods={"GET"})
102
     *
103
     * @param string $transactionId
104
     * @return Response
105
     * @throws NotFound
106
     */
107
    public function getTransaction(string $transactionId)
108
    {
109
        $transaction = $this->braintreeService->getPaymentService()->getTransaction($transactionId);
110
        return $this->render('default/dump.html.twig', [
111
            'result' => (object) $transaction,
112
            'raw_result' => false,
113
        ]);
114
    }
115
}
116