Completed
Push — master ( 2af9d6...a100c3 )
by João Felipe Magro
04:21
created

TransactionResponseService::antifraud()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Ipag\Classes\Services;
4
5
use Ipag\Classes\Contracts\Populable;
6
use Ipag\Classes\Util\ObjectUtil;
7
use stdClass;
8
9
final class TransactionResponseService implements Populable
10
{
11
    /**
12
     * @var ObjectUtil
13
     */
14
    private $objectUtil;
15
16
    /**
17
     * @param stdClass $response
18
     *
19
     * @return stdClass
20
     */
21
    public function populate(stdClass $response)
22
    {
23
        $transaction = $this->transaction($response);
24
25
        if (isset($response->token)) {
26
            $transaction->creditCard = $this->creditCard($response);
27
        }
28
29
        if (isset($response->id_assinatura)) {
30
            $transaction->subscription = $this->subscription($response);
31
        }
32
33
        return $transaction;
34
    }
35
36
    private function getObjectUtil()
37
    {
38
        if (is_null($this->objectUtil)) {
39
            $this->objectUtil = new ObjectUtil();
40
        }
41
42
        return $this->objectUtil;
43
    }
44
45
    private function transaction(stdClass $response)
46
    {
47
        $transaction = new stdClass();
48
        $transaction->tid = $this->getObjectUtil()->getProperty($response, 'id_transacao');
49
        $transaction->amount = $this->getObjectUtil()->getProperty($response, 'valor');
50
        $transaction->acquirer = $this->getObjectUtil()->getProperty($response, 'operadora');
51
        $transaction->acquirerMessage = $this->getObjectUtil()->getProperty($response, 'operadora_mensagem');
52
        $transaction->urlAuthentication = $this->getObjectUtil()->getProperty($response, 'url_autenticacao');
53
        $transaction->payment = $this->payment($response);
54
        $transaction->order = $this->order($response);
55
        $transaction->antifraud = $this->antifraud($response);
56
57
        $transaction->error = $this->getObjectUtil()->getProperty($response, 'code');
58
        $transaction->errorMessage = $this->getObjectUtil()->getProperty($response, 'message');
59
60
        return $transaction;
61
    }
62
63
    private function payment(stdClass $response)
64
    {
65
        $payment = new stdClass();
66
        $payment->status = $this->getObjectUtil()->getProperty($response, 'status_pagamento');
67
        $payment->message = $this->getObjectUtil()->getProperty($response, 'mensagem_transacao');
68
69
        return $payment;
70
    }
71
72
    private function order(stdClass $response)
73
    {
74
        $order = new stdClass();
75
        $order->orderId = $this->getObjectUtil()->getProperty($response, 'num_pedido');
76
77
        return $order;
78
    }
79
80
    private function creditCard(stdClass $response)
81
    {
82
        $creditCard = new stdClass();
83
        $creditCard->token = $this->getObjectUtil()->getProperty($response, 'token');
84
        $creditCard->last4 = $this->getObjectUtil()->getProperty($response, 'last4');
85
        $creditCard->expiryMonth = $this->getObjectUtil()->getProperty($response, 'mes');
86
        $creditCard->expiryYear = $this->getObjectUtil()->getProperty($response, 'ano');
87
88
        return $creditCard;
89
    }
90
91
    private function subscription(stdClass $response)
92
    {
93
        $subscription = new stdClass();
94
        $subscription->id = $this->getObjectUtil()->getProperty($response, 'id_assinatura');
95
        $subscription->profileId = $this->getObjectUtil()->getProperty($response, 'profile_id');
96
97
        return $subscription;
98
    }
99
100
    private function antifraud(stdClass $response)
101
    {
102
        $antifraud = new stdClass();
103
        $antifraud->id = $this->getObjectUtil()->getProperty($response, 'af_id');
104
        $antifraud->score = $this->getObjectUtil()->getProperty($response, 'af_score');
105
        $antifraud->status = $this->getObjectUtil()->getProperty($response, 'af_status');
106
        $antifraud->message = $this->getObjectUtil()->getProperty($response, 'af_message');
107
108
        return $antifraud;
109
    }
110
}
111