CancelRequestBuilder::buildHash()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

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