Passed
Pull Request — master (#23)
by
unknown
08:35 queued 04:20
created

AfterPayBusinessFactory::createAfterPayMapper()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
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\AfterPay\Business;
9
10
use Spryker\Zed\Kernel\Business\AbstractBusinessFactory;
11
use SprykerEco\Shared\AfterPay\AfterPayConfig;
12
use SprykerEco\Zed\AfterPay\AfterPayDependencyProvider;
13
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandler;
14
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface;
15
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandler;
16
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface;
17
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandler;
18
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface;
19
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandler;
20
use SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface;
21
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactory;
22
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactoryInterface;
23
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterInterface;
24
use SprykerEco\Zed\AfterPay\Business\Api\Adapter\AfterPayApiAdapter;
25
use SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayAuthorizeRequestBuilderException;
26
use SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayPaymentMethodsFilterException;
27
use SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHook;
28
use SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHookInterface;
29
use SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapper;
30
use SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface;
31
use SprykerEco\Zed\AfterPay\Business\Order\Saver;
32
use SprykerEco\Zed\AfterPay\Business\Order\SaverInterface;
33
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface;
34
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\OneStepAuthorizePaymentMethodsFilter;
35
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProvider;
36
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProviderInterface;
37
use SprykerEco\Zed\AfterPay\Business\Payment\Filter\TwoStepAuthorizePaymentMethodsFilter;
38
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransfer;
39
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransferInterface;
40
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransfer;
41
use SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransferInterface;
42
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentReader;
43
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentReaderInterface;
44
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriter;
45
use SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface;
46
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriter;
47
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface;
48
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface;
49
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\OneStepAuthorizeRequestBuilder;
50
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\TwoStepsAuthorizeRequestBuilder;
51
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransaction;
52
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface;
53
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilder;
54
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface;
55
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransaction;
56
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransactionInterface;
57
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilder;
58
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface;
59
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransaction;
60
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransactionInterface;
61
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandler;
62
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface;
63
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandler;
64
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface;
65
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandler;
66
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface;
67
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandler;
68
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface;
69
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLogger;
70
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLoggerInterface;
71
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProvider;
72
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface;
73
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilder;
74
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface;
75
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransaction;
76
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransactionInterface;
77
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReader;
78
use SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReaderInterface;
79
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToCustomerFacadeInterface;
80
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface;
81
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToPaymentFacadeInterface;
82
use SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface;
83
use SprykerEco\Zed\AfterPay\Dependency\Service\AfterPayToUtilEncodingServiceInterface;
84
85
/**
86
 * @method \SprykerEco\Zed\AfterPay\Persistence\AfterPayQueryContainerInterface getQueryContainer()
87
 * @method \SprykerEco\Zed\AfterPay\AfterPayConfig getConfig()
88
 * @method \SprykerEco\Zed\AfterPay\Persistence\AfterPayEntityManagerInterface getEntityManager()
89
 */
90
class AfterPayBusinessFactory extends AbstractBusinessFactory
91
{
92
    /**
93
     * @return \SprykerEco\Zed\AfterPay\Business\Order\SaverInterface
94
     */
95
    public function createOrderSaver(): SaverInterface
96
    {
97
        return new Saver($this->getConfig());
98
    }
99
100
    /**
101
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\AuthorizeTransactionHandlerInterface
102
     */
103
    public function createAuthorizeTransactionHandler(): AuthorizeTransactionHandlerInterface
104
    {
105
        return new AuthorizeTransactionHandler(
106
            $this->createAuthorizeTransaction(),
107
            $this->getAuthorizeRequestBuilder(),
108
            $this->createPaymentWriter(),
109
            $this->createPriceToPayProvider(),
110
            $this->createAfterPayMapper()
111
        );
112
    }
113
114
    /**
115
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CaptureTransactionHandlerInterface
116
     */
117
    public function createCaptureTransactionHandler(): CaptureTransactionHandlerInterface
118
    {
119
        return new CaptureTransactionHandler(
120
            $this->createCaptureTransaction(),
121
            $this->createPaymentReader(),
122
            $this->createPaymentWriter(),
123
            $this->createCaptureRequestBuilder()
124
        );
125
    }
126
127
    /**
128
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\RefundTransactionHandlerInterface
129
     */
130
    public function createRefundTransactionHandler(): RefundTransactionHandlerInterface
131
    {
132
        return new RefundTransactionHandler(
133
            $this->createRefundTransaction(),
134
            $this->createPaymentReader(),
135
            $this->createPaymentWriter(),
136
            $this->getMoneyFacade(),
137
            $this->createRefundRequestBuilder()
138
        );
139
    }
140
141
    /**
142
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Handler\CancelTransactionHandlerInterface
143
     */
144
    public function createCancelTransactionHandler(): CancelTransactionHandlerInterface
145
    {
146
        return new CancelTransactionHandler(
147
            $this->createCancelTransaction(),
148
            $this->createPaymentReader(),
149
            $this->createPaymentWriter(),
150
            $this->getMoneyFacade(),
151
            $this->createCancelRequestBuilder()
152
        );
153
    }
154
155
    /**
156
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\PaymentReaderInterface
157
     */
158
    public function createPaymentReader(): PaymentReaderInterface
159
    {
160
        return new PaymentReader($this->getQueryContainer());
161
    }
162
163
    /**
164
     * @return \SprykerEco\Zed\AfterPay\Business\Hook\PostSaveHookInterface
165
     */
166
    public function createPostSaveHook(): PostSaveHookInterface
167
    {
168
        return new PostSaveHook(
169
            $this->createTransactionLogReader(),
170
            $this->getConfig()
171
        );
172
    }
173
174
    /**
175
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Capture\CaptureRequestBuilderInterface
176
     */
177
    public function createCaptureRequestBuilder(): CaptureRequestBuilderInterface
178
    {
179
        return new CaptureRequestBuilder(
180
            $this->createOrderToRequestMapper(),
181
            $this->getMoneyFacade()
182
        );
183
    }
184
185
    /**
186
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CaptureTransactionInterface
187
     */
188
    public function createCaptureTransaction(): CaptureTransactionInterface
189
    {
190
        return new CaptureTransaction(
191
            $this->createTransactionLogger(),
192
            $this->createApiAdapter()
193
        );
194
    }
195
196
    /**
197
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\RefundTransactionInterface
198
     */
199
    public function createRefundTransaction(): RefundTransactionInterface
200
    {
201
        return new RefundTransaction(
202
            $this->createTransactionLogger(),
203
            $this->createApiAdapter()
204
        );
205
    }
206
207
    /**
208
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateCustomerHandlerInterface
209
     */
210
    public function createValidateCustomerHandler(): ValidateCustomerHandlerInterface
211
    {
212
        return new ValidateCustomerHandler(
213
            $this->createApiAdapter(),
214
            $this->getAfterPayToCustomerBridge()
215
        );
216
    }
217
218
    /**
219
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\ValidateBankAccountHandlerInterface
220
     */
221
    public function createValidateBankAccountHandler(): ValidateBankAccountHandlerInterface
222
    {
223
        return new ValidateBankAccountHandler($this->createApiAdapter());
224
    }
225
226
    /**
227
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupCustomerHandlerInterface
228
     */
229
    public function createLookupCustomerHandler(): LookupCustomerHandlerInterface
230
    {
231
        return new LookupCustomerHandler($this->createApiAdapter());
232
    }
233
234
    /**
235
     * @return \SprykerEco\Zed\AfterPay\Business\AdditionalServices\Handler\LookupInstallmentPlansHandlerInterface
236
     */
237
    public function createLookupInstallmentPlansHandler(): LookupInstallmentPlansHandlerInterface
238
    {
239
        return new LookupInstallmentPlansHandler($this->createApiAdapter());
240
    }
241
242
    /**
243
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\PaymentWriterInterface
244
     */
245
    public function createPaymentWriter(): PaymentWriterInterface
246
    {
247
        return new PaymentWriter($this->getQueryContainer(), $this->getEntityManager());
248
    }
249
250
    /**
251
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\AuthorizeTransactionInterface
252
     */
253
    public function createAuthorizeTransaction(): AuthorizeTransactionInterface
254
    {
255
        return new AuthorizeTransaction(
256
            $this->createTransactionLogger(),
257
            $this->createApiAdapter(),
258
            $this->createPaymentAuthorizeWriter()
259
        );
260
    }
261
262
    /**
263
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\CancelTransactionInterface
264
     */
265
    public function createCancelTransaction(): CancelTransactionInterface
266
    {
267
        return new CancelTransaction(
268
            $this->createTransactionLogger(),
269
            $this->createApiAdapter()
270
        );
271
    }
272
273
    /**
274
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Logger\TransactionLoggerInterface
275
     */
276
    public function createTransactionLogger(): TransactionLoggerInterface
277
    {
278
        return new TransactionLogger($this->getUtilEncodingService());
279
    }
280
281
    /**
282
     * @return \SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterInterface
283
     */
284
    public function createApiAdapter(): AdapterInterface
285
    {
286
        return new AfterPayApiAdapter($this->createAdapterFactory());
287
    }
288
289
    /**
290
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\PaymentAuthorizeWriterInterface
291
     */
292
    public function createPaymentAuthorizeWriter(): PaymentAuthorizeWriterInterface
293
    {
294
        return new PaymentAuthorizeWriter($this->getQueryContainer());
295
    }
296
297
    /**
298
     * @return \SprykerEco\Zed\AfterPay\Business\Api\Adapter\AdapterFactoryInterface
299
     */
300
    public function createAdapterFactory(): AdapterFactoryInterface
301
    {
302
        return new AdapterFactory();
303
    }
304
305
    /**
306
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
307
     */
308
    public function getAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
309
    {
310
        return $this->createAuthorizeRequestBuilder();
311
    }
312
313
    /**
314
     * @throws \SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayAuthorizeRequestBuilderException
315
     *
316
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
317
     */
318
    public function createAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
319
    {
320
        $authorizeWorkflow = $this->getConfig()->getAfterPayAuthorizeWorkflow();
321
        $authorizeRequestBuilderStack = $this->getAuthorizeRequestBuilderStack();
322
323
        if (!isset($authorizeRequestBuilderStack[$authorizeWorkflow])) {
324
            throw new InvalidAfterPayAuthorizeRequestBuilderException(sprintf(
325
                '%s is not a valid AfterPay authorize request builder.',
326
                $authorizeWorkflow
327
            ));
328
        }
329
330
        return $authorizeRequestBuilderStack[$authorizeWorkflow];
331
    }
332
333
    /**
334
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface[]
335
     */
336
    public function getAuthorizeRequestBuilderStack(): array
337
    {
338
        return [
339
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP => $this->createOneStepAuthorizeRequestBuilder(),
340
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS => $this->createTwoStepsAuthorizeRequestBuilder(),
341
        ];
342
    }
343
344
    /**
345
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Cancel\CancelRequestBuilderInterface
346
     */
347
    public function createCancelRequestBuilder(): CancelRequestBuilderInterface
348
    {
349
        return new CancelRequestBuilder(
350
            $this->createOrderToRequestMapper(),
351
            $this->getMoneyFacade()
352
        );
353
    }
354
355
    /**
356
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Refund\RefundRequestBuilderInterface
357
     */
358
    public function createRefundRequestBuilder(): RefundRequestBuilderInterface
359
    {
360
        return new RefundRequestBuilder(
361
            $this->createOrderToRequestMapper(),
362
            $this->getMoneyFacade()
363
        );
364
    }
365
366
    /**
367
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
368
     */
369
    public function createOneStepAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
370
    {
371
        return new OneStepAuthorizeRequestBuilder($this->createOrderToRequestMapper());
372
    }
373
374
    /**
375
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Mapper\OrderToRequestTransferInterface
376
     */
377
    public function createOrderToRequestMapper(): OrderToRequestTransferInterface
378
    {
379
        return new OrderToRequestTransfer(
380
            $this->getMoneyFacade(),
381
            $this->getStoreFacade(),
382
            $this->createPriceToPayProvider()
383
        );
384
    }
385
386
    /**
387
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\Authorize\RequestBuilder\AuthorizeRequestBuilderInterface
388
     */
389
    public function createTwoStepsAuthorizeRequestBuilder(): AuthorizeRequestBuilderInterface
390
    {
391
        return new TwoStepsAuthorizeRequestBuilder($this->createOrderToRequestMapper());
392
    }
393
394
    /**
395
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\TransactionLogReaderInterface
396
     */
397
    public function createTransactionLogReader(): TransactionLogReaderInterface
398
    {
399
        return new TransactionLogReader($this->getQueryContainer());
400
    }
401
402
    /**
403
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Transaction\PriceToPayProviderInterface
404
     */
405
    public function createPriceToPayProvider(): PriceToPayProviderInterface
406
    {
407
        return new PriceToPayProvider($this->getPaymentFacade());
408
    }
409
410
    /**
411
     * @return \SprykerEco\Zed\AfterPay\Business\Mapper\AfterPayMapperInterface
412
     */
413
    public function createAfterPayMapper(): AfterPayMapperInterface
414
    {
415
        return new AfterPayMapper();
416
    }
417
418
    /**
419
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Mapper\QuoteToRequestTransferInterface
420
     */
421
    public function createQuoteToRequestMapper(): QuoteToRequestTransferInterface
422
    {
423
        return new QuoteToRequestTransfer(
424
            $this->getMoneyFacade(),
425
            $this->getStoreFacade()
426
        );
427
    }
428
429
    /**
430
     * @throws \SprykerEco\Zed\AfterPay\Business\Exception\InvalidAfterPayPaymentMethodsFilterException
431
     *
432
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
433
     */
434
    public function createPaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
435
    {
436
        $authorizeWorkflow = $this->getConfig()->getAfterPayAuthorizeWorkflow();
437
        $paymentMethodsFilterStack = $this->getPaymentMethodsFilterStack();
438
439
        if (!isset($paymentMethodsFilterStack[$authorizeWorkflow])) {
440
            throw new InvalidAfterPayPaymentMethodsFilterException(sprintf(
441
                '%s is not a valid AfterPay payment methods filter.',
442
                $authorizeWorkflow
443
            ));
444
        }
445
446
        return $paymentMethodsFilterStack[$authorizeWorkflow];
447
    }
448
449
    /**
450
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface[]
451
     */
452
    public function getPaymentMethodsFilterStack(): array
453
    {
454
        return [
455
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_ONE_STEP => $this->createOneStepAuthorizePaymentMethodsFilter(),
456
            AfterPayConfig::AFTERPAY_AUTHORIZE_WORKFLOW_TWO_STEPS => $this->createTwoStepAuthorizePaymentMethodsFilter(),
457
        ];
458
    }
459
460
    /**
461
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
462
     */
463
    public function createOneStepAuthorizePaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
464
    {
465
        return new OneStepAuthorizePaymentMethodsFilter();
466
    }
467
468
    /**
469
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\AfterPayPaymentMethodsFilterInterface
470
     */
471
    public function createTwoStepAuthorizePaymentMethodsFilter(): AfterPayPaymentMethodsFilterInterface
472
    {
473
        return new TwoStepAuthorizePaymentMethodsFilter();
474
    }
475
476
    /**
477
     * @return \SprykerEco\Zed\AfterPay\Business\Payment\Filter\Provider\AfterPayPaymentMethodsProviderInterface
478
     */
479
    public function createPaymentMethodsProvider(): AfterPayPaymentMethodsProviderInterface
480
    {
481
        return new AfterPayPaymentMethodsProvider(
482
            $this->createApiAdapter(),
483
            $this->createQuoteToRequestMapper()
484
        );
485
    }
486
487
    /**
488
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToMoneyFacadeInterface
489
     */
490
    public function getMoneyFacade(): AfterPayToMoneyFacadeInterface
491
    {
492
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_MONEY);
493
    }
494
495
    /**
496
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToCustomerFacadeInterface
497
     */
498
    public function getAfterPayToCustomerBridge(): AfterPayToCustomerFacadeInterface
499
    {
500
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_CUSTOMER);
501
    }
502
503
    /**
504
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToStoreFacadeInterface
505
     */
506
    public function getStoreFacade(): AfterPayToStoreFacadeInterface
507
    {
508
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_STORE);
509
    }
510
511
    /**
512
     * @return \SprykerEco\Zed\AfterPay\Dependency\Facade\AfterPayToPaymentFacadeInterface
513
     */
514
    public function getPaymentFacade(): AfterPayToPaymentFacadeInterface
515
    {
516
        return $this->getProvidedDependency(AfterPayDependencyProvider::FACADE_PAYMENT);
517
    }
518
519
    /**
520
     * @return \SprykerEco\Zed\AfterPay\Dependency\Service\AfterPayToUtilEncodingServiceInterface
521
     */
522
    public function getUtilEncodingService(): AfterPayToUtilEncodingServiceInterface
523
    {
524
        return $this->getProvidedDependency(AfterPayDependencyProvider::SERVICE_UTIL_ENCODING);
525
    }
526
}
527