This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Moip\Resource; |
||
4 | |||
5 | use Requests; |
||
6 | use stdClass; |
||
7 | |||
8 | /** |
||
9 | * Class Payment. |
||
10 | */ |
||
11 | class Payment extends MoipResource |
||
12 | { |
||
13 | /** |
||
14 | * @const string |
||
15 | */ |
||
16 | const PATH = 'payments'; |
||
17 | |||
18 | /** |
||
19 | * @const string |
||
20 | */ |
||
21 | const MULTI_PAYMENTS_PATH = 'multipayments'; |
||
22 | |||
23 | /** |
||
24 | * @const string |
||
25 | */ |
||
26 | const SIMULATOR_PATH = 'simulador'; |
||
27 | |||
28 | /** |
||
29 | * Payment means. |
||
30 | * |
||
31 | * @const string |
||
32 | */ |
||
33 | const METHOD_CREDIT_CARD = 'CREDIT_CARD'; |
||
34 | |||
35 | /** |
||
36 | * Payment means. |
||
37 | * |
||
38 | * @const string |
||
39 | */ |
||
40 | const METHOD_BOLETO = 'BOLETO'; |
||
41 | |||
42 | /** |
||
43 | * Payment means. |
||
44 | * |
||
45 | * @const string |
||
46 | */ |
||
47 | const METHOD_ONLINE_DEBIT = 'ONLINE_DEBIT'; |
||
48 | |||
49 | /** |
||
50 | * Payment means. |
||
51 | * |
||
52 | * @const string |
||
53 | */ |
||
54 | const METHOD_WALLET = 'WALLET'; |
||
55 | |||
56 | /** |
||
57 | * Payment means. |
||
58 | * |
||
59 | * @const string |
||
60 | */ |
||
61 | const METHOD_ONLINE_BANK_DEBIT = 'ONLINE_BANK_DEBIT'; |
||
62 | |||
63 | /** |
||
64 | * @var \Moip\Resource\Orders |
||
65 | */ |
||
66 | private $order; |
||
67 | |||
68 | /** |
||
69 | * Just created, but not initialized yet. |
||
70 | */ |
||
71 | const STATUS_CREATED = 'CREATED'; |
||
72 | |||
73 | /** |
||
74 | * Waiting for the payment. |
||
75 | */ |
||
76 | const STATUS_WAITING = 'WAITING'; |
||
77 | |||
78 | /** |
||
79 | * On risk analysis, it may be automatic or manual. |
||
80 | */ |
||
81 | const STATUS_IN_ANALYSIS = 'IN_ANALYSIS'; |
||
82 | |||
83 | /** |
||
84 | * The amount was reserved on client credit card, it may be caught or discarded until 5 days. |
||
85 | */ |
||
86 | const STATUS_PRE_AUTHORIZED = 'PRE_AUTHORIZED'; |
||
87 | |||
88 | /** |
||
89 | * Payment confirmed by the bank institution. |
||
90 | */ |
||
91 | const STATUS_AUTHORIZED = 'AUTHORIZED'; |
||
92 | |||
93 | /** |
||
94 | * Payment cancelled. |
||
95 | */ |
||
96 | const STATUS_CANCELLED = 'CANCELLED'; |
||
97 | |||
98 | /** |
||
99 | * Payment refunded. |
||
100 | */ |
||
101 | const STATUS_REFUNDED = 'REFUNDED'; |
||
102 | |||
103 | /** |
||
104 | * Paymend reversed (it means that the payment may was not recognized by the client). |
||
105 | */ |
||
106 | const STATUS_REVERSED = 'REVERSED'; |
||
107 | |||
108 | /** |
||
109 | * Payment finalized, the amout is on your account. |
||
110 | */ |
||
111 | const STATUS_SETTLED = 'SETTLED'; |
||
112 | |||
113 | /** |
||
114 | * @var \Moip\Resource\Multiorders |
||
115 | */ |
||
116 | private $multiorder; |
||
117 | |||
118 | /** |
||
119 | * Initializes new instances. |
||
120 | */ |
||
121 | protected function initialize() |
||
122 | { |
||
123 | $this->data = new stdClass(); |
||
124 | $this->data->installmentCount = 1; |
||
125 | $this->data->fundingInstrument = new stdClass(); |
||
126 | } |
||
127 | |||
128 | /** |
||
129 | * Create a new payment in api MoIP. |
||
130 | * |
||
131 | * @return $this |
||
132 | */ |
||
133 | public function execute() |
||
134 | { |
||
135 | if ($this->order !== null) { |
||
136 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, Orders::PATH, $this->order->getId(), self::PATH); |
||
137 | } else { |
||
138 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, Multiorders::PATH, $this->multiorder->getId(), self::MULTI_PAYMENTS_PATH); |
||
139 | } |
||
140 | |||
141 | $response = $this->httpRequest($path, Requests::POST, $this); |
||
142 | |||
143 | return $this->populate($response); |
||
144 | } |
||
145 | |||
146 | /** |
||
147 | * Get an payment and multipayment in MoIP. |
||
148 | * |
||
149 | * @param string $id_moip Id MoIP payment |
||
150 | * |
||
151 | * @return stdClass |
||
152 | */ |
||
153 | public function get($id_moip) |
||
154 | { |
||
155 | if ($this->isMultipayment($id_moip)) { |
||
156 | return $this->getByPath(sprintf('/%s/%s/%s', MoipResource::VERSION, self::MULTI_PAYMENTS_PATH, $id_moip)); |
||
157 | } |
||
158 | |||
159 | return $this->getByPath(sprintf('/%s/%s/%s', MoipResource::VERSION, self::PATH, $id_moip)); |
||
160 | } |
||
161 | |||
162 | /** |
||
163 | * Get id MoIP payment. |
||
164 | * |
||
165 | * |
||
166 | * @return \Moip\Resource\Payment |
||
167 | */ |
||
168 | public function getId() |
||
169 | { |
||
170 | return $this->getIfSet('id'); |
||
171 | } |
||
172 | |||
173 | /** |
||
174 | * Mount payment structure. |
||
175 | * |
||
176 | * @param \stdClass $response |
||
177 | * |
||
178 | * @return Payment |
||
179 | */ |
||
180 | protected function populate(stdClass $response) |
||
181 | { |
||
182 | $payment = clone $this; |
||
183 | |||
184 | $payment->data->id = $this->getIfSet('id', $response); |
||
185 | $payment->data->status = $this->getIfSet('status', $response); |
||
186 | $payment->data->delayCapture = $this->getIfSet('delayCapture', $response); |
||
187 | $payment->data->amount = new stdClass(); |
||
188 | $payment->data->amount->total = $this->getIfSet('total', $response->amount); |
||
189 | $payment->data->amount->currency = $this->getIfSet('currency', $response->amount); |
||
190 | $payment->data->installmentCount = $this->getIfSet('installmentCount', $response); |
||
191 | $payment->data->fundingInstrument = $this->getIfSet('fundingInstrument', $response); |
||
192 | $payment->data->payments = $this->getIfSet('payments', $response); |
||
193 | $payment->data->escrows = $this->getIfSet('escrows', $response); |
||
194 | $payment->data->fees = $this->getIfSet('fees', $response); |
||
195 | $payment->data->refunds = $this->getIfSet('refunds', $response); |
||
196 | $payment->data->_links = $this->getIfSet('_links', $response); |
||
197 | $payment->data->createdAt = $this->getIfSetDateTime('createdAt', $response); |
||
198 | $payment->data->updatedAt = $this->getIfSetDateTime('updatedAt', $response); |
||
199 | |||
200 | return $payment; |
||
201 | } |
||
202 | |||
203 | /** |
||
204 | * Refunds. |
||
205 | * |
||
206 | * @return Refund |
||
207 | */ |
||
208 | public function refunds() |
||
209 | { |
||
210 | $refund = new Refund($this->moip); |
||
211 | $refund->setPayment($this); |
||
212 | |||
213 | return $refund; |
||
214 | } |
||
215 | |||
216 | /** |
||
217 | * Escrows. |
||
218 | * |
||
219 | * @return Escrow |
||
220 | */ |
||
221 | public function escrows() |
||
222 | { |
||
223 | $escrow = new Escrow($this->moip); |
||
224 | $escrow->setId($this->getEscrow()->id); |
||
225 | |||
226 | return $escrow; |
||
227 | } |
||
228 | |||
229 | /** |
||
230 | * Get payment status. |
||
231 | * |
||
232 | * @return string Payment status. Possible values CREATED, WAITING, IN_ANALYSIS, PRE_AUTHORIZED, AUTHORIZED, CANCELLED, REFUNDED, REVERSED, SETTLED |
||
233 | */ |
||
234 | public function getStatus() |
||
235 | { |
||
236 | return $this->getIfSet('status'); |
||
237 | } |
||
238 | |||
239 | /** |
||
240 | * get creation time. |
||
241 | * |
||
242 | * @return \DateTime |
||
243 | */ |
||
244 | public function getCreatedAt() |
||
245 | { |
||
246 | return $this->data->createdAt; |
||
247 | } |
||
248 | |||
249 | /** |
||
250 | * Returns when the last update occurred. |
||
251 | * |
||
252 | * @return \DateTime |
||
253 | */ |
||
254 | public function getUpdatedAt() |
||
255 | { |
||
256 | return $this->data->updatedAt; |
||
257 | } |
||
258 | |||
259 | /** |
||
260 | * Returns the funding instrument. |
||
261 | * |
||
262 | * @return stdClass |
||
263 | */ |
||
264 | public function getFundingInstrument() |
||
265 | { |
||
266 | //todo: return a funding instrument object |
||
267 | return $this->data->fundingInstrument; |
||
268 | } |
||
269 | |||
270 | /** |
||
271 | * Get href to Boleto |
||
272 | * *. |
||
273 | * |
||
274 | * @return stdClass |
||
275 | */ |
||
276 | public function getHrefBoleto() |
||
277 | { |
||
278 | return $this->getIfSet('_links')->payBoleto->redirectHref; |
||
279 | } |
||
280 | |||
281 | /** |
||
282 | * Get LineCode to Boleto |
||
283 | * *. |
||
284 | * |
||
285 | * @return stdClass |
||
286 | */ |
||
287 | public function getLineCodeBoleto() |
||
288 | { |
||
289 | return $this->getIfSet('fundingInstrument')->boleto->lineCode; |
||
290 | } |
||
291 | |||
292 | /** |
||
293 | * Get href from print to Boleto |
||
294 | * *. |
||
295 | * |
||
296 | * @return stdClass |
||
297 | */ |
||
298 | public function getHrefPrintBoleto() |
||
299 | { |
||
300 | return $this->getIfSet('_links')->payBoleto->printHref; |
||
301 | } |
||
302 | |||
303 | /** |
||
304 | * Get Expirate Date to Boleto |
||
305 | * *. |
||
306 | * |
||
307 | * @return stdClass |
||
308 | */ |
||
309 | public function getExpirationDateBoleto() |
||
310 | { |
||
311 | return $this->getIfSet('fundingInstrument')->boleto->expirationDate; |
||
312 | } |
||
313 | |||
314 | /** |
||
315 | * Returns payment amount. |
||
316 | * |
||
317 | * @return stdClass |
||
318 | */ |
||
319 | public function getAmount() |
||
320 | { |
||
321 | return $this->data->amount; |
||
322 | } |
||
323 | |||
324 | /** |
||
325 | * Returns escrow. |
||
326 | * |
||
327 | * @return stdClass |
||
328 | */ |
||
329 | public function getEscrow() |
||
330 | { |
||
331 | return reset($this->data->escrows); |
||
332 | } |
||
333 | |||
334 | /** |
||
335 | * Returns order. |
||
336 | * |
||
337 | * @return Order |
||
338 | */ |
||
339 | public function getOrder() |
||
340 | { |
||
341 | return $this->order; |
||
342 | } |
||
343 | |||
344 | /** |
||
345 | * Returns installment count. |
||
346 | * |
||
347 | * @return stdClass |
||
348 | */ |
||
349 | public function getInstallmentCount() |
||
350 | { |
||
351 | return $this->data->installmentCount; |
||
352 | } |
||
353 | |||
354 | /** |
||
355 | * Get payments. |
||
356 | * |
||
357 | * @return array |
||
358 | */ |
||
359 | public function getPayments() |
||
360 | { |
||
361 | return $this->getIfSet('payments'); |
||
362 | } |
||
363 | |||
364 | /** |
||
365 | * Set means of payment. |
||
366 | * |
||
367 | * @param \stdClass $fundingInstrument |
||
368 | * |
||
369 | * @return $this |
||
370 | */ |
||
371 | public function setFundingInstrument(stdClass $fundingInstrument) |
||
372 | { |
||
373 | $this->data->fundingInstrument = $fundingInstrument; |
||
374 | |||
375 | return $this; |
||
376 | } |
||
377 | |||
378 | /** |
||
379 | * Set billet. |
||
380 | * |
||
381 | * @param \DateTime|string $expirationDate Expiration date of a billet. |
||
382 | * @param string $logoUri Logo of billet. |
||
383 | * @param array $instructionLines Instructions billet. |
||
384 | * |
||
385 | * @return $this |
||
386 | */ |
||
387 | public function setBoleto($expirationDate, $logoUri, array $instructionLines = []) |
||
388 | { |
||
389 | $keys = ['first', 'second', 'third']; |
||
390 | |||
391 | if (empty($instructionLines)) { |
||
392 | //Avoid warning in array_combine |
||
393 | $instructionLines = ['', '', '']; |
||
394 | } |
||
395 | |||
396 | if ($expirationDate instanceof \DateTime) { |
||
397 | $expirationDate = $expirationDate->format('Y-m-d'); |
||
398 | } |
||
399 | |||
400 | $this->data->fundingInstrument->method = self::METHOD_BOLETO; |
||
401 | $this->data->fundingInstrument->boleto = new stdClass(); |
||
402 | $this->data->fundingInstrument->boleto->expirationDate = $expirationDate; |
||
403 | $this->data->fundingInstrument->boleto->instructionLines = array_combine($keys, $instructionLines); |
||
404 | $this->data->fundingInstrument->boleto->logoUri = $logoUri; |
||
405 | |||
406 | return $this; |
||
407 | } |
||
408 | |||
409 | /** |
||
410 | * Set credit card holder. |
||
411 | * |
||
412 | * @param \Moip\Resource\Customer $holder |
||
413 | */ |
||
414 | private function setCreditCardHolder(Holder $holder) |
||
415 | { |
||
416 | $birthdate = $holder->getBirthDate(); |
||
417 | if ($birthdate instanceof \DateTime) { |
||
418 | $birthdate = $birthdate->format('Y-m-d'); |
||
419 | } |
||
420 | $this->data->fundingInstrument->creditCard->holder = new stdClass(); |
||
421 | $this->data->fundingInstrument->creditCard->holder->fullname = $holder->getFullname(); |
||
422 | $this->data->fundingInstrument->creditCard->holder->birthdate = $birthdate; |
||
423 | $this->data->fundingInstrument->creditCard->holder->taxDocument = new stdClass(); |
||
424 | $this->data->fundingInstrument->creditCard->holder->taxDocument->type = $holder->getTaxDocumentType(); |
||
425 | $this->data->fundingInstrument->creditCard->holder->taxDocument->number = $holder->getTaxDocumentNumber(); |
||
426 | $this->data->fundingInstrument->creditCard->holder->phone = new stdClass(); |
||
427 | $this->data->fundingInstrument->creditCard->holder->phone->countryCode = $holder->getPhoneCountryCode(); |
||
428 | $this->data->fundingInstrument->creditCard->holder->phone->areaCode = $holder->getPhoneAreaCode(); |
||
429 | $this->data->fundingInstrument->creditCard->holder->phone->number = $holder->getPhoneNumber(); |
||
430 | $this->data->fundingInstrument->creditCard->holder->billingAddress = $holder->getBillingAddress(); |
||
431 | } |
||
432 | |||
433 | /** |
||
434 | * Set credit cardHash. |
||
435 | * |
||
436 | * @param string $hash Credit card hash encripted using Moip.js |
||
437 | * @param \Moip\Resource\Customer $holder |
||
438 | * @param bool $store Flag to know if credit card should be saved. |
||
439 | * |
||
440 | * @return $this |
||
441 | */ |
||
442 | public function setCreditCardHash($hash, Holder $holder, $store = true) |
||
443 | { |
||
444 | $this->data->fundingInstrument->method = self::METHOD_CREDIT_CARD; |
||
445 | $this->data->fundingInstrument->creditCard = new stdClass(); |
||
446 | $this->data->fundingInstrument->creditCard->hash = $hash; |
||
447 | $this->data->fundingInstrument->creditCard->store = $store; |
||
448 | $this->setCreditCardHolder($holder); |
||
449 | |||
450 | return $this; |
||
451 | } |
||
452 | |||
453 | /** |
||
454 | * Set credit card |
||
455 | * Credit card used in a payment. |
||
456 | * The card when returned within a parent resource is presented in its minimum representation. |
||
457 | * |
||
458 | * @param int $expirationMonth Card expiration month |
||
459 | * @param int $expirationYear Year of card expiration. |
||
460 | * @param string $number Card number. |
||
461 | * @param int $cvc Card Security Code. |
||
462 | * @param \Moip\Resource\Customer $holder |
||
463 | * @param bool $store Flag to know if credit card should be saved. |
||
464 | * |
||
465 | * @return $this |
||
466 | */ |
||
467 | public function setCreditCard($expirationMonth, $expirationYear, $number, $cvc, Holder $holder, $store = true) |
||
468 | { |
||
469 | $this->data->fundingInstrument->method = self::METHOD_CREDIT_CARD; |
||
470 | $this->data->fundingInstrument->creditCard = new stdClass(); |
||
471 | $this->data->fundingInstrument->creditCard->expirationMonth = $expirationMonth; |
||
472 | $this->data->fundingInstrument->creditCard->expirationYear = $expirationYear; |
||
473 | $this->data->fundingInstrument->creditCard->number = $number; |
||
474 | $this->data->fundingInstrument->creditCard->cvc = $cvc; |
||
475 | $this->data->fundingInstrument->creditCard->store = $store; |
||
476 | $this->setCreditCardHolder($holder); |
||
477 | |||
478 | return $this; |
||
479 | } |
||
480 | |||
481 | /** |
||
482 | * Sets data from a previously saved credit card |
||
483 | * Credit card used in a payment. |
||
484 | * Used when the credit card was saved with the customer and the payment made in a future date. |
||
485 | * |
||
486 | * @param string $creditCardId MoIP's Credit Card Id. |
||
487 | * @param int $cvc Card Security Code. |
||
488 | * |
||
489 | * @return $this |
||
490 | */ |
||
491 | public function setCreditCardSaved($creditCardId, $cvc) |
||
492 | { |
||
493 | $this->data->fundingInstrument = new stdClass(); |
||
494 | $this->data->fundingInstrument->method = self::METHOD_CREDIT_CARD; |
||
495 | $this->data->fundingInstrument->creditCard = new stdClass(); |
||
496 | $this->data->fundingInstrument->creditCard->id = $creditCardId; |
||
497 | $this->data->fundingInstrument->creditCard->cvc = $cvc; |
||
498 | |||
499 | return $this; |
||
500 | } |
||
501 | |||
502 | /** |
||
503 | * Set installment count. |
||
504 | * |
||
505 | * @param int $installmentCount |
||
506 | * |
||
507 | * @return $this |
||
508 | */ |
||
509 | public function setInstallmentCount($installmentCount) |
||
510 | { |
||
511 | $this->data->installmentCount = $installmentCount; |
||
512 | |||
513 | return $this; |
||
514 | } |
||
515 | |||
516 | /** |
||
517 | * Set statement descriptor. |
||
518 | * |
||
519 | * @param string $statementDescriptor |
||
520 | * |
||
521 | * @return $this |
||
522 | */ |
||
523 | public function setStatementDescriptor($statementDescriptor) |
||
524 | { |
||
525 | $this->data->statementDescriptor = $statementDescriptor; |
||
526 | |||
527 | return $this; |
||
528 | } |
||
529 | |||
530 | /** |
||
531 | * Set payment means made available by banks. |
||
532 | * |
||
533 | * @param string $bankNumber Bank number. Possible values: 001, 237, 341, 041. |
||
534 | * @param \DateTime|string $expirationDate Date of expiration debit. |
||
535 | * @param string $returnUri Return Uri. |
||
536 | * |
||
537 | * @return $this |
||
538 | */ |
||
539 | public function setOnlineBankDebit($bankNumber, $expirationDate, $returnUri) |
||
540 | { |
||
541 | if ($expirationDate instanceof \DateTime) { |
||
542 | $expirationDate = $expirationDate->format('Y-m-d'); |
||
543 | } |
||
544 | $this->data->fundingInstrument->method = self::METHOD_ONLINE_BANK_DEBIT; |
||
545 | $this->data->fundingInstrument->onlineBankDebit = new stdClass(); |
||
546 | $this->data->fundingInstrument->onlineBankDebit->bankNumber = $bankNumber; |
||
547 | $this->data->fundingInstrument->onlineBankDebit->expirationDate = $expirationDate; |
||
548 | $this->data->fundingInstrument->onlineBankDebit->returnUri = $returnUri; |
||
549 | |||
550 | return $this; |
||
551 | } |
||
552 | |||
553 | /** |
||
554 | * Set Multiorders. |
||
555 | * |
||
556 | * @param \Moip\Resource\Multiorders $multiorder |
||
557 | * |
||
558 | * @return $this |
||
559 | */ |
||
560 | public function setMultiorder(Multiorders $multiorder) |
||
561 | { |
||
562 | $this->multiorder = $multiorder; |
||
563 | |||
564 | return $this; |
||
565 | } |
||
566 | |||
567 | /** |
||
568 | * Set order. |
||
569 | * |
||
570 | * @param \Moip\Resource\Orders $order |
||
571 | * |
||
572 | * @return $this |
||
573 | */ |
||
574 | public function setOrder(Orders $order) |
||
575 | { |
||
576 | $this->order = $order; |
||
577 | |||
578 | return $this; |
||
579 | } |
||
580 | |||
581 | /** |
||
582 | * Turns on a delay on credit card payment capture (pre-authorization). |
||
583 | * |
||
584 | * @return $this |
||
585 | */ |
||
586 | public function setDelayCapture() |
||
587 | { |
||
588 | $this->data->delayCapture = true; |
||
589 | |||
590 | return $this; |
||
591 | } |
||
592 | |||
593 | /** |
||
594 | * Set escrow to a payment. |
||
595 | * |
||
596 | * @param string $description |
||
597 | * |
||
598 | * @return $this |
||
599 | */ |
||
600 | public function setEscrow($description) |
||
601 | { |
||
602 | $this->data->escrow = new stdClass(); |
||
603 | $this->data->escrow->description = $description; |
||
604 | |||
605 | return $this; |
||
606 | } |
||
607 | |||
608 | /** |
||
609 | * Capture a pre-authorized amount on a credit card payment. |
||
610 | * |
||
611 | * @throws \Exception |
||
612 | * |
||
613 | * @return Payment |
||
614 | */ |
||
615 | View Code Duplication | public function capture() |
|
0 ignored issues
–
show
|
|||
616 | { |
||
617 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, self::PATH, $this->getId(), 'capture'); |
||
618 | if ($this->isMultipayment($this->getId())) { |
||
619 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, self::MULTI_PAYMENTS_PATH, $this->getId(), 'capture'); |
||
620 | } |
||
621 | |||
622 | $response = $this->httpRequest($path, Requests::POST, $this); |
||
623 | |||
624 | return $this->populate($response); |
||
625 | } |
||
626 | |||
627 | /** |
||
628 | * Cancel a pre-authorized amount on a credit card payment. |
||
629 | * |
||
630 | * @throws \Exception |
||
631 | * |
||
632 | * @return Payment |
||
633 | */ |
||
634 | View Code Duplication | public function cancel() |
|
0 ignored issues
–
show
This method seems to be duplicated in your project.
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation. You can also find more detailed suggestions in the “Code” section of your repository. ![]() |
|||
635 | { |
||
636 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, self::PATH, $this->getId(), 'void'); |
||
637 | if ($this->isMultipayment($this->getId())) { |
||
638 | $path = sprintf('/%s/%s/%s/%s', MoipResource::VERSION, self::MULTI_PAYMENTS_PATH, $this->getId(), 'void'); |
||
639 | } |
||
640 | |||
641 | $response = $this->httpRequest($path, Requests::POST, $this); |
||
642 | |||
643 | return $this->populate($response); |
||
644 | } |
||
645 | |||
646 | /** |
||
647 | * Cancel a pre-authorized amount on a credit card payment. |
||
648 | * |
||
649 | * @throws \Exception |
||
650 | * |
||
651 | * @return Payment |
||
652 | */ |
||
653 | public function avoid() |
||
654 | { |
||
655 | trigger_error('The function \'avoid\' is deprecated, use \'cancel\' instead', E_USER_NOTICE); |
||
656 | |||
657 | return $this->cancel(); |
||
658 | } |
||
659 | |||
660 | /** |
||
661 | * Authorize a payment (Available only in sandbox to credit card payment with status IN_ANALYSIS and billet payment with status WAITING). |
||
662 | * |
||
663 | * @return bool |
||
664 | */ |
||
665 | public function authorize($amount = null) |
||
666 | { |
||
667 | if (is_null($amount)) { |
||
668 | $amount = $this->getAmount()->total; |
||
669 | } |
||
670 | $path = sprintf('/%s/%s?payment_id=%s&amount=%s', self::SIMULATOR_PATH, 'authorize', $this->getId(), $amount); |
||
671 | $response = $this->httpRequest($path, Requests::GET); |
||
672 | |||
673 | if (empty($response)) { |
||
674 | return true; |
||
675 | } |
||
676 | |||
677 | return false; |
||
678 | } |
||
679 | |||
680 | private function isMultipayment($paymentId) |
||
681 | { |
||
682 | return 0 === strpos($paymentId, 'MPY'); |
||
683 | } |
||
684 | } |
||
685 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.