Completed
Pull Request — master (#6)
by Cesar
01:39
created

PaymentService::captureSale()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
namespace App\Service\Braintree;
4
5
use Braintree\Result\Error;
6
use Braintree\Result\Successful;
7
use Exception;
8
9
/**
10
 * Class PaymentService
11
 * @package App\Service\Braintree
12
 */
13
class PaymentService extends AbstractBraintreeService
14
{
15
    /**
16
     * @return string
17
     */
18
    public function getClientToken(): ?string
19
    {
20
        try {
21
            return $this->gateway->clientToken()->generate();
22
        } catch (Exception $exception) {
23
            $this->logger->error(
24
                'Error on ' . __CLASS__ . '->' . __FUNCTION__ . ': ' . $exception->getMessage()
25
            );
26
        }
27
        return null;
28
    }
29
30
    /**
31
     * @param $amount
32
     * @param $paymentNonce
33
     * @param $deviceDataFromTheClient
34
     * @return Error|Successful
35
     */
36
    public function createSale($amount, $paymentNonce, $deviceDataFromTheClient)
37
    {
38
        return $this->gateway->transaction()->sale([
39
            'amount' => $amount,
40
            'paymentMethodNonce' => $paymentNonce,
41
            'deviceData' => $deviceDataFromTheClient,
42
            'options' => [
43
                'submitForSettlement' => false
44
            ]
45
        ]);
46
    }
47
48
    /**
49
     * @param $transactionId
50
     * @param $amount
51
     * @return Error|Successful
52
     */
53
    public function captureSale($transactionId, $amount)
54
    {
55
        return $this->gateway->transaction()->submitForSettlement($transactionId, $amount);
56
    }
57
58
    /**
59
     * @param $transactionId
60
     * @return \Braintree\Transaction
61
     * @throws \Braintree\Exception\NotFound
62
     */
63
    public function getTransaction($transactionId)
64
    {
65
        return $this->gateway->transaction()->find($transactionId);
66
    }
67
}
68