diff --git a/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs b/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs index c583ad6..9e17570 100644 --- a/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs +++ b/TransactionProcessorACL.BusinessLogic/Services/TransactionProcessorACLApplicationService.cs @@ -50,16 +50,30 @@ public async Task ProcessLogonTransaction(Guid { TypeNameHandling = TypeNameHandling.All }); + ProcessLogonTransactionResponse response = new ProcessLogonTransactionResponse(); - SerialisedMessage responseSerialisedMessage = await this.TransactionProcessorClient.PerformTransaction(accessToken.AccessToken, requestSerialisedMessage, cancellationToken); + try + { + SerialisedMessage responseSerialisedMessage = + await this.TransactionProcessorClient.PerformTransaction(accessToken.AccessToken, requestSerialisedMessage, cancellationToken); - LogonTransactionResponse logonTransactionResponse = JsonConvert.DeserializeObject(responseSerialisedMessage.SerialisedData); + LogonTransactionResponse logonTransactionResponse = JsonConvert.DeserializeObject(responseSerialisedMessage.SerialisedData); - ProcessLogonTransactionResponse response = new ProcessLogonTransactionResponse - { - ResponseCode = logonTransactionResponse.ResponseCode, - ResponseMessage = logonTransactionResponse.ResponseMessage - }; + response = new ProcessLogonTransactionResponse + { + ResponseCode = logonTransactionResponse.ResponseCode, + ResponseMessage = logonTransactionResponse.ResponseMessage + }; + } + catch(Exception ex) + { + if (ex.InnerException is InvalidOperationException) + { + // This means there is an error in the request + response.ResponseCode = "0001"; // Request Message error + response.ResponseMessage = ex.InnerException.Message; + } + } return response; } diff --git a/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature b/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature index 6972f51..a6bc1ae 100644 --- a/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature +++ b/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature @@ -67,7 +67,6 @@ Scenario: Logon Transaction | DateTime | TransactionNumber | TransactionType | MerchantName | IMEINumber | EstateName | | Today | 3 | Logon | Test Merchant 3 | 123456789 | Test Estate 2 | - # TODO: Add in once the logon flow is implemented Then transaction response should contain the following information | EstateName | MerchantName | TransactionNumber | TransactionType | ResponseCode | ResponseMessage | | Test Estate 1 | Test Merchant 1 | 1 | Logon | 0000 | SUCCESS | diff --git a/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs b/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs index 7309617..1768ea1 100644 --- a/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs +++ b/TransactionProcessorACL.IntegrationTests/LogonTransaction/LogonTransaction.feature.cs @@ -406,7 +406,7 @@ public virtual void LogonTransaction() "Logon", "0000", "SUCCESS"}); -#line 71 +#line 70 testRunner.Then("transaction response should contain the following information", ((string)(null)), table13, "Then "); #line hidden }