Passed
Push — master ( ee3474...0cff61 )
by Francis
04:46 queued 01:48
created

StripeCheckoutSessionGatewayFactory::initApi()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace FluxSE\PayumStripe;
6
7
use FluxSE\PayumStripe\Action\StripeCheckoutSession\Api\RedirectToCheckoutAction;
8
use FluxSE\PayumStripe\Action\StripeCheckoutSession\Api\WebhookEvent\CheckoutSessionCompletedAction;
9
use FluxSE\PayumStripe\Action\StripeCheckoutSession\AuthorizeAction;
10
use FluxSE\PayumStripe\Action\StripeCheckoutSession\CaptureAction;
11
use FluxSE\PayumStripe\Action\StripeCheckoutSession\ConvertPaymentAction;
12
use FluxSE\PayumStripe\Api\KeysAwareInterface;
13
use FluxSE\PayumStripe\Api\StripeCheckoutSessionApi;
14
use Payum\Core\Bridge\Spl\ArrayObject;
15
16
final class StripeCheckoutSessionGatewayFactory extends AbstractStripeGatewayFactory
17
{
18
    protected function populateConfig(ArrayObject $config): void
19
    {
20
        parent::populateConfig($config);
21
22
        $config->defaults([
23
            // Factories
24
            'payum.factory_name' => 'stripe_checkout_session',
25
            'payum.factory_title' => 'Stripe Checkout Session',
26
27
            // Templates
28
            'payum.template.redirect_to_checkout' => '@FluxSEPayumStripe/Action/redirectToCheckout.html.twig',
29
30
            // Webhook event resolver
31
            'payum.action.checkout_session_completed' => new CheckoutSessionCompletedAction(),
32
33
            // Actions
34
            'payum.action.capture' => new CaptureAction(),
35
            'payum.action.authorize' => new AuthorizeAction(),
36
            'payum.action.convert_payment' => new ConvertPaymentAction(),
37
            'payum.action.redirect_to_checkout' => function (ArrayObject $config) {
38
                return new RedirectToCheckoutAction($config['payum.template.redirect_to_checkout']);
39
            },
40
        ]);
41
    }
42
43
    protected function getStripeDefaultOptions(): array
44
    {
45
        $defaultOptions = parent::getStripeDefaultOptions();
46
        $defaultOptions['payment_method_types'] = ['card'];
47
48
        return $defaultOptions;
49
    }
50
51
    protected function initApi(ArrayObject $config): KeysAwareInterface
52
    {
53
        return new StripeCheckoutSessionApi(
54
            $config['publishable_key'],
55
            $config['secret_key'],
56
            $config['webhook_secret_keys'],
57
            $config['payment_method_types']
58
        );
59
    }
60
}
61