HeidelpayClient   A
last analyzed

Complexity

Total Complexity 20

Size/Duplication

Total Lines 322
Duplicated Lines 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 20
eloc 64
dl 0
loc 322
c 2
b 1
f 0
rs 10

20 Methods

Rating   Name   Duplication   Size   Complexity  
A processExternalPaymentResponse() 0 7 1
A parseExternalResponse() 0 5 1
A findRegistrationByIdAndQuote() 0 9 1
A parseDirectDebitRegistrationResponse() 0 5 1
A getDirectDebitPaymentOptions() 0 5 1
A getCurrentLocale() 0 5 1
A sendHeidelpayEasycreditInitializeRequest() 0 5 1
A filterResponseParameters() 0 5 1
A translateErrorMessageByCode() 0 7 1
A processExternalEasyCreditPaymentResponse() 0 8 1
A buildFindRegistrationRequestTransfer() 0 7 1
A retrieveDirectDebitRegistration() 0 6 1
A processNotification() 0 5 1
A getCreditCardPaymentOptions() 0 5 1
A saveDirectDebitRegistration() 0 6 1
A getQuote() 0 5 1
A getQuoteFromSession() 0 5 1
A buildTransferFromExternalResponseArray() 0 5 1
A getAuthorizeTransactionLogForOrder() 0 5 1
A saveCreditCardRegistration() 0 6 1
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\Client\Heidelpay;
9
10
use Generated\Shared\Transfer\HeidelpayCreditCardPaymentOptionsTransfer;
11
use Generated\Shared\Transfer\HeidelpayCreditCardRegistrationTransfer;
12
use Generated\Shared\Transfer\HeidelpayDirectDebitPaymentOptionsTransfer;
13
use Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer;
14
use Generated\Shared\Transfer\HeidelpayExternalPaymentRequestTransfer;
15
use Generated\Shared\Transfer\HeidelpayNotificationTransfer;
16
use Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer;
17
use Generated\Shared\Transfer\HeidelpayRegistrationByIdAndQuoteRequestTransfer;
18
use Generated\Shared\Transfer\HeidelpayRegistrationRequestTransfer;
19
use Generated\Shared\Transfer\HeidelpayRegistrationSaveResponseTransfer;
20
use Generated\Shared\Transfer\HeidelpayResponseTransfer;
21
use Generated\Shared\Transfer\HeidelpayTransactionLogTransfer;
22
use Generated\Shared\Transfer\QuoteTransfer;
23
use Spryker\Client\Kernel\AbstractClient;
24
25
/**
26
 * @method \SprykerEco\Client\Heidelpay\HeidelpayFactory getFactory()
27
 */
28
class HeidelpayClient extends AbstractClient implements HeidelpayClientInterface
29
{
30
    /**
31
     * {@inheritdoc}
32
     *
33
     * @api
34
     *
35
     * @param string $errorCode
36
     *
37
     * @return string
38
     */
39
    public function translateErrorMessageByCode(string $errorCode): string
40
    {
41
        $currentLocale = $this->getCurrentLocale();
42
43
        return $this->getFactory()
44
            ->createHeidelpayApiAdapter()
45
            ->getTranslatedMessageByCode($errorCode, $currentLocale);
46
    }
47
48
    /**
49
     * {@inheritdoc}
50
     *
51
     * @api
52
     *
53
     * @param string $orderReference
54
     *
55
     * @return \Generated\Shared\Transfer\HeidelpayTransactionLogTransfer
56
     */
57
    public function getAuthorizeTransactionLogForOrder(string $orderReference): HeidelpayTransactionLogTransfer
58
    {
59
        return $this->getFactory()
60
            ->createZedStub()
61
            ->getAuthorizeTransactionLogByOrderReference($orderReference);
62
    }
63
64
    /**
65
     * @deprecated Use `getQuote()` instead.
66
     *
67
     * {@inheritdoc}
68
     *
69
     * @api
70
     *
71
     * @return \Generated\Shared\Transfer\QuoteTransfer
72
     */
73
    public function getQuoteFromSession(): QuoteTransfer
74
    {
75
        return $this->getFactory()
76
            ->getQuoteClient()
77
            ->getQuote();
78
    }
79
80
    /**
81
     * {@inheritdoc}
82
     *
83
     * @api
84
     *
85
     * @return \Generated\Shared\Transfer\QuoteTransfer
86
     */
87
    public function getQuote(): QuoteTransfer
88
    {
89
        return $this->getFactory()
90
            ->getQuoteClient()
91
            ->getQuote();
92
    }
93
94
    /**
95
     * {@inheritdoc}
96
     *
97
     * @api
98
     *
99
     * @param array $externalResponse
100
     *
101
     * @return \Generated\Shared\Transfer\HeidelpayRegistrationRequestTransfer
102
     */
103
    public function parseExternalResponse(array $externalResponse): HeidelpayRegistrationRequestTransfer
104
    {
105
        return $this->getFactory()
106
            ->createExternalResponseValidator()
107
            ->parseExternalResponse($externalResponse);
108
    }
109
110
    /**
111
     * {@inheritdoc}
112
     *
113
     * @api
114
     *
115
     * @param string[] $externalResponse
116
     *
117
     * @return \Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer
118
     */
119
    public function parseDirectDebitRegistrationResponse(array $externalResponse): HeidelpayDirectDebitRegistrationTransfer
120
    {
121
        return $this->getFactory()
122
            ->createDirectDebitRegistrationResponseParser()
123
            ->parseResponse($externalResponse);
124
    }
125
126
    /**
127
     * {@inheritdoc}
128
     *
129
     * @api
130
     *
131
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
132
     *
133
     * @return \Generated\Shared\Transfer\HeidelpayResponseTransfer
134
     */
135
    public function sendHeidelpayEasycreditInitializeRequest(QuoteTransfer $quoteTransfer): HeidelpayResponseTransfer
136
    {
137
        return $this->getFactory()
138
            ->createZedStub()
139
            ->sendEasycreditInitializeRequest($quoteTransfer);
140
    }
141
142
    /**
143
     * {@inheritdoc}
144
     *
145
     * @api
146
     *
147
     * @param array $externalResponse
148
     *
149
     * @return \Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer
150
     */
151
    public function processExternalPaymentResponse(array $externalResponse): HeidelpayPaymentProcessingResponseTransfer
152
    {
153
        $externalResponseTransfer = $this->buildTransferFromExternalResponseArray($externalResponse);
154
155
        return $this->getFactory()
156
            ->createZedStub()
157
            ->processExternalPaymentResponse($externalResponseTransfer);
158
    }
159
160
    /**
161
     * {@inheritdoc}
162
     *
163
     * @api
164
     *
165
     * @param array $externalResponse
166
     *
167
     * @return \Generated\Shared\Transfer\HeidelpayPaymentProcessingResponseTransfer
168
     */
169
    public function processExternalEasyCreditPaymentResponse(
170
        array $externalResponse
171
    ): HeidelpayPaymentProcessingResponseTransfer {
172
        $externalResponseTransfer = $this->buildTransferFromExternalResponseArray($externalResponse);
173
174
        return $this->getFactory()
175
            ->createZedStub()
176
            ->processExternalEasyCreditPaymentResponse($externalResponseTransfer);
177
    }
178
179
    /**
180
     * {@inheritdoc}
181
     *
182
     * @api
183
     *
184
     * @param \Generated\Shared\Transfer\HeidelpayRegistrationRequestTransfer $registrationRequestTransfer
185
     *
186
     * @return \Generated\Shared\Transfer\HeidelpayRegistrationSaveResponseTransfer
187
     */
188
    public function saveCreditCardRegistration(
189
        HeidelpayRegistrationRequestTransfer $registrationRequestTransfer
190
    ): HeidelpayRegistrationSaveResponseTransfer {
191
        return $this->getFactory()
192
            ->createZedStub()
193
            ->saveCreditCardRegistration($registrationRequestTransfer);
194
    }
195
196
    /**
197
     * {@inheritdoc}
198
     *
199
     * @api
200
     *
201
     * @param \Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer $directDebitRegistrationTransfer
202
     *
203
     * @return \Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer
204
     */
205
    public function saveDirectDebitRegistration(
206
        HeidelpayDirectDebitRegistrationTransfer $directDebitRegistrationTransfer
207
    ): HeidelpayDirectDebitRegistrationTransfer {
208
        return $this->getFactory()
209
            ->createZedStub()
210
            ->saveDirectDebitRegistration($directDebitRegistrationTransfer);
211
    }
212
213
    /**
214
     * {@inheritdoc}
215
     *
216
     * @api
217
     *
218
     * @param int $idRegistration
219
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
220
     *
221
     * @return \Generated\Shared\Transfer\HeidelpayCreditCardRegistrationTransfer|null
222
     */
223
    public function findRegistrationByIdAndQuote(
224
        int $idRegistration,
225
        QuoteTransfer $quoteTransfer
226
    ): ?HeidelpayCreditCardRegistrationTransfer {
227
        $findRegistrationRequestTransfer = $this->buildFindRegistrationRequestTransfer($idRegistration, $quoteTransfer);
228
229
        return $this->getFactory()
230
            ->createZedStub()
231
            ->findCreditCardRegistrationByIdAndQuote($findRegistrationRequestTransfer);
232
    }
233
234
    /**
235
     * {@inheritdoc}
236
     *
237
     * @api
238
     *
239
     * @param \Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer $directDebitRegistrationTransfer
240
     *
241
     * @return \Generated\Shared\Transfer\HeidelpayDirectDebitRegistrationTransfer
242
     */
243
    public function retrieveDirectDebitRegistration(
244
        HeidelpayDirectDebitRegistrationTransfer $directDebitRegistrationTransfer
245
    ): HeidelpayDirectDebitRegistrationTransfer {
246
        return $this->getFactory()
247
            ->createZedStub()
248
            ->retrieveDirectDebitRegistration($directDebitRegistrationTransfer);
249
    }
250
251
    /**
252
     * {@inheritdoc}
253
     *
254
     * @api
255
     *
256
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
257
     *
258
     * @return \Generated\Shared\Transfer\HeidelpayCreditCardPaymentOptionsTransfer
259
     */
260
    public function getCreditCardPaymentOptions(QuoteTransfer $quoteTransfer): HeidelpayCreditCardPaymentOptionsTransfer
261
    {
262
        return $this->getFactory()
263
            ->createZedStub()
264
            ->getCreditCardPaymentOptions($quoteTransfer);
265
    }
266
267
    /**
268
     * {@inheritdoc}
269
     *
270
     * @api
271
     *
272
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
273
     *
274
     * @return \Generated\Shared\Transfer\HeidelpayDirectDebitPaymentOptionsTransfer
275
     */
276
    public function getDirectDebitPaymentOptions(QuoteTransfer $quoteTransfer): HeidelpayDirectDebitPaymentOptionsTransfer
277
    {
278
        return $this->getFactory()
279
            ->createZedStub()
280
            ->getDirectDebitPaymentOptions($quoteTransfer);
281
    }
282
283
    /**
284
     * {@inheritdoc}
285
     *
286
     * @api
287
     *
288
     * @param \Generated\Shared\Transfer\HeidelpayNotificationTransfer $notificationTransfer
289
     *
290
     * @return \Generated\Shared\Transfer\HeidelpayNotificationTransfer
291
     */
292
    public function processNotification(HeidelpayNotificationTransfer $notificationTransfer): HeidelpayNotificationTransfer
293
    {
294
        return $this->getFactory()
295
            ->createZedStub()
296
            ->processNotification($notificationTransfer);
297
    }
298
299
    /**
300
     * {@inheritdoc}
301
     *
302
     * @api
303
     *
304
     * @param array $responseArray
305
     *
306
     * @return array
307
     */
308
    public function filterResponseParameters(array $responseArray): array
309
    {
310
        return array_filter($responseArray, function ($key) {
311
            return !preg_match('/^paymentForm+|^lang+/', $key);
312
        }, ARRAY_FILTER_USE_KEY);
313
    }
314
315
    /**
316
     * @return string
317
     */
318
    protected function getCurrentLocale(): string
319
    {
320
        return $this->getFactory()
321
            ->getLocaleClient()
322
            ->getCurrentLocale();
323
    }
324
325
    /**
326
     * @param array $externalResponse
327
     *
328
     * @return \Generated\Shared\Transfer\HeidelpayExternalPaymentRequestTransfer
329
     */
330
    protected function buildTransferFromExternalResponseArray(
331
        array $externalResponse
332
    ): HeidelpayExternalPaymentRequestTransfer {
333
        return (new HeidelpayExternalPaymentRequestTransfer())
334
            ->setBody($externalResponse);
335
    }
336
337
    /**
338
     * @param int $idRegistration
339
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
340
     *
341
     * @return \Generated\Shared\Transfer\HeidelpayRegistrationByIdAndQuoteRequestTransfer
342
     */
343
    protected function buildFindRegistrationRequestTransfer(
344
        int $idRegistration,
345
        QuoteTransfer $quoteTransfer
346
    ): HeidelpayRegistrationByIdAndQuoteRequestTransfer {
347
        return (new HeidelpayRegistrationByIdAndQuoteRequestTransfer())
348
            ->setIdRegistration($idRegistration)
349
            ->setQuote($quoteTransfer);
350
    }
351
}
352