Skip to content

Commit 6b97fbd

Browse files
committed
Refactor PR 128 for adding tests.
1 parent de5eb0c commit 6b97fbd

File tree

1 file changed

+44
-46
lines changed

1 file changed

+44
-46
lines changed

src/Message/SIMCompleteAuthorizeRequest.php

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function getTransactionId()
2121
public function getData()
2222
{
2323
// The hash sent in the callback from the Authorize.Net gateway.
24-
$hash_posted = $this->getPostedHash($this->httpRequest);
24+
$hash_posted = $this->getPostedHash();
2525

2626
// The transaction reference generated by the Authorize.Net gateway and sent in the callback.
2727
$posted_transaction_reference = $this->httpRequest->request->get('x_trans_id');
@@ -30,7 +30,7 @@ public function getData()
3030
$posted_amount = $this->httpRequest->request->get('x_amount');
3131

3232
// Calculate the hash locally, using the shared "hash secret" and login ID.
33-
$hash_calculated = $this->getHash($posted_transaction_reference, $posted_amount, $this->httpRequest);
33+
$hash_calculated = $this->getHash($posted_transaction_reference, $posted_amount);
3434

3535
if ($hash_posted !== $hash_calculated) {
3636
// If the hash is incorrect, then we can't trust the source nor anything sent.
@@ -68,10 +68,10 @@ public function getData()
6868
* @param $httpRequest
6969
* @return string
7070
*/
71-
public function getHash($transaction_reference, $amount, $httpRequest)
71+
public function getHash($transaction_reference, $amount)
7272
{
73-
if (!empty($httpRequest) && $hash = $this->getSha512Hash($httpRequest)) {
74-
return $hash;
73+
if ($this->getSignatureKey()) {
74+
return $this->getSha512Hash();
7575
} else {
7676
return $this->getMd5Hash($transaction_reference, $amount);
7777
}
@@ -98,48 +98,51 @@ public function getMd5Hash($transaction_reference, $amount)
9898

9999
/**
100100
* Generate sha512 hash.
101-
* Required fields are provided in Table 18 in https://www.authorize.net/content/dam/authorize/documents/SIM_guide.pdf#page=73
101+
* Required fields are provided in Table 18 in
102+
* https://www.authorize.net/content/dam/authorize/documents/SIM_guide.pdf#page=73
102103
* @param $httpRequest
103104
* @return string|null
104105
*/
105-
public function getSha512Hash($httpRequest)
106+
public function getSha512Hash()
106107
{
107108
$signatureKey = $this->getSignatureKey();
108-
if (empty($signatureKey) || empty($httpRequest)) {
109+
$httpRequest = $this->httpRequest->request;
110+
111+
if (empty($signatureKey)) {
109112
return null;
110113
}
111114

112115
$hashData = implode('^', [
113-
$httpRequest->request->get('x_trans_id'),
114-
$httpRequest->request->get('x_test_request'),
115-
$httpRequest->request->get('x_response_code'),
116-
$httpRequest->request->get('x_auth_code'),
117-
$httpRequest->request->get('x_cvv2_resp_code'),
118-
$httpRequest->request->get('x_cavv_response'),
119-
$httpRequest->request->get('x_avs_code'),
120-
$httpRequest->request->get('x_method'),
121-
$httpRequest->request->get('x_account_number'),
122-
$httpRequest->request->get('x_amount'),
123-
$httpRequest->request->get('x_company'),
124-
$httpRequest->request->get('x_first_name'),
125-
$httpRequest->request->get('x_last_name'),
126-
$httpRequest->request->get('x_address'),
127-
$httpRequest->request->get('x_city'),
128-
$httpRequest->request->get('x_state'),
129-
$httpRequest->request->get('x_zip'),
130-
$httpRequest->request->get('x_country'),
131-
$httpRequest->request->get('x_phone'),
132-
$httpRequest->request->get('x_fax'),
133-
$httpRequest->request->get('x_email'),
134-
$httpRequest->request->get('x_ship_to_company'),
135-
$httpRequest->request->get('x_ship_to_first_name'),
136-
$httpRequest->request->get('x_ship_to_last_name'),
137-
$httpRequest->request->get('x_ship_to_address'),
138-
$httpRequest->request->get('x_ship_to_city'),
139-
$httpRequest->request->get('x_ship_to_state'),
140-
$httpRequest->request->get('x_ship_to_zip'),
141-
$httpRequest->request->get('x_ship_to_country'),
142-
$httpRequest->request->get('x_invoice_num'),
116+
$httpRequest->get('x_trans_id'),
117+
$httpRequest->get('x_test_request'),
118+
$httpRequest->get('x_response_code'),
119+
$httpRequest->get('x_auth_code'),
120+
$httpRequest->get('x_cvv2_resp_code'),
121+
$httpRequest->get('x_cavv_response'),
122+
$httpRequest->get('x_avs_code'),
123+
$httpRequest->get('x_method'),
124+
$httpRequest->get('x_account_number'),
125+
$httpRequest->get('x_amount'),
126+
$httpRequest->get('x_company'),
127+
$httpRequest->get('x_first_name'),
128+
$httpRequest->get('x_last_name'),
129+
$httpRequest->get('x_address'),
130+
$httpRequest->get('x_city'),
131+
$httpRequest->get('x_state'),
132+
$httpRequest->get('x_zip'),
133+
$httpRequest->get('x_country'),
134+
$httpRequest->get('x_phone'),
135+
$httpRequest->get('x_fax'),
136+
$httpRequest->get('x_email'),
137+
$httpRequest->get('x_ship_to_company'),
138+
$httpRequest->get('x_ship_to_first_name'),
139+
$httpRequest->get('x_ship_to_last_name'),
140+
$httpRequest->get('x_ship_to_address'),
141+
$httpRequest->get('x_ship_to_city'),
142+
$httpRequest->get('x_ship_to_state'),
143+
$httpRequest->get('x_ship_to_zip'),
144+
$httpRequest->get('x_ship_to_country'),
145+
$httpRequest->get('x_invoice_num'),
143146
]);
144147
$hash = hash_hmac('sha512', '^' . $hashData . '^', hex2bin($signatureKey));
145148
$hash = strtoupper($hash);
@@ -150,20 +153,15 @@ public function getSha512Hash($httpRequest)
150153
/**
151154
* Get posted hash from the callback from the Authorize.Net gateway.
152155
*
153-
* @param $httpRequest
154156
* @return string|null
155157
*/
156-
public function getPostedHash($httpRequest)
158+
public function getPostedHash()
157159
{
158-
if (empty($httpRequest)){
159-
return null;
160-
}
161-
162160
if ($signatureKey = $this->getSignatureKey()) {
163-
return strtoupper($httpRequest->request->get('x_SHA2_Hash'));
161+
return strtoupper($this->httpRequest->request->get('x_SHA2_Hash'));
164162
}
165163

166-
return strtolower($httpRequest->request->get('x_MD5_Hash'));
164+
return strtolower($this->httpRequest->request->get('x_MD5_Hash'));
167165
}
168166

169167
public function sendData($data)

0 commit comments

Comments
 (0)