Skip to content

Commit

Permalink
Merge pull request #37 from sudiptpa/fix/adding-exception
Browse files Browse the repository at this point in the history
Added Invalidfingerprint Exception with support to grab returned Data.
  • Loading branch information
sudiptpa authored Dec 7, 2022
2 parents 6d09188 + 203f3b3 commit ed55a99
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 9 deletions.
20 changes: 20 additions & 0 deletions src/Exception/InvalidFingerprintException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Omnipay\NABTransact\Exception;

class InvalidFingerprintException extends \Exception implements \Omnipay\Common\Exception\OmnipayException
{
private $data = [];

public function __construct($message, $data = [])
{
$this->data = $data;

parent::__construct($message);
}

public function getData()
{
return $this->data;
}
}
10 changes: 7 additions & 3 deletions src/Message/DirectPostCompletePurchaseRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Omnipay\NABTransact\Message;

use Omnipay\Common\Exception\InvalidRequestException;
use Omnipay\NABTransact\Exception\InvalidFingerprintException;

/**
* NABTransact Direct Post Complete Purchase Request.
Expand All @@ -13,8 +13,12 @@ public function getData()
{
$data = $this->httpRequest->query->all();

if ($this->generateResponseFingerprint($data) !== $this->httpRequest->query->get('fingerprint')) {
throw new InvalidRequestException('Invalid fingerprint');
$received_fingerprint = $this->httpRequest->query->get('fingerprint');

$generated_fingerprint = $this->generateResponseFingerprint($data);

if ($generated_fingerprint !== $received_fingerprint) {
throw new InvalidFingerprintException('Invalid fingerprint', $data);
}

return $data;
Expand Down
2 changes: 1 addition & 1 deletion tests/Message/DirectPostAuthorizeRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public function testFingerprint()
$data = $this->request->getData();
$data['EPS_TIMESTAMP'] = '20161126053143';

$this->assertSame('687bb11413254824e3f854be330b5b5f2efaaf6d', $this->request->generateFingerprint($data));
$this->assertSame('a748577a6fe6fbbda744a4df9e36595bd1a9bcaefc88f360ea60126c93ffc042', $this->request->generateFingerprint($data));
}

public function testSend()
Expand Down
6 changes: 3 additions & 3 deletions tests/Message/DirectPostCompletePurchaseRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public function testGenerateResponseFingerprint()
];

$this->assertSame(
'79200d1df5dc3f914a90ce476fdef317d224629f',
'56dc3f5dc4473d66138913317e743ea208e205a3be1abdd6515b5c5578a58f38',
$this->request->generateResponseFingerprint($data)
);
}
Expand All @@ -47,7 +47,7 @@ public function testSuccess()
[
'timestamp' => '20161125130241',
'callback_status_code' => '-1',
'fingerprint' => 'e30eb8381bc41201fbdf54a021d8228a3fbb6a6f',
'fingerprint' => '796a4f3ac07d04f2336188ffe5a4befeb9fcb6f756061d4e42a30f228cda420e',
'txnid' => '271337',
'merchant' => 'XYZ0010',
'restext' => 'Approved',
Expand Down Expand Up @@ -84,7 +84,7 @@ public function testFailure()
$this->getHttpRequest()->query->replace([
'timestamp' => '20161126051715',
'callback_status_code' => '404',
'fingerprint' => 'cd75e2ef38cf63a2fa390024539acc7691eebc1d',
'fingerprint' => 'd94853f8c8d1bc1b21978f64cc866d824d2feca61224afb9a4e31a9c286d0008',
'txnid' => '274279',
'merchant' => 'XYZ0010',
'restext' => 'Customer Dispute',
Expand Down
2 changes: 1 addition & 1 deletion tests/Message/DirectPostPurchaseRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function testFingerprint()
$data['EPS_TIMESTAMP'] = '20161125123332';

$this->assertSame(
'cbb64e71e360dba6337f22a00bdf0d0b89a7a568',
'8d0ca8e666d5e83f8ce9b0d661dafd2328b1c3c58e8a3118cdab2feef9bfaac5',
$this->request->generateFingerprint($data)
);
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Message/UnionPayPurchaseRequestTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public function testFingerprint()
$data['EPS_TIMESTAMP'] = '20161125123332';

$this->assertSame(
'36e686feef0ec7a53d5b6289707bc47e4bb83c95',
'a44c4e30e838b34bfbcbe89495f50c1527c1c2c4229960b8d9de159fb5a99f20',
$this->request->generateFingerprint($data)
);
}
Expand Down

0 comments on commit ed55a99

Please sign in to comment.