Passed
Branch feature/ECO-965-refactoring (c9cdee)
by Andrey
06:34 queued 01:51
created

ReauthorizeOrderTransaction::updatePaymentEntity()   B

Complexity

Conditions 5
Paths 5

Size

Total Lines 27
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 15
nc 5
nop 1
dl 0
loc 27
rs 8.439
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Apache OSL-2
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\AmazonPay\Business\Payment\Handler\Transaction;
9
10
use Generated\Shared\Transfer\AmazonpayCallTransfer;
11
use SprykerEco\Shared\AmazonPay\AmazonPayConfig;
12
13
class ReauthorizeOrderTransaction extends AbstractAmazonpayTransaction
14
{
15
    /**
16
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
17
     *
18
     * @return \Generated\Shared\Transfer\AmazonpayCallTransfer
19
     */
20
    public function execute(AmazonpayCallTransfer $amazonPayCallTransfer)
21
    {
22
        $this->updateAuthorizeReferenceId($amazonPayCallTransfer);
23
24
        $amazonPayCallTransfer = parent::execute($amazonPayCallTransfer);
25
26
        $this->updatePaymentEntity($amazonPayCallTransfer);
27
28
        return $amazonPayCallTransfer;
29
    }
30
31
    /**
32
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
33
     *
34
     * @return void
35
     */
36
    protected function updateAuthorizeReferenceId(AmazonpayCallTransfer $amazonPayCallTransfer)
37
    {
38
        $amazonPayCallTransfer->getAmazonpayPayment()
39
            ->getAuthorizationDetails()
40
            ->setAuthorizationReferenceId(
41
                $this->generateOperationReferenceId($amazonPayCallTransfer)
42
            );
43
    }
44
45
    /**
46
     * @param \Generated\Shared\Transfer\AmazonpayCallTransfer $amazonPayCallTransfer
47
     *
48
     * @return void
49
     */
50
    protected function updatePaymentEntity(AmazonpayCallTransfer $amazonPayCallTransfer)
51
    {
52
        if (!$this->apiResponse->getResponseHeader()->getIsSuccess()) {
53
            return;
54
        }
55
56
        $isPartialProcessing = $this->isPartialProcessing($this->paymentEntity, $amazonPayCallTransfer);
57
58
        if ($isPartialProcessing && $this->paymentEntity->getStatus() !== AmazonPayConfig::STATUS_PENDING) {
59
            $this->paymentEntity = $this->paymentProcessor->duplicatePaymentEntity($this->paymentEntity);
60
        }
61
62
        $this->paymentEntity->setAmazonAuthorizationId(
63
            $this->apiResponse->getAuthorizationDetails()->getAmazonAuthorizationId()
64
        );
65
66
        $this->paymentEntity->setAuthorizationReferenceId(
67
            $this->apiResponse->getAuthorizationDetails()->getAuthorizationReferenceId()
68
        );
69
70
        $this->paymentEntity->setStatus(AmazonPayConfig::STATUS_PENDING);
71
        $this->paymentEntity->save();
72
73
        if ($isPartialProcessing) {
74
            $this->paymentProcessor->assignAmazonpayPaymentToItems(
75
                $this->paymentEntity,
76
                $amazonPayCallTransfer
77
            );
78
        }
79
    }
80
}
81