Passed
Push — master ( a2100c...af4f13 )
by Andrey
06:37
created

CaptureOrderTransaction::execute()   B

Complexity

Conditions 6
Paths 9

Size

Total Lines 41
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 6
eloc 23
nc 9
nop 1
dl 0
loc 41
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\OrderTransfer;
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfer\OrderTransfer 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 SprykerEco\Shared\Amazonpay\AmazonpayConstants;
12
13
class CaptureOrderTransaction extends AbstractOrderTransaction
14
{
15
16
    /**
17
     * @var \Generated\Shared\Transfer\AmazonpayCaptureOrderResponseTransfer
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfe...reOrderResponseTransfer 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...
18
     */
19
    protected $apiResponse;
20
21
    /**
22
     * @param \Generated\Shared\Transfer\OrderTransfer $orderTransfer
23
     *
24
     * @return \Generated\Shared\Transfer\OrderTransfer
25
     */
26
    public function execute(OrderTransfer $orderTransfer)
27
    {
28
        if (!$orderTransfer->getAmazonpayPayment()
29
                ->getAuthorizationDetails()
30
                ->getAuthorizationStatus()
31
                ->getIsOpen()
32
        ) {
33
            return $orderTransfer;
34
        }
35
36
        $orderTransfer->getAmazonpayPayment()->getCaptureDetails()->setCaptureReferenceId(
37
            $this->generateOperationReferenceId($orderTransfer)
38
        );
39
40
        $orderTransfer = parent::execute($orderTransfer);
41
42
        if ($orderTransfer->getAmazonpayPayment()->getResponseHeader()->getIsSuccess()) {
43
            $orderTransfer->getAmazonpayPayment()->setCaptureDetails(
44
                $this->apiResponse->getCaptureDetails()
45
            );
46
47
            $this->paymentEntity->setAmazonCaptureId(
48
                $this->apiResponse->getCaptureDetails()->getAmazonCaptureId()
49
            );
50
51
            $this->paymentEntity->setCaptureReferenceId(
52
                $this->apiResponse->getCaptureDetails()->getCaptureReferenceId()
53
            );
54
        }
55
56
        if ($orderTransfer->getAmazonpayPayment()->getCaptureDetails()->getCaptureStatus()->getIsDeclined()) {
57
            $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_CAPTURE_DECLINED);
58
        } elseif ($orderTransfer->getAmazonpayPayment()->getCaptureDetails()->getCaptureStatus()->getIsPending()) {
59
            $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_CAPTURE_PENDING);
60
        } elseif ($orderTransfer->getAmazonpayPayment()->getCaptureDetails()->getCaptureStatus()->getIsCompleted()) {
61
            $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_CAPTURE_COMPLETED);
62
        }
63
64
        $this->paymentEntity->save();
65
66
        return $orderTransfer;
67
    }
68
69
}
70