Completed
Push — feature/eco-3656/eco-3658-enab... ( ab05e4...16d9cc )
by
unknown
06:10
created

PayPalExpressCompeteMapper   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 104
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 5
eloc 43
dl 0
loc 104
rs 10
c 1
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getDataSubArray() 0 10 1
A createComputopPayPalExpressCompleteTransfer() 0 13 1
A createTransferWithUnencryptedValues() 0 13 1
A mapComputopPayPalExpressCompleteResponse() 0 25 1
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Yves\Computop\Mapper\Complete;
9
10
use Generated\Shared\Transfer\ComputopPayPalExpressCompleteResponseTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ompleteResponseTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use Generated\Shared\Transfer\ComputopPayPalExpressCompleteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfe...ExpressCompleteTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use Generated\Shared\Transfer\QuoteTransfer;
0 ignored issues
show
Bug introduced by
The type Generated\Shared\Transfer\QuoteTransfer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use SprykerEco\Service\ComputopApi\ComputopApiServiceInterface;
14
use SprykerEco\Shared\Computop\Config\ComputopApiConfig;
15
use SprykerEco\Yves\Computop\ComputopConfigInterface;
16
17
class PayPalExpressCompeteMapper implements PayPalExpressCompeteMapperInterface
18
{
19
    /**
20
     * @var \SprykerEco\Service\ComputopApi\ComputopApiServiceInterface
21
     */
22
    protected $computopApiService;
23
24
    /**
25
     * @var \SprykerEco\Yves\Computop\ComputopConfigInterface
26
     */
27
    protected $config;
28
29
    public function __construct(ComputopApiServiceInterface $computopApiService, ComputopConfigInterface $config)
30
    {
31
        $this->computopApiService = $computopApiService;
32
        $this->config = $config;
33
    }
34
35
    /**
36
     * @inheritDoc
37
     */
38
    public function createComputopPayPalExpressCompleteTransfer(QuoteTransfer $quoteTransfer): ComputopPayPalExpressCompleteTransfer
39
    {
40
        $computopPayPalExpressCompleteTransfer = $this->createTransferWithUnencryptedValues($quoteTransfer);
41
42
        $decryptedValues = $this->computopApiService->getEncryptedArray(
43
            $this->getDataSubArray($computopPayPalExpressCompleteTransfer),
44
            $this->config->getBlowfishPassword()
45
        );
46
47
        $computopPayPalExpressCompleteTransfer->setData($decryptedValues[ComputopApiConfig::DATA]);
48
        $computopPayPalExpressCompleteTransfer->setLen($decryptedValues[ComputopApiConfig::LENGTH]);
49
50
        return $computopPayPalExpressCompleteTransfer;
51
    }
52
53
    /**
54
     * @param array $computopPayPalExpressCompleteResponse
55
     * @param \Generated\Shared\Transfer\ComputopPayPalExpressCompleteTransfer $computopPayPalExpressCompleteTransfer
56
     *
57
     * @return \Generated\Shared\Transfer\ComputopPayPalExpressCompleteTransfer
58
     */
59
    public function mapComputopPayPalExpressCompleteResponse(
60
        array $computopPayPalExpressCompleteResponse,
61
        ComputopPayPalExpressCompleteTransfer $computopPayPalExpressCompleteTransfer
62
    ): ComputopPayPalExpressCompleteTransfer {
63
        $computopPayPalExpressCompleteResponseTransfer = new ComputopPayPalExpressCompleteResponseTransfer();
64
65
        $decryptedArray = $this
66
            ->computopApiService
67
            ->decryptResponseHeader($computopPayPalExpressCompleteResponse, $this->config->getBlowfishPassword());
68
69
        $computopApiResponseHeaderTransfer = $this->computopApiService->extractResponseHeader(
70
            $decryptedArray,
71
            'COMPLETE'
72
        );
73
74
        $computopPayPalExpressCompleteResponseTransfer->setHeader($computopApiResponseHeaderTransfer);
75
        $computopPayPalExpressCompleteResponseTransfer->setMerchantId($computopApiResponseHeaderTransfer->getMId());
76
        $computopPayPalExpressCompleteResponseTransfer->setPayId($computopApiResponseHeaderTransfer->getPayId());
77
        $computopPayPalExpressCompleteResponseTransfer->setTransId($computopApiResponseHeaderTransfer->getTransId());
78
        $computopPayPalExpressCompleteResponseTransfer->setStatus($computopApiResponseHeaderTransfer->getStatus());
79
        $computopPayPalExpressCompleteResponseTransfer->setIsSuccess($computopApiResponseHeaderTransfer->getIsSuccess());
80
81
        $computopPayPalExpressCompleteTransfer->setPayPalExpressCompleteResponse($computopPayPalExpressCompleteResponseTransfer);
82
83
        return $computopPayPalExpressCompleteTransfer;
84
    }
85
86
    /**
87
     * @param \Generated\Shared\Transfer\QuoteTransfer $quoteTransfer
88
     *
89
     * @return \Generated\Shared\Transfer\ComputopPayPalExpressCompleteTransfer
90
     */
91
    protected function createTransferWithUnencryptedValues(QuoteTransfer $quoteTransfer): ComputopPayPalExpressCompleteTransfer
92
    {
93
        $paymentTransfer = $quoteTransfer->getPayment()->getComputopPayPalExpress();
94
95
        $computopPayPalExpressCompleteTransfer = new ComputopPayPalExpressCompleteTransfer();
96
        $computopPayPalExpressCompleteTransfer->setMerchantId($this->config->getMerchantId());
97
        $computopPayPalExpressCompleteTransfer->setPayId($paymentTransfer->getPayId());
98
        $computopPayPalExpressCompleteTransfer->setTransactionId($paymentTransfer->getTransId());
99
        $computopPayPalExpressCompleteTransfer->setRefNr($paymentTransfer->getRefNr());
100
        $computopPayPalExpressCompleteTransfer->setAmount($quoteTransfer->getTotals()->getGrandTotal());
101
        $computopPayPalExpressCompleteTransfer->setCurrency($paymentTransfer->getCurrency());
102
103
        return $computopPayPalExpressCompleteTransfer;
104
    }
105
106
    /**
107
     * @param \Generated\Shared\Transfer\ComputopPayPalExpressCompleteTransfer $computopPayPalExpressCompleteTransfer
108
     *
109
     * @return array
110
     */
111
    protected function getDataSubArray(ComputopPayPalExpressCompleteTransfer $computopPayPalExpressCompleteTransfer): array
112
    {
113
        $dataSubArray[ComputopApiConfig::TRANS_ID] = $computopPayPalExpressCompleteTransfer->getTransactionId();
0 ignored issues
show
Comprehensibility Best Practice introduced by
$dataSubArray was never initialized. Although not strictly required by PHP, it is generally a good practice to add $dataSubArray = array(); before regardless.
Loading history...
114
        $dataSubArray[ComputopApiConfig::MERCHANT_ID] = $computopPayPalExpressCompleteTransfer->getMerchantId();
115
        $dataSubArray[ComputopApiConfig::PAY_ID] = $computopPayPalExpressCompleteTransfer->getPayId();
116
        $dataSubArray[ComputopApiConfig::REF_NR] = $computopPayPalExpressCompleteTransfer->getRefNr();
117
        $dataSubArray[ComputopApiConfig::AMOUNT] = $computopPayPalExpressCompleteTransfer->getAmount();
118
        $dataSubArray[ComputopApiConfig::CURRENCY] = $computopPayPalExpressCompleteTransfer->getCurrency();
119
120
        return $dataSubArray;
121
    }
122
}
123