Code

< 40 %
40-60 %
> 60 %
1
<?php declare(strict_types=1);
2
3
namespace Karser\PayumSaferpay;
4
5
use Karser\PayumSaferpay\Action\Api\AssertInsertAliasAction;
6
use Karser\PayumSaferpay\Action\Api\AssertPaymentPageAction;
7
use Karser\PayumSaferpay\Action\Api\AuthorizeReferencedTransactionAction;
8
use Karser\PayumSaferpay\Action\Api\AuthorizeTransactionAction;
9
use Karser\PayumSaferpay\Action\Api\CaptureTransactionAction;
10
use Karser\PayumSaferpay\Action\Api\DeleteAliasAction;
11
use Karser\PayumSaferpay\Action\Api\InitPaymentPageAction;
12
use Karser\PayumSaferpay\Action\Api\InitTransactionAction;
13
use Karser\PayumSaferpay\Action\Api\InsertAliasAction;
14
use Karser\PayumSaferpay\Action\Api\RefundTransactionAction;
15
use Karser\PayumSaferpay\Action\AuthorizeAction;
16
use Karser\PayumSaferpay\Action\CancelAction;
17
use Karser\PayumSaferpay\Action\CaptureReferencedAction;
18
use Karser\PayumSaferpay\Action\ConvertPaymentAction;
19
use Karser\PayumSaferpay\Action\CaptureAction;
20
use Karser\PayumSaferpay\Action\InsertCardAliasAction;
21
use Karser\PayumSaferpay\Action\NotifyAction;
22
use Karser\PayumSaferpay\Action\RefundAction;
23
use Karser\PayumSaferpay\Action\StatusAction;
24
use Karser\PayumSaferpay\Action\SyncAction;
25
use Payum\Core\Bridge\Spl\ArrayObject;
26
use Payum\Core\GatewayFactory;
27
28
class SaferpayGatewayFactory extends GatewayFactory
29
{
30
    /**
31
     * {@inheritDoc}
32
     */
33 20
    protected function populateConfig(ArrayObject $config): void
34
    {
35 20
        $config->defaults([
36 20
            'payum.factory_name' => 'saferpay',
37 20
            'payum.factory_title' => 'saferpay',
38
39 20
            'payum.action.capture' => new CaptureAction(),
40 20
            'payum.action.insert_card_alias' => new InsertCardAliasAction(),
41 20
            'payum.action.capture_referenced' => new CaptureReferencedAction(),
42 20
            'payum.action.authorize' => new AuthorizeAction(),
43 20
            'payum.action.refund' => new RefundAction(),
44 20
            'payum.action.cancel' => new CancelAction(),
45 20
            'payum.action.notify' => new NotifyAction(),
46 20
            'payum.action.status' => new StatusAction(),
47 20
            'payum.action.sync'   => new SyncAction(),
48 20
            'payum.action.convert_payment' => new ConvertPaymentAction(),
49
50 20
            'payum.action.api.init_payment_page' => new InitPaymentPageAction(),
51 20
            'payum.action.api.assert_payment_page' => new AssertPaymentPageAction(),
52 20
            'payum.action.api.init_transaction' => new InitTransactionAction(),
53 20
            'payum.action.api.authorize_transaction' => new AuthorizeTransactionAction(),
54 20
            'payum.action.api.capture_transaction' => new CaptureTransactionAction(),
55 20
            'payum.action.api.authorize_referenced_transaction' => new AuthorizeReferencedTransactionAction(),
56 20
            'payum.action.api.refund_transaction' => new RefundTransactionAction(),
57 20
            'payum.action.api.insert_alias' => new InsertAliasAction(),
58 20
            'payum.action.api.assert_insert_alias' => new AssertInsertAliasAction(),
59 20
            'payum.action.api.delete_alias' => new DeleteAliasAction(),
60 20
        ]);
61
62 20
        $prependActions = $config['payum.prepend_actions'] ?? [];
63 20
        $prependActions[] = 'payum.action.capture_referenced';
64 20
        $prependActions[] = 'payum.action.insert_card_alias';
65 20
        $config['payum.prepend_actions'] = $prependActions;
66
67 20
        if (false == $config['payum.api']) {
68 20
            $config['payum.default_options'] = [
69 20
                'sandbox' => true,
70 20
                'instantCapturing' => true,
71 20
            ];
72 20
            $config->defaults($config['payum.default_options']);
73 20
            $config['payum.required_options'] = ['username', 'password', 'customerId', 'terminalId'];
74
75 20
            $config['payum.api'] = function (ArrayObject $config) {
76 20
                $config->validateNotEmpty($config['payum.required_options']);
77
78 20
                return new Api((array) $config, $config['payum.http_client'], $config['httplug.message_factory']);
79 20
            };
80
        }
81
    }
82
}
83