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

UpdateOrderAuthorizationStatusTransaction   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 66
rs 10
c 0
b 0
f 0
wmc 9

1 Method

Rating   Name   Duplication   Size   Complexity  
C execute() 0 53 9
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 UpdateOrderAuthorizationStatusTransaction extends AbstractOrderTransaction
14
{
15
16
    /**
17
     * @var \Generated\Shared\Transfer\AmazonpayAuthorizeOrderResponseTransfer
1 ignored issue
show
Bug introduced by
The type Generated\Shared\Transfe...zeOrderResponseTransfer 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
        $orderTransfer = parent::execute($orderTransfer);
29
30
        $orderTransfer->getAmazonpayPayment()->setAuthorizationDetails(
31
            $this->apiResponse->getAuthorizationDetails()
32
        );
33
34
        if ($this->apiResponse->getHeader()->getIsSuccess()) {
35
            if ($this->apiResponse->getAuthorizationDetails()->getIdList()) {
36
                $this->paymentEntity->setAmazonCaptureId(
37
                    $this->apiResponse->getAuthorizationDetails()->getIdList()
38
                );
39
40
                $this->paymentEntity->setStatus(
41
                    AmazonpayConstants::OMS_STATUS_CAPTURE_COMPLETED
42
                );
43
44
                $this->paymentEntity->save();
45
46
                return $orderTransfer;
47
            }
48
49
            $status = $this->apiResponse->getAuthorizationDetails()->getAuthorizationStatus();
50
51
            if ($status->getIsPending()) {
52
                return $orderTransfer;
53
            }
54
55
            if ($status->getIsDeclined()) {
56
                if ($status->getIsSuspended()) {
57
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_SUSPENDED);
58
                } else {
59
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_DECLINED);
60
                }
61
            }
62
63
            if ($status->getIsOpen()) {
64
                $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_OPEN);
65
            }
66
67
            if ($status->getIsClosed()) {
68
                if ($status->getIsReauthorizable()) {
69
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_EXPIRED);
70
                } else {
71
                    $this->paymentEntity->setStatus(AmazonpayConstants::OMS_STATUS_AUTH_CLOSED);
72
                }
73
            }
74
75
            $this->paymentEntity->save();
76
        }
77
78
        return $orderTransfer;
79
    }
80
81
}
82