Passed
Pull Request — master (#214)
by Florian
02:54
created

AmazonPay::getPaymentSpecificParameters()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 9
nc 2
nop 1
dl 0
loc 13
rs 9.9666
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify
5
 * it under the terms of the GNU Lesser General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * PAYONE Magento 2 Connector is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public License
15
 * along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>.
16
 *
17
 * PHP version 5
18
 *
19
 * @category  Payone
20
 * @package   Payone_Magento2_Plugin
21
 * @author    FATCHIP GmbH <[email protected]>
22
 * @copyright 2003 - 2017 Payone GmbH
23
 * @license   <http://www.gnu.org/licenses/> GNU Lesser General Public License
24
 * @link      http://www.payone.de
25
 */
26
27
namespace Payone\Core\Model\Methods;
28
29
use Payone\Core\Model\PayoneConfig;
30
use Magento\Sales\Model\Order;
0 ignored issues
show
Bug introduced by
The type Magento\Sales\Model\Order 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...
31
32
/**
33
 * Model for Amazon Pay payment method
34
 */
35
class AmazonPay extends PayoneMethod
36
{
37
    /**
38
     * Payment method code
39
     *
40
     * @var string
41
     */
42
    protected $_code = PayoneConfig::METHOD_AMAZONPAY;
43
44
    /**
45
     * Clearingtype for PAYONE authorization request
46
     *
47
     * @var string
48
     */
49
    protected $sClearingtype = 'wlt';
50
51
    /**
52
     * Determines if the redirect-parameters have to be added
53
     * to the authorization-request
54
     *
55
     * @var bool
56
     */
57
    protected $blNeedsRedirectUrls = true;
58
59
    /**
60
     * Flags if Amazon Pay authorization is in retry mode
61
     *
62
     * @var bool
63
     */
64
    protected $blIsRetry = false;
65
66
    /**
67
     * Returns authorization-mode
68
     *
69
     * @return string
70
     */
71
    public function getAuthorizationMode()
72
    {
73
        return $this->getCustomConfigParam('request_type');
74
    }
75
76
    /**
77
     * Get amazon mode from config
78
     *
79
     * @return string
80
     */
81
    protected function getAmazonMode()
82
    {
83
        return $this->getCustomConfigParam('amazon_mode');
84
    }
85
86
    /**
87
     * Adds amazon timeout parameters
88
     *
89
     * @param  array $aParams
90
     * @return array
91
     */
92
    protected function addAmazonModeParameters($aParams)
93
    {
94
        $sAmazonMode = $this->getAmazonMode();
95
        switch ($sAmazonMode) {
96
            case 'synchronousFirst':
97
                if ($this->checkoutSession->getAmazonRetryAsync() === true) {
98
                    $aParams['add_paydata[amazon_timeout]'] = 1440;
99
                } else {
100
                    $this->checkoutSession->setAmazonRetryAsync(true);
101
                    $aParams['add_paydata[amazon_timeout]'] = 0;
102
                }
103
                break;
104
            case 'asynchronous':
105
                $aParams['add_paydata[amazon_timeout]'] = 1440;
106
                break;
107
            case 'synchronous':
108
                $aParams['add_paydata[amazon_timeout]'] = 0;
109
                $aParams['add_paydata[cancel_on_timeout]'] = 'yes';
110
                break;
111
        }
112
        return $aParams;
113
    }
114
115
    /**
116
     * Return parameters specific to this payment type
117
     *
118
     * @param  Order $oOrder
119
     * @return array
120
     */
121
    public function getPaymentSpecificParameters(Order $oOrder)
122
    {
123
        $aParams = ['wallettype' => 'AMZ'];
124
        $aParams['api_version'] = '3.10';
125
126
        $sWorkorderId = $this->checkoutSession->getAmazonWorkorderId();
127
        if ($sWorkorderId) {
128
            $aParams['workorderid'] = $sWorkorderId;
129
        }
130
        $aParams['add_paydata[amazon_address_token]'] = $this->checkoutSession->getAmazonAddressToken();
131
        $aParams['add_paydata[amazon_reference_id]'] = $this->checkoutSession->getAmazonReferenceId();
132
        $aParams = $this->addAmazonModeParameters($aParams);
133
        return $aParams;
134
    }
135
136
    /**
137
     * Perform certain actions with the response
138
     *
139
     * @param  array $aResponse
140
     * @param  Order $oOrder
141
     * @param  float $amount
142
     * @return array
143
     */
144
    protected function handleResponse($aResponse, Order $oOrder, $amount)
145
    {
146
        if ($aResponse['status'] == 'ERROR') {
147
            if (!$this->blIsRetry && $this->checkoutSession->getAmazonRetryAsync() && $aResponse['errorcode'] == 980) {
148
                $aResponse = $this->authorizationRequest->sendRequest($this, $oOrder, $amount);
149
                $this->checkoutSession->setShowAmazonPendingNotice(true);
150
            }
151
        }
152
        return $aResponse;
153
    }
154
}
155