hydrateAsyncParameters()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 1
dl 0
loc 9
rs 10
c 0
b 0
f 0
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\Request;
9
10
use Generated\Shared\Transfer\HeidelpayAsyncTransfer;
11
use Generated\Shared\Transfer\HeidelpayAuthenticationTransfer;
12
use Generated\Shared\Transfer\HeidelpayRequestTransfer;
13
use SprykerEco\Zed\Heidelpay\Dependency\Facade\HeidelpayToCurrencyFacadeInterface;
14
use SprykerEco\Zed\Heidelpay\HeidelpayConfig;
15
16
class BaseAdapterRequestBuilder
17
{
18
    /**
19
     * @var \SprykerEco\Zed\Heidelpay\Dependency\Facade\HeidelpayToCurrencyFacadeInterface
20
     */
21
    protected $currencyFacade;
22
23
    /**
24
     * @var \SprykerEco\Zed\Heidelpay\HeidelpayConfig
25
     */
26
    protected $config;
27
28
    /**
29
     * @param \SprykerEco\Zed\Heidelpay\Dependency\Facade\HeidelpayToCurrencyFacadeInterface $currencyFacade
30
     * @param \SprykerEco\Zed\Heidelpay\HeidelpayConfig $config
31
     */
32
    public function __construct(
33
        HeidelpayToCurrencyFacadeInterface $currencyFacade,
34
        HeidelpayConfig $config
35
    ) {
36
        $this->currencyFacade = $currencyFacade;
37
        $this->config = $config;
38
    }
39
40
    /**
41
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $heidelpayRequestTransfer
42
     *
43
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
44
     */
45
    protected function hydrateAuthenticationInfo(HeidelpayRequestTransfer $heidelpayRequestTransfer): HeidelpayRequestTransfer
46
    {
47
        $authenticationTransfer = (new HeidelpayAuthenticationTransfer())
48
            ->setUserLogin($this->config->getMerchantUserLogin())
49
            ->setUserPassword($this->config->getMerchantUserPassword())
50
            ->setSecuritySender($this->config->getMerchantSecuritySender())
51
            ->setIsSandboxRequest($this->config->getMerchantSandboxMode());
52
53
        $heidelpayRequestTransfer->setAuth($authenticationTransfer);
54
55
        return $heidelpayRequestTransfer;
56
    }
57
58
    /**
59
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $heidelpayRequestTransfer
60
     *
61
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
62
     */
63
    protected function hydrateAsyncParameters(HeidelpayRequestTransfer $heidelpayRequestTransfer): HeidelpayRequestTransfer
64
    {
65
        $asyncTransfer = (new HeidelpayAsyncTransfer())
66
            ->setLanguageCode($this->config->getAsyncLanguageCode())
67
            ->setResponseUrl($this->config->getZedResponseUrl());
68
69
        $heidelpayRequestTransfer->setAsync($asyncTransfer);
70
71
        return $heidelpayRequestTransfer;
72
    }
73
74
    /**
75
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $heidelpayRequestTransfer
76
     *
77
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
78
     */
79
    protected function hydrateApplicationSecret(HeidelpayRequestTransfer $heidelpayRequestTransfer): HeidelpayRequestTransfer
80
    {
81
        $heidelpayRequestTransfer->getCustomerPurchase()
82
            ->setSecret($this->config->getApplicationSecret());
83
84
        return $heidelpayRequestTransfer;
85
    }
86
87
    /**
88
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $heidelpayRequestTransfer
89
     * @param string $paymentMethod
90
     *
91
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
92
     */
93
    protected function hydrateTransactionChannel(HeidelpayRequestTransfer $heidelpayRequestTransfer, $paymentMethod): HeidelpayRequestTransfer
94
    {
95
        $transactionChannel = $this->config->getMerchantTransactionChannelByPaymentType($paymentMethod);
96
        $heidelpayRequestTransfer->getAuth()->setTransactionChannel($transactionChannel);
97
98
        return $heidelpayRequestTransfer;
99
    }
100
101
    /**
102
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $heidelpayRequestTransfer
103
     *
104
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
105
     */
106
    protected function hydrateCurrency(HeidelpayRequestTransfer $heidelpayRequestTransfer): HeidelpayRequestTransfer
107
    {
108
        $currencyCode = $this->currencyFacade->getCurrent()->getCode();
109
        $heidelpayRequestTransfer->getCustomerPurchase()
110
            ->setCurrencyCode($currencyCode);
111
112
        return $heidelpayRequestTransfer;
113
    }
114
115
    /**
116
     * @param \Generated\Shared\Transfer\HeidelpayRequestTransfer $requestTransfer
117
     *
118
     * @return \Generated\Shared\Transfer\HeidelpayRequestTransfer
119
     */
120
    protected function hydrateRequestData(HeidelpayRequestTransfer $requestTransfer): HeidelpayRequestTransfer
121
    {
122
        $requestTransfer = $this->hydrateAuthenticationInfo($requestTransfer);
123
        $requestTransfer = $this->hydrateApplicationSecret($requestTransfer);
124
        $requestTransfer = $this->hydrateAsyncParameters($requestTransfer);
125
        $requestTransfer = $this->hydrateCurrency($requestTransfer);
126
127
        return $requestTransfer;
128
    }
129
}
130