__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 10
rs 10
cc 1
nc 1
nop 4
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\Heidelpay\Business\Payment\Transaction\Handler;
9
10
use Generated\Shared\Transfer\HeidelpayExternalPaymentResponseTransfer;
11
use Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer;
12
use Generated\Shared\Transfer\HeidelpayResponseTransfer;
13
use SprykerEco\Zed\Heidelpay\Business\Payment\PaymentWriterInterface;
14
use SprykerEco\Zed\Heidelpay\Business\Payment\Request\ExternalEasyCreditPaymentResponseBuilderInterface;
15
use SprykerEco\Zed\Heidelpay\Business\Payment\Transaction\ExternalResponseTransactionInterface;
16
17
class ExternalEasyCreditResponseTransactionHandler implements ExternalEasyCreditResponseTransactionHandlerInterface
18
{
19
    protected const CRITERION_EASYCREDIT_AMORTISATIONTEXT = 'CRITERION_EASYCREDIT_AMORTISATIONTEXT';
20
    protected const CRITERION_EASYCREDIT_ACCRUINGINTEREST = 'CRITERION_EASYCREDIT_ACCRUINGINTEREST';
21
    protected const CRITERION_EASYCREDIT_TOTALAMOUNT = 'CRITERION_EASYCREDIT_TOTALAMOUNT';
22
    protected const HEIDELPAY_EASY_CREDIT_PAYMENT_METHOD = 'heidelpayEasyCredit';
23
24
    /**
25
     * @var \SprykerEco\Zed\Heidelpay\Business\Payment\Transaction\ExternalResponseTransactionInterface
26
     */
27
    protected $transaction;
28
29
    /**
30
     * @var \SprykerEco\Zed\Heidelpay\Business\Payment\Type\PaymentWithExternalResponseInterface[]
31
     */
32
    protected $paymentMethodAdapterCollection;
33
34
    /**
35
     * @var \SprykerEco\Zed\Heidelpay\Business\Payment\PaymentWriterInterface
36
     */
37
    protected $paymentWriter;
38
39
    /**
40
     * @var \SprykerEco\Zed\Heidelpay\Business\Payment\Request\ExternalEasyCreditPaymentResponseBuilderInterface
41
     */
42
    protected $externalEasyCreditPaymentResponseBuilder;
43
44
    /**
45
     * @param \SprykerEco\Zed\Heidelpay\Business\Payment\Transaction\ExternalResponseTransactionInterface $transaction
46
     * @param \SprykerEco\Zed\Heidelpay\Business\Payment\Type\PaymentWithExternalResponseInterface[] $paymentMethodAdapterCollection
47
     * @param \SprykerEco\Zed\Heidelpay\Business\Payment\Request\ExternalEasyCreditPaymentResponseBuilderInterface $externalEasyCreditPaymentResponseBuilder
48
     * @param \SprykerEco\Zed\Heidelpay\Business\Payment\PaymentWriterInterface $paymentWriter
49
     */
50
    public function __construct(
51
        ExternalResponseTransactionInterface $transaction,
52
        array $paymentMethodAdapterCollection,
53
        ExternalEasyCreditPaymentResponseBuilderInterface $externalEasyCreditPaymentResponseBuilder,
54
        PaymentWriterInterface $paymentWriter
55
    ) {
56
        $this->transaction = $transaction;
57
        $this->paymentMethodAdapterCollection = $paymentMethodAdapterCollection;
58
        $this->externalEasyCreditPaymentResponseBuilder = $externalEasyCreditPaymentResponseBuilder;
59
        $this->paymentWriter = $paymentWriter;
60
    }
61
62
    /**
63
     * @param array $externalResponseArray
64
     *
65
     * @return \Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer
66
     */
67
    public function processExternalEasyCreditPaymentResponse(array $externalResponseArray)
68
    {
69
        $externalResponseTransfer = $this->buildExternalResponseTransfer($externalResponseArray);
70
        $transactionResultTransfer = $this->executeTransaction($externalResponseTransfer);
71
72
        return $this->buildPaymentProcessingResponse($transactionResultTransfer, $externalResponseTransfer);
73
    }
74
75
    /**
76
     * @param array $externalResponseArray
77
     *
78
     * @return \Generated\Shared\Transfer\HeidelpayExternalPaymentResponseTransfer
79
     */
80
    protected function buildExternalResponseTransfer(array $externalResponseArray)
81
    {
82
        $externalResponseTransfer = $this->externalEasyCreditPaymentResponseBuilder
83
            ->buildExternalResponseTransfer($externalResponseArray);
84
85
        return $externalResponseTransfer;
86
    }
87
88
    /**
89
     * @param \Generated\Shared\Transfer\HeidelpayExternalPaymentResponseTransfer $externalResponseTransfer
90
     *
91
     * @return \Generated\Shared\Transfer\HeidelpayResponseTransfer
92
     */
93
    protected function executeTransaction(HeidelpayExternalPaymentResponseTransfer $externalResponseTransfer)
94
    {
95
        $responseTransfer = $this->transaction->executeTransaction(
96
            $externalResponseTransfer,
97
            $this->paymentMethodAdapterCollection[static::HEIDELPAY_EASY_CREDIT_PAYMENT_METHOD]
98
        );
99
100
        return $responseTransfer;
101
    }
102
103
    /**
104
     * @param \Generated\Shared\Transfer\HeidelpayResponseTransfer $transactionResultTransfer
105
     * @param \Generated\Shared\Transfer\HeidelpayExternalPaymentResponseTransfer $externalResponseTransfer
106
     *
107
     * @return \Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer
108
     */
109
    protected function buildPaymentProcessingResponse(
110
        HeidelpayResponseTransfer $transactionResultTransfer,
111
        HeidelpayExternalPaymentResponseTransfer $externalResponseTransfer
112
    ) {
113
        $paymentProcessingResponseTransfer = (new HeidelpayPaymentProcessingResponseTransfer())
114
            ->setIsError(false);
115
116
        if ($transactionResultTransfer->getIsError()) {
117
            $paymentProcessingResponseTransfer
118
                ->setIsError(true)
119
                ->setError($transactionResultTransfer->getError());
120
        }
121
122
        return $paymentProcessingResponseTransfer;
123
    }
124
}
125