AuthorizeTransactionHandler   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 137
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 33
dl 0
loc 137
rs 10
c 2
b 0
f 0
wmc 9

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 1
A buildAuthorizeRequest() 0 5 1
A setPaymentReservationId() 0 7 1
A authorize() 0 13 2
A setPaymentTotalAuthorizedAmount() 0 5 1
A setInfoscoreCustomerNumber() 0 7 1
A authorizePaymentForQuote() 0 8 2
1
<?php
2
3
/**
4
 * MIT License
5
 * For full license information, please view the LICENSE file that was distributed with this source code.
6
 */
7
8
namespace SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler;
9
10
use Generated\Shared\Transfer\AfterPayApiResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...rPayApiResponseTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Generated\Shared\Transfer\AfterPayAuthorizeRequestTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...uthorizeRequestTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Generated\Shared\Transfer\AfterPayCallTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\AfterPayCallTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use Generated\Shared\Transfer\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
14
use SprykerEco\Shared\AfterPay\AfterPayConfig as SharedAfterPayConfig;
15
use SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface;
16
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface;
17
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface;
18
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface;
19
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface;
20
21
class AuthorizeTransactionHandler implements AuthorizeTransactionHandlerInterface
22
{
23
    /**
24
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface
25
     */
26
    protected $transaction;
27
28
    /**
29
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
30
     */
31
    protected $requestBuilder;
32
33
    /**
34
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface
35
     */
36
    protected $paymentWriter;
37
38
    /**
39
     * @var \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface
40
     */
41
    protected $priceToPayProvider;
42
43
    /**
44
     * @var \SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface
45
     */
46
    protected $afterPayMapper;
47
48
    /**
49
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface $transaction
50
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface $requestBuilder
51
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface $paymentWriter
52
     * @param \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface $priceToPayProvider
53
     * @param \SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface $afterPayMapper
54
     */
55
    public function __construct(
56
        AuthorizeTransactionInterface $transaction,
57
        AuthorizeRequestBuilderInterface $requestBuilder,
58
        PaymentWriterInterface $paymentWriter,
59
        PriceToPayProviderInterface $priceToPayProvider,
60
        AfterPayMapperInterface $afterPayMapper
61
    ) {
62
        $this->transaction = $transaction;
63
        $this->requestBuilder = $requestBuilder;
64
        $this->paymentWriter = $paymentWriter;
65
        $this->priceToPayProvider = $priceToPayProvider;
66
        $this->afterPayMapper = $afterPayMapper;
67
    }
68
69
    /**
70
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
71
     *
72
     * @return \Generated\Shared\Transfer\AfterPayApiResponseTransfer
73
     */
74
    public function authorize(AfterPayCallTransfer $afterPayCallTransfer): AfterPayApiResponseTransfer
75
    {
76
        $authorizeRequestTransfer = $this->buildAuthorizeRequest($afterPayCallTransfer);
77
        $authorizeResponseTransfer = $this->transaction->executeTransaction($authorizeRequestTransfer);
78
79
        $this->setPaymentReservationId($afterPayCallTransfer, $authorizeResponseTransfer);
80
        $this->setPaymentTotalAuthorizedAmount($afterPayCallTransfer);
81
82
        if ($authorizeResponseTransfer->getCustomerNumber()) {
83
            $this->setInfoscoreCustomerNumber($afterPayCallTransfer, $authorizeResponseTransfer);
84
        }
85
86
        return $authorizeResponseTransfer;
87
    }
88
89
    /**
90
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
91
     *
92
     * @return void
93
     */
94
    public function authorizePaymentForQuote(QuoteTransfer $quoteTransfer): void
95
    {
96
        if ($quoteTransfer->getPayment()->getPaymentProvider() !== SharedAfterPayConfig::PROVIDER_NAME) {
97
            return;
98
        }
99
100
        $afterPayCallTransfer = $this->afterPayMapper->mapQuoteTransferToAfterPayCallTransfer($quoteTransfer);
101
        $this->authorize($afterPayCallTransfer);
102
    }
103
104
    /**
105
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
106
     *
107
     * @return \Generated\Shared\Transfer\AfterPayAuthorizeRequestTransfer
108
     */
109
    protected function buildAuthorizeRequest(AfterPayCallTransfer $afterPayCallTransfer): AfterPayAuthorizeRequestTransfer
110
    {
111
        $authorizeRequestTransfer = $this->requestBuilder->buildAuthorizeRequest($afterPayCallTransfer);
112
113
        return $authorizeRequestTransfer;
114
    }
115
116
    /**
117
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
118
     * @param \Generated\Shared\Transfer\AfterPayApiResponseTransfer $authorizeResponseTransfer
119
     *
120
     * @return void
121
     */
122
    protected function setPaymentReservationId(
123
        AfterPayCallTransfer $afterPayCallTransfer,
124
        AfterPayApiResponseTransfer $authorizeResponseTransfer
125
    ): void {
126
        $this->paymentWriter->setIdReservationByIdSalesOrder(
127
            $afterPayCallTransfer->getIdSalesOrder(),
128
            $authorizeResponseTransfer->getReservationId(),
129
        );
130
    }
131
132
    /**
133
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
134
     * @param \Generated\Shared\Transfer\AfterPayApiResponseTransfer $authorizeResponseTransfer
135
     *
136
     * @return void
137
     */
138
    protected function setInfoscoreCustomerNumber(
139
        AfterPayCallTransfer $afterPayCallTransfer,
140
        AfterPayApiResponseTransfer $authorizeResponseTransfer
141
    ): void {
142
        $this->paymentWriter->setCustomerNumberByIdSalesOrder(
143
            $authorizeResponseTransfer->getCustomerNumber(),
144
            $afterPayCallTransfer->getIdSalesOrder(),
145
        );
146
    }
147
148
    /**
149
     * @param \Generated\Shared\Transfer\AfterPayCallTransfer $afterPayCallTransfer
150
     *
151
     * @return void
152
     */
153
    protected function setPaymentTotalAuthorizedAmount(AfterPayCallTransfer $afterPayCallTransfer): void
154
    {
155
        $this->paymentWriter->setAuthorizedTotalByIdSalesOrder(
156
            $this->priceToPayProvider->getPriceToPayForOrder($afterPayCallTransfer),
157
            $afterPayCallTransfer->getIdSalesOrder(),
158
        );
159
    }
160
}
161