Beispiel #1
0
        private async Task <bool> SendRequest(EFTPayAtTableRequest request)
        {
            bool result = false;

            try
            {
                _logger.Log("Sending request...");
                result = await eft.WriteRequestAsync(request);
            }
            catch (Exception ex)
            {
                _logger.Log(ex.Message, LogType.ERROR);
                result = false;
            }

            return(result);
        }
Beispiel #2
0
        async Task HandleRequest(POSAPIMsg message, Func <PATResponse> func)
        {
            _logger.Log($"Processing {message.Header.RequestType} {message.Header.RequestMethod}");

            // Get content
            ResponseCode rc      = ResponseCode.Ok;
            string       content = null;

            try
            {
                PATResponse patResponse = func.Invoke();
                content = JsonConvert.SerializeObject(patResponse);
            }
            catch (InvalidRequestException ex)
            {
                _logger.Log(ex.Message, LogType.ERROR);
                rc = ResponseCode.BadRequest;
            }
            catch (ResourceNotFoundException ex)
            {
                _logger.Log(ex.Message, LogType.ERROR);
                rc = ResponseCode.NotFound;
            }
            catch (Exception ex)
            {
                _logger.Log(ex.Message, LogType.ERROR);
                rc = ResponseCode.ServerError;
            }

            // Build response
            POSAPIMsg resp = new POSAPIMsg()
            {
                Header = new POSAPIMsgHeader()
                {
                    RequestMethod = message.Header.RequestMethod,
                    RequestType   = message.Header.RequestType,
                    ResponseCode  = content != null ? ResponseCode.Ok : rc,
                    ContentLength = content?.Length ?? 0
                },
                Content = content
            };

            var respString = resp.ToString();

            _logger.Log(new LogData(respString, $"TX (Building request): {respString}"));

            try
            {
                // build eft request
                EFTPayAtTableRequest eftRequest = new EFTPayAtTableRequest();
                eftRequest.Header  = resp.Header.ToString();
                eftRequest.Content = resp.Content;

                await SendRequest(eftRequest);
            }
            catch (Exception ex)
            {
                _logger.Log(ex.Message, LogType.ERROR);
                throw;
            }
        }