diff --git a/src/Event/TransactionEvent.php b/src/Event/TransactionEvent.php
deleted file mode 100644
index 7119b82..0000000
--- a/src/Event/TransactionEvent.php
+++ /dev/null
@@ -1,99 +0,0 @@
-request = $request;
- $this->response = $response;
- $this->transactionType = $transactionType;
- $this->exception = $exception;
- }
-
- /**
- * @param \Exception $exception
- */
- public function setException($exception)
- {
- $this->exception = $exception;
- }
-
- /**
- * @return \Exception
- */
- public function getException()
- {
- return $this->exception;
- }
-
- /**
- * @param \Paranoia\Request $request
- */
- public function setRequest($request)
- {
- $this->request = $request;
- }
-
- /**
- * @return \Paranoia\Request
- */
- public function getRequest()
- {
- return $this->request;
- }
-
- /**
- * @param \Paranoia\Response\ResponseInterface $response
- */
- public function setResponse($response)
- {
- $this->response = $response;
- }
-
- /**
- * @return \Paranoia\Response\ResponseInterface
- */
- public function getResponse()
- {
- return $this->response;
- }
-
- /**
- * @param string $transactionType
- */
- public function setTransactionType($transactionType)
- {
- $this->transactionType = $transactionType;
- }
-
- /**
- * @return string
- */
- public function getTransactionType()
- {
- return $this->transactionType;
- }
-}
diff --git a/src/Pos/AbstractPos.php b/src/Pos/AbstractPos.php
index 99db0e3..c02c7c2 100644
--- a/src/Pos/AbstractPos.php
+++ b/src/Pos/AbstractPos.php
@@ -7,6 +7,7 @@
use Paranoia\Exception\CommunicationError;
use Paranoia\Request;
use Paranoia\TransactionType;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
abstract class AbstractPos
{
@@ -15,6 +16,8 @@ abstract class AbstractPos
*/
protected $configuration;
+ /** @var EventDispatcherInterface */
+ private $dispatcher;
public function __construct(AbstractConfiguration $configuration)
{
@@ -68,6 +71,14 @@ protected function sendRequest($url, $data, $options = null)
}
}
+ private function performTransaction(Request $request, $transactionType)
+ {
+ $rawRequest = $this->buildRequest($request, $transactionType);
+ $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
+ $response = $this->parseResponse($rawResponse, $transactionType);
+ return $response;
+ }
+
/**
* @param \Paranoia\Request $request
*
@@ -75,10 +86,7 @@ protected function sendRequest($url, $data, $options = null)
*/
public function preAuthorization(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::PRE_AUTHORIZATION);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::PRE_AUTHORIZATION);
- return $response;
+ return $this->performTransaction($request, TransactionType::PRE_AUTHORIZATION);
}
/**
@@ -88,10 +96,7 @@ public function preAuthorization(Request $request)
*/
public function postAuthorization(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::POST_AUTHORIZATION);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::POST_AUTHORIZATION);
- return $response;
+ return $this->performTransaction($request, TransactionType::POST_AUTHORIZATION);
}
/**
@@ -101,10 +106,7 @@ public function postAuthorization(Request $request)
*/
public function sale(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::SALE);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::SALE);
- return $response;
+ return $this->performTransaction($request, TransactionType::SALE);
}
/**
@@ -114,10 +116,7 @@ public function sale(Request $request)
*/
public function refund(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::REFUND);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::REFUND);
- return $response;
+ return $this->performTransaction($request, TransactionType::REFUND);
}
/**
@@ -127,10 +126,7 @@ public function refund(Request $request)
*/
public function cancel(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::CANCEL);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::CANCEL);
- return $response;
+ return $this->performTransaction($request, TransactionType::CANCEL);
}
/**
@@ -140,10 +136,7 @@ public function cancel(Request $request)
*/
public function pointQuery(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::POINT_INQUIRY);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::POINT_INQUIRY);
- return $response;
+ return $this->performTransaction($request, TransactionType::POINT_INQUIRY);
}
/**
@@ -153,9 +146,6 @@ public function pointQuery(Request $request)
*/
public function pointUsage(Request $request)
{
- $rawRequest = $this->buildRequest($request, TransactionType::POINT_USAGE);
- $rawResponse = $this->sendRequest($this->configuration->getApiUrl(), $rawRequest);
- $response = $this->parseResponse($rawResponse, TransactionType::POINT_USAGE);
- return $response;
+ return $this->performTransaction($request, TransactionType::POINT_USAGE);
}
}
diff --git a/src/Processor/Gvp/BaseResponseProcessor.php b/src/Processor/Gvp/BaseResponseProcessor.php
index c1989db..c66d46a 100644
--- a/src/Processor/Gvp/BaseResponseProcessor.php
+++ b/src/Processor/Gvp/BaseResponseProcessor.php
@@ -36,8 +36,19 @@ private function prepareErrorDetails(\SimpleXMLElement $xml, PaymentResponse $re
*/
private function prepareTransactionDetails(\SimpleXMLElement $xml, PaymentResponse $response)
{
- $response->setOrderId((string)$xml->Order->OrderID);
- $response->setTransactionId((string)$xml->Transaction->RetrefNum);
+ if (property_exists($xml, 'Order') && property_exists($xml->Order, 'OrderID')) {
+ $response->setOrderId((string)$xml->Order->OrderID);
+ }
+
+ if (property_exists($xml, 'Transaction')) {
+ if (property_exists($xml->Transaction, 'RetrefNum')) {
+ $response->setTransactionId((string)$xml->Transaction->RetrefNum);
+ }
+
+ if (property_exists($xml->Transaction, 'AuthCode')) {
+ $response->setAuthCode((string)$xml->Transaction->AuthCode);
+ }
+ }
}
/**
@@ -57,7 +68,7 @@ protected function processCommonResponse($rawResponse)
}
$this->validateResponse($xml);
$response->setIsSuccess('00' == (string)$xml->Transaction->Response->Code);
- $response->setResponseCode((string)$xml->Transaction->ReasonCode);
+ $response->setResponseCode((string)$xml->Transaction->Response->ReasonCode);
if (!$response->isSuccess()) {
$this->prepareErrorDetails($xml, $response);
} else {
diff --git a/src/Processor/Posnet/BaseResponseProcessor.php b/src/Processor/Posnet/BaseResponseProcessor.php
index 9bea6c0..5ca3fe1 100644
--- a/src/Processor/Posnet/BaseResponseProcessor.php
+++ b/src/Processor/Posnet/BaseResponseProcessor.php
@@ -13,13 +13,12 @@ abstract class BaseResponseProcessor extends AbstractResponseProcessor
*/
private function prepareErrorDetails(\SimpleXMLElement $xml, PaymentResponse $response)
{
- $response->setResponseCode((string)$xml->respCode);
$errorMessages = array();
if (property_exists($xml, 'respCode')) {
- $errorMessages[] = sprintf('Error: %s', (string)$xml->respCode);
+ $response->setResponseCode((string)$xml->respCode);
}
if (property_exists($xml, 'respText')) {
- $errorMessages[] = sprintf('Error Message: %s ', (string)$xml->respText);
+ $errorMessages[] = sprintf('%s ', (string)$xml->respText);
}
$errorMessage = implode(' ', $errorMessages);
$response->setResponseMessage($errorMessage);
@@ -36,7 +35,7 @@ private function prepareTransactionDetails(\SimpleXMLElement $xml, PaymentRespon
}
$response->setTransactionId((string)$xml->hostlogkey);
if (property_exists($xml, 'authCode')) {
- $response->setOrderId((string)$xml->authCode);
+ $response->setAuthCode((string)$xml->authCode);
}
}
diff --git a/tests/Processor/Gvp/CancelResponseProcessorTest.php b/tests/Processor/Gvp/CancelResponseProcessorTest.php
new file mode 100644
index 0000000..9490b66
--- /dev/null
+++ b/tests/Processor/Gvp/CancelResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('311616674771', $response->getTransactionId());
+ $this->assertEquals('489787', $response->getAuthCode());
+ $this->assertEquals('1476', $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/gvp/cancel_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0202', $response->getResponseCode());
+ $this->assertEquals('Error Message: ›ptal edebileceiniz birden fazla i˛lem var, RRN bilgisi gonderi System Error Message: ErrorId: 0202', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Gvp/PostAuthorizationResponseProcessorTest.php b/tests/Processor/Gvp/PostAuthorizationResponseProcessorTest.php
new file mode 100644
index 0000000..0596ac4
--- /dev/null
+++ b/tests/Processor/Gvp/PostAuthorizationResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('105809652539', $response->getTransactionId());
+ $this->assertEquals('914729', $response->getAuthCode());
+ $this->assertEquals('SIST2E8748F43EA24754912E365D637B91D8', $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/gvp/post_authorization_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('54', $response->getResponseCode());
+ $this->assertEquals('Error Message: ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz System Error Message: SON KULLANMA TARIHI HATALI', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Gvp/PreAuthorizationResponseProcessorTest.php b/tests/Processor/Gvp/PreAuthorizationResponseProcessorTest.php
new file mode 100644
index 0000000..f4b5db1
--- /dev/null
+++ b/tests/Processor/Gvp/PreAuthorizationResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('311710676052', $response->getTransactionId());
+ $this->assertEquals('412290', $response->getAuthCode());
+ $this->assertEquals('SISTFA03907C0DB14A38B3BA380722891160', $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/gvp/pre_authorization_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('54', $response->getResponseCode());
+ $this->assertEquals('Error Message: ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz System Error Message: SON KULLANMA TARIHI HATALI', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Gvp/RefundResponseProcessorTest.php b/tests/Processor/Gvp/RefundResponseProcessorTest.php
new file mode 100644
index 0000000..a4163ea
--- /dev/null
+++ b/tests/Processor/Gvp/RefundResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('311616674771', $response->getTransactionId());
+ $this->assertEquals('489787', $response->getAuthCode());
+ $this->assertEquals('1476', $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/gvp/refund_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0214', $response->getResponseCode());
+ $this->assertEquals('Error Message: ›ade tutar˝, sat˝˛ tutar˝ndan b¸y¸k olamaz System Error Message: ErrorId: 0214', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Gvp/SaleResponseProcessorTest.php b/tests/Processor/Gvp/SaleResponseProcessorTest.php
new file mode 100644
index 0000000..5475673
--- /dev/null
+++ b/tests/Processor/Gvp/SaleResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('311710676028', $response->getTransactionId());
+ $this->assertEquals('245093', $response->getAuthCode());
+ $this->assertEquals('SISTC157B93B81C74BB88C6CA1C15D0CA338', $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/gvp/sale_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('54', $response->getResponseCode());
+ $this->assertEquals('Error Message: ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz System Error Message: SON KULLANMA TARIHI HATALI', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Posnet/CancelResponseProcessorTest.php b/tests/Processor/Posnet/CancelResponseProcessorTest.php
new file mode 100644
index 0000000..42f10a5
--- /dev/null
+++ b/tests/Processor/Posnet/CancelResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('0001000009P0503281', $response->getTransactionId());
+ $this->assertEquals('000000', $response->getAuthCode());
+ $this->assertEquals(null, $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/posnet/cancel_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0225', $response->getResponseCode());
+ $this->assertEquals('ONAYLANMADI:0225 ISL. YAPILAMIY 0225 ', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new CancelResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Posnet/PostAuthorizationResponseProcessorTest.php b/tests/Processor/Posnet/PostAuthorizationResponseProcessorTest.php
new file mode 100644
index 0000000..5eaab1a
--- /dev/null
+++ b/tests/Processor/Posnet/PostAuthorizationResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('0001000004P0503281', $response->getTransactionId());
+ $this->assertEquals('007912', $response->getAuthCode());
+ $this->assertEquals(null, $response->getOrderId()); // Posnet does not provide orderId
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/posnet/post_authorization_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0225', $response->getResponseCode());
+ $this->assertEquals('ONAYLANMADI:0225 ISL. YAPILAMIY 0225 ', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PostAuthorizationResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Posnet/PreAuthorizationResponseProcessorTest.php b/tests/Processor/Posnet/PreAuthorizationResponseProcessorTest.php
new file mode 100644
index 0000000..9ffef22
--- /dev/null
+++ b/tests/Processor/Posnet/PreAuthorizationResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('0001000004P0503281', $response->getTransactionId());
+ $this->assertEquals('007912', $response->getAuthCode());
+ $this->assertEquals(null, $response->getOrderId()); // Posnet does not provide orderId
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/posnet/pre_authorization_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0225', $response->getResponseCode());
+ $this->assertEquals('ONAYLANMADI:0225 ISL. YAPILAMIY 0225 ', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new PreAuthorizationResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Posnet/RefundResponseProcessorTest.php b/tests/Processor/Posnet/RefundResponseProcessorTest.php
new file mode 100644
index 0000000..dba2239
--- /dev/null
+++ b/tests/Processor/Posnet/RefundResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('0001000004P0503281', $response->getTransactionId());
+ $this->assertEquals('007912', $response->getAuthCode());
+ $this->assertEquals(null, $response->getOrderId());
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/posnet/refund_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0225', $response->getResponseCode());
+ $this->assertEquals('ONAYLANMADI:0225 ISL. YAPILAMIY 0225 ', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new RefundResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/Processor/Posnet/SaleResponseProcessorTest.php b/tests/Processor/Posnet/SaleResponseProcessorTest.php
new file mode 100644
index 0000000..aec24c5
--- /dev/null
+++ b/tests/Processor/Posnet/SaleResponseProcessorTest.php
@@ -0,0 +1,71 @@
+getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(true, $response->isSuccess());
+ $this->assertEquals('0001000004P0503281', $response->getTransactionId());
+ $this->assertEquals('007912', $response->getAuthCode());
+ $this->assertEquals(null, $response->getOrderId()); // Posnet does not provide orderId
+ }
+
+ public function test_failed_response()
+ {
+ $rawResponse = file_get_contents(
+ __DIR__ . '/../../samples/response/posnet/sale_failed.xml'
+ );
+
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+ $response = $processor->process($rawResponse);
+ $this->assertInstanceOf(PaymentResponse::class, $response);
+ $this->assertEquals(false, $response->isSuccess());
+ $this->assertEquals(null, $response->getTransactionId());
+ $this->assertEquals(null, $response->getOrderId());
+ $this->assertEquals('0225', $response->getResponseCode());
+ $this->assertEquals('ONAYLANMADI:0225 ISL. YAPILAMIY 0225 ', $response->getResponseMessage());
+ }
+
+ /**
+ * @dataProvider badResponses
+ * @param string $rawResponse
+ */
+ public function test_bad_response($rawResponse)
+ {
+ /** @var AbstractConfiguration $configuration */
+ $configuration = $this->getMockBuilder(AbstractConfiguration::class)->getMock();
+ $processor = new SaleResponseProcessor($configuration);
+
+ $this->expectException(BadResponseException::class);
+ $processor->process($rawResponse);
+ }
+
+ public function badResponses()
+ {
+ return [
+ [null],
+ [''],
+ ['DUMMY'],
+ [1],
+ ];
+ }
+
+}
diff --git a/tests/samples/response/gvp/cancel_failed.xml b/tests/samples/response/gvp/cancel_failed.xml
new file mode 100644
index 0000000..508b5d5
--- /dev/null
+++ b/tests/samples/response/gvp/cancel_failed.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVRFN
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ 1476
+
+
+
+
+
+ 92
+ 0202
+ Declined
+ ›ptal edebileceiniz birden fazla i˛lem var, RRN bilgisi gonderi
+ ErrorId: 0202
+
+ 311617674819
+
+ 000008
+ 000038
+ 20130426 17:16:51
+ 554960******3012
+
+
+ 6FD41A05196DB5EB6145D6DF1720F881DCC9AAB9
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/samples/response/gvp/cancel_successful.xml b/tests/samples/response/gvp/cancel_successful.xml
new file mode 100644
index 0000000..83063e0
--- /dev/null
+++ b/tests/samples/response/gvp/cancel_successful.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVRFN
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ 1476
+
+
+
+
+
+ 00
+ 00
+ Approved
+
+
+
+ 311616674771
+ 489787
+ 000008
+ 000029
+ 20130426 16:55:31
+ 554960******3012
+
+ BONUS
+ D73C3E2106BCAD517CB1F7C20ECF3B8279C14868
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/samples/response/gvp/post_authorization_failed.xml b/tests/samples/response/gvp/post_authorization_failed.xml
new file mode 100644
index 0000000..6c64214
--- /dev/null
+++ b/tests/samples/response/gvp/post_authorization_failed.xml
@@ -0,0 +1,31 @@
+
+
+
+
+ SISTE20C15E38F1446AF92DABFB4059E87F6
+
+
+
+
+
+ 54
+ 54
+ Declined
+ ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz
+ SON KULLANMA TARIHI HATALI
+
+ 105809652540
+
+ 000574
+ 000510
+ 20110227 09:40:48
+
+ HA*** YIL***
+ 8D8E2BE7FC080AD985CA0506C50479035FC2C206
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/samples/response/gvp/post_authorization_successful.xml b/tests/samples/response/gvp/post_authorization_successful.xml
new file mode 100644
index 0000000..995000e
--- /dev/null
+++ b/tests/samples/response/gvp/post_authorization_successful.xml
@@ -0,0 +1,32 @@
+
+
+
+
+ SIST2E8748F43EA24754912E365D637B91D8
+
+
+
+
+
+ 00
+ 00
+ Approved
+
+
+
+ 105809652539
+ 914729
+ 000574
+ 000509
+ 20110227 09:26:12
+
+ HA*** YIL***
+ 6F39EA85C6A5BBA9040F40FA7C8F199C70D7343A
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/samples/response/gvp/pre_authorization_failed.xml b/tests/samples/response/gvp/pre_authorization_failed.xml
new file mode 100644
index 0000000..6813506
--- /dev/null
+++ b/tests/samples/response/gvp/pre_authorization_failed.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVAUT
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ SISTF94AC1AC943B4FE8BBB8B20FB82FA7BB
+
+
+
+
+
+ 54
+ 54
+ Declined
+ ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz
+ SON KULLANMA TARIHI HATALI
+
+ 311710676031
+
+ 000008
+ 000052
+ 20130427 10:26:04
+ 554960******3012
+ PE*** PEL** TON***
+ BONUS
+ D2F5BA37A98C5DDDC34B28FA56FF03FC782713BD
+
+
+
+
+
+
+
diff --git a/tests/samples/response/gvp/pre_authorization_successful.xml b/tests/samples/response/gvp/pre_authorization_successful.xml
new file mode 100644
index 0000000..614dbf4
--- /dev/null
+++ b/tests/samples/response/gvp/pre_authorization_successful.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVAUT
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ SISTFA03907C0DB14A38B3BA380722891160
+
+
+
+
+
+ 00
+ 00
+ Approved
+
+
+
+ 311710676052
+ 412290
+ 000008
+ 000057
+ 20130427 10:40:07
+ 554960******3012
+ PE*** PEL** TON***
+ BONUS
+ 70FB1A7B9C874498FF2A5874EA6DEF7A17C2E7A5
+
+
+
+
+
+
+
diff --git a/tests/samples/response/gvp/refund_failed.xml b/tests/samples/response/gvp/refund_failed.xml
new file mode 100644
index 0000000..09e0fdd
--- /dev/null
+++ b/tests/samples/response/gvp/refund_failed.xml
@@ -0,0 +1,35 @@
+
+
+
+
+ PROVRFN
+ XXXX
+ 30691292
+ 3424113
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+ 1476
+
+
+
+
+ 92
+ 0214
+ Declined
+ ›ade tutar˝, sat˝˛ tutar˝ndan b¸y¸k olamaz
+ ErrorId: 0214
+ 311616674775
+
+ 000008
+ 000030
+ 20130426 16:56:35
+
+
+
+ 34F10F1DAAA651C8B7AF421BEB8E497794E27851
+
+
+
+
diff --git a/tests/samples/response/gvp/refund_successful.xml b/tests/samples/response/gvp/refund_successful.xml
new file mode 100644
index 0000000..fb041a1
--- /dev/null
+++ b/tests/samples/response/gvp/refund_successful.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVRFN
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ 1476
+
+
+
+
+
+ 00
+ 00
+ Approved
+
+
+
+ 311616674771
+ 489787
+ 000008
+ 000029
+ 20130426 16:55:31
+ 554960******3012
+
+ BONUS
+ D73C3E2106BCAD517CB1F7C20ECF3B8279C14868
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/samples/response/gvp/sale_failed.xml b/tests/samples/response/gvp/sale_failed.xml
new file mode 100644
index 0000000..6813506
--- /dev/null
+++ b/tests/samples/response/gvp/sale_failed.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVAUT
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ SISTF94AC1AC943B4FE8BBB8B20FB82FA7BB
+
+
+
+
+
+ 54
+ 54
+ Declined
+ ›˛leminizi gerÁekle˛tiremiyoruz.Tekrar deneyiniz
+ SON KULLANMA TARIHI HATALI
+
+ 311710676031
+
+ 000008
+ 000052
+ 20130427 10:26:04
+ 554960******3012
+ PE*** PEL** TON***
+ BONUS
+ D2F5BA37A98C5DDDC34B28FA56FF03FC782713BD
+
+
+
+
+
+
+
diff --git a/tests/samples/response/gvp/sale_successful.xml b/tests/samples/response/gvp/sale_successful.xml
new file mode 100644
index 0000000..93356e2
--- /dev/null
+++ b/tests/samples/response/gvp/sale_successful.xml
@@ -0,0 +1,42 @@
+
+
+
+
+ PROVAUT
+ XXXX
+ 30691292
+ 3424113
+
+
+ 127.0.0.1
+ eticaret@garanti.com.tr
+
+
+ SISTC157B93B81C74BB88C6CA1C15D0CA338
+
+
+
+
+
+ 00
+ 00
+ Approved
+
+
+
+ 311710676028
+ 245093
+ 000008
+ 000051
+ 20130427 10:24:26
+ 554960******3012
+ PE*** PEL** TON***
+ BONUS
+ 8B4BCA794C748337183EA62D75F901549541C95C
+
+
+
+
+
+
+
diff --git a/tests/samples/response/posnet/cancel_failed.xml b/tests/samples/response/posnet/cancel_failed.xml
new file mode 100644
index 0000000..e37c080
--- /dev/null
+++ b/tests/samples/response/posnet/cancel_failed.xml
@@ -0,0 +1,6 @@
+
+
+ 0
+ 0225
+ ONAYLANMADI:0225 ISL. YAPILAMIY 0225
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/cancel_successful.xml b/tests/samples/response/posnet/cancel_successful.xml
new file mode 100644
index 0000000..cd2e4fd
--- /dev/null
+++ b/tests/samples/response/posnet/cancel_successful.xml
@@ -0,0 +1,6 @@
+
+
+ 1
+ 0001000009P0503281
+ 000000
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/post_authorization_failed.xml b/tests/samples/response/posnet/post_authorization_failed.xml
new file mode 100644
index 0000000..e37c080
--- /dev/null
+++ b/tests/samples/response/posnet/post_authorization_failed.xml
@@ -0,0 +1,6 @@
+
+
+ 0
+ 0225
+ ONAYLANMADI:0225 ISL. YAPILAMIY 0225
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/post_authorization_successful.xml b/tests/samples/response/posnet/post_authorization_successful.xml
new file mode 100644
index 0000000..c120978
--- /dev/null
+++ b/tests/samples/response/posnet/post_authorization_successful.xml
@@ -0,0 +1,39 @@
+
+
+ 1
+ 0001000004P0503281
+ 007912
+
+
+ 050531135646
+
+
+
+ 03
+
+
+ 000000005000
+
+
+
+
+ 00000010
+
+
+ 000000000005
+
+
+ 00011742
+
+
+ 000000005871
+
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/pre_authorization_failed.xml b/tests/samples/response/posnet/pre_authorization_failed.xml
new file mode 100644
index 0000000..e37c080
--- /dev/null
+++ b/tests/samples/response/posnet/pre_authorization_failed.xml
@@ -0,0 +1,6 @@
+
+
+ 0
+ 0225
+ ONAYLANMADI:0225 ISL. YAPILAMIY 0225
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/pre_authorization_successful.xml b/tests/samples/response/posnet/pre_authorization_successful.xml
new file mode 100644
index 0000000..c120978
--- /dev/null
+++ b/tests/samples/response/posnet/pre_authorization_successful.xml
@@ -0,0 +1,39 @@
+
+
+ 1
+ 0001000004P0503281
+ 007912
+
+
+ 050531135646
+
+
+
+ 03
+
+
+ 000000005000
+
+
+
+
+ 00000010
+
+
+ 000000000005
+
+
+ 00011742
+
+
+ 000000005871
+
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/refund_failed.xml b/tests/samples/response/posnet/refund_failed.xml
new file mode 100644
index 0000000..e37c080
--- /dev/null
+++ b/tests/samples/response/posnet/refund_failed.xml
@@ -0,0 +1,6 @@
+
+
+ 0
+ 0225
+ ONAYLANMADI:0225 ISL. YAPILAMIY 0225
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/refund_successful.xml b/tests/samples/response/posnet/refund_successful.xml
new file mode 100644
index 0000000..c120978
--- /dev/null
+++ b/tests/samples/response/posnet/refund_successful.xml
@@ -0,0 +1,39 @@
+
+
+ 1
+ 0001000004P0503281
+ 007912
+
+
+ 050531135646
+
+
+
+ 03
+
+
+ 000000005000
+
+
+
+
+ 00000010
+
+
+ 000000000005
+
+
+ 00011742
+
+
+ 000000005871
+
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/sale_failed.xml b/tests/samples/response/posnet/sale_failed.xml
new file mode 100644
index 0000000..e37c080
--- /dev/null
+++ b/tests/samples/response/posnet/sale_failed.xml
@@ -0,0 +1,6 @@
+
+
+ 0
+ 0225
+ ONAYLANMADI:0225 ISL. YAPILAMIY 0225
+
\ No newline at end of file
diff --git a/tests/samples/response/posnet/sale_successful.xml b/tests/samples/response/posnet/sale_successful.xml
new file mode 100644
index 0000000..c120978
--- /dev/null
+++ b/tests/samples/response/posnet/sale_successful.xml
@@ -0,0 +1,39 @@
+
+
+ 1
+ 0001000004P0503281
+ 007912
+
+
+ 050531135646
+
+
+
+ 03
+
+
+ 000000005000
+
+
+
+
+ 00000010
+
+
+ 000000000005
+
+
+ 00011742
+
+
+ 000000005871
+
+
\ No newline at end of file