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
|
|||
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 |
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.