buildTransaction()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 12
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
namespace Paranoia\Builder\Gvp;
3
4
use Paranoia\Common\Serializer\Serializer;
5
use Paranoia\Configuration\Gvp;
6
use Paranoia\Request\Request;
7
8
class PostAuthorizationRequestBuilder extends BaseRequestBuilder
9
{
10
    const TRANSACTION_TYPE = 'postauth';
11
    const ENVELOPE_NAME    = 'GVPSRequest';
12
13
    public function build(Request $request)
14
    {
15
        $data = $this->buildBaseRequest($request);
16
17
        $serializer = new Serializer(Serializer::XML);
18
        return $serializer->serialize($data, ['root_name' => self::ENVELOPE_NAME]);
19
    }
20
21
    protected function buildTransaction(Request $request)
22
    {
23
        return [
24
            'Type'                  => self::TRANSACTION_TYPE,
25
            'Amount'                => $this->amountFormatter->format($request->getAmount()),
26
            'CurrencyCode'          => $this->currencyCodeFormatter->format($request->getCurrency()),
27
28
            #TODO: Will be changed after 3D integration
29
            'CardholderPresentCode' => self::CARD_HOLDER_PRESENT_CODE_NON_3D,
30
31
            'MotoInd'               => 'N',
32
            'OriginalRetrefNum'     => $request->getTransactionId(),
33
        ];
34
    }
35
36
    protected function getCredentialPair()
37
    {
38
        /** @var Gvp $configuration */
39
        $configuration = $this->configuration;
40
        return [$configuration->getAuthorizationUsername(), $configuration->getAuthorizationPassword()];
41
    }
42
43
    protected function buildHash(Request $request, $password)
44
    {
45
        /** @var Gvp $configuration */
46
        $configuration = $this->configuration;
47
        return strtoupper(
48
            sha1(
49
                sprintf(
50
                    '%s%s%s%s',
51
                    $request->getOrderId(),
52
                    $configuration->getTerminalId(),
53
                    $this->amountFormatter->format($request->getAmount()),
54
                    $this->generateSecurityHash($password)
55
                )
56
            )
57
        );
58
    }
59
}
60