Issues (10)

src/Gateway.php (1 issue)

1
<?php
2
3
namespace ByTIC\Omnipay\Twispay;
4
5
use ByTIC\Omnipay\Twispay\Message\CompletePurchaseRequest;
6
use ByTIC\Omnipay\Twispay\Message\PurchaseRequest;
7
use ByTIC\Omnipay\Twispay\Message\ServerCompletePurchaseRequest;
8
use Omnipay\Common\AbstractGateway;
9
use Omnipay\Common\Message\RequestInterface;
10
11
/**
12
 * @method RequestInterface authorize(array $options = [])
13
 * @method RequestInterface completeAuthorize(array $options = [])
14
 * @method RequestInterface capture(array $options = [])
15
 * @method RequestInterface refund(array $options = [])
16
 * @method RequestInterface void(array $options = [])
17
 * @method RequestInterface createCard(array $options = [])
18
 * @method RequestInterface updateCard(array $options = [])
19
 * @method RequestInterface deleteCard(array $options = [])
20
 */
21
class Gateway extends AbstractGateway
22
{
23
24
    /**
25
     * @var string
26
     */
27
    private $privateKey = '';
28
29
    /**
30
     * @var int
31
     */
32
    private $siteId = 0;
33
34
    /**
35
     * @var string
36
     */
37
    private $testApiHost = 'https://api-stage.twispay.com';
38
39
    /**
40
     * @var string
41
     */
42
    private $prodApiHost = 'https://api.twispay.com';
43
44
    /**
45
     * @var string
46
     */
47
    private $testSecureHost = 'https://secure-stage.twispay.com';
48
49
    /**
50
     * @var string
51
     */
52
    private $prodSecureHost = 'https://secure.twispay.com';
53
54
    /**
55
     * @inheritdoc
56
     */
57
    public function getName()
58
    {
59
        return 'Twispay';
60
    }
61
62
    // ------------ REQUESTS ------------ //
63
64
    /**
65
     * @inheritdoc
66
     */
67
    public function purchase(array $parameters = []): RequestInterface
68
    {
69
        $parameters['apiUrl'] = $this->getSecureUrl();
70
71
        return $this->createRequest(
72
            PurchaseRequest::class,
73
            array_merge($this->getDefaultParameters(), $parameters)
74
        );
75
    }
76
77
    /**
78
     * Get live- or testURL.
79
     */
80 1
    public function getSecureUrl()
81
    {
82 1
        $defaultUrl = $this->getTestMode() === false
83 1
            ? $this->prodSecureHost
84 1
            : $this->testSecureHost;
85 1
        return $this->parameters->get('secureUrl', $defaultUrl);
86
    }
87
88
    /** @noinspection PhpMissingParentCallCommonInspection
89
     *
90
     * {@inheritdoc}
91
     */
92 1
    public function getDefaultParameters()
93
    {
94
        return [
95 1
            'testMode' => true, // Must be the 1st in the list!
96 1
            'siteId' => $this->getSiteId(),
97 1
            'apiKey' => $this->getPrivateKey(),
98 1
            'apiUrl' => $this->getApiUrl(),
99 1
            'secureUrl' => $this->getSecureUrl(),
100
        ];
101
    }
102
103
    // ------------ PARAMETERS ------------ //
104
105
    /**
106
     *
107
     * @return string
108
     */
109 1
    public function getSiteId()
110
    {
111 1
        return $this->parameters->get('siteId', $this->siteId);
112
    }
113
114
    /**
115
     *
116
     * @param string $value
117
     *
118
     * @return $this
119
     */
120
    public function setSiteId($value)
121
    {
122
        return $this->setParameter('siteId', $value);
123
    }
124
125
    /**
126
     * @param  boolean $value
127
     * @return $this
128
     */
129 1
    public function setTestMode($value)
130
    {
131 1
        $this->parameters->remove('apiUrl');
132 1
        $this->parameters->remove('secureUrl');
133 1
        return parent::setTestMode($value);
134
    }
135
136
    // ------------ Getter'n'Setters ------------ //
137
138
    /**
139
     *
140
     * @return string
141
     */
142 1
    public function getPrivateKey()
143
    {
144 1
        return $this->parameters->get('apiKey', $this->privateKey);
145
    }
146
147
    /**
148
     *
149
     * @param string $value
150
     *
151
     * @return $this
152
     */
153
    public function setPrivateKey($value)
154
    {
155
        return $this->setParameter('apiKey', $value);
156
    }
157
158
    /**
159
     * Get live- or testURL.
160
     */
161 1
    public function getApiUrl()
162
    {
163 1
        $defaultUrl = $this->getTestMode() === false
164
            ? $this->prodApiHost
165 1
            : $this->testApiHost;
166 1
        return $this->parameters->get('apiUrl', $defaultUrl);
167
    }
168
169
    /**
170
     * @inheritdoc
171
     */
172
    public function completePurchase(array $parameters = []): RequestInterface
173
    {
174
        return $this->createRequest(
175
            CompletePurchaseRequest::class,
176
            array_merge($this->getDefaultParameters(), $parameters)
177
        );
178
    }
179
180
    /**
181
     * @inheritdoc
182
     */
183
    public function serverCompletePurchase(array $parameters = []): RequestInterface
184
    {
185
        //        $parameters['apiUrl'] = $this->getSecureUrl();
0 ignored issues
show
Unused Code Comprehensibility introduced by
65% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
186
187
        return $this->createRequest(
188
            ServerCompletePurchaseRequest::class,
189
            array_merge($this->getDefaultParameters(), $parameters)
190
        );
191
    }
192
193
    /**
194
     * @param $value
195
     * @return $this
196
     */
197
    public function setApiUrl($value)
198
    {
199
        return $this->setParameter('apiUrl', $value);
200
    }
201
}
202