public CommitResponse AddOrder(OrderRequest orderRequest) { try { if (IsMeteleUsaMerchant(orderRequest.MerchantId))//Test purposes return new CommitResponse { Status = 201, ErrorMessage = "You cannot add orders from this source!" }; var validationResult = ValidateOrder(orderRequest); if (validationResult.Status != 200) return validationResult; var paxTerminalRequest = MapOrderToPaxTerminalRequest(orderRequest); if (paxTerminalRequest == null) { return new CommitResponse { ErrorMessage = "The Order has some invalid arguments", Status = 201, }; } var response = _blackstonePosService.AddOrderForPaxTerminal(paxTerminalRequest); return new CommitResponse { ErrorMessage = response.ErrorMessage, Status = response.Status, Ticket = response.Data.ToString() //It should bring back the Order Number }; } catch (Exception exception) { var errorMessage = exception.Message; if (exception is CustomException) { var customException = exception as CustomException; _logger.Debug(string.Format("Operation:AddOrder,Error Message:{3}, Parameters:MerchantId:{0}," + "TerminalId:{1},SerialNumber:{2}", customException.MerchantId, customException.TerminalId, customException.SerialNumber, customException.Message)); errorMessage = customException.Message; } return new CommitResponse { ErrorMessage = "Errors trying to Add new Order. " + errorMessage, Status = 201, }; } }
private void ValidateRequestKey(OrderRequest orderRequest) { var requestKeyAssertion = Infrastructure.Utils.Md5Hash(orderRequest.MerchantId.ToString() + orderRequest.TerminalId.ToString() + orderRequest.OrderDate); if(!orderRequest.RequestKey.Equals(requestKeyAssertion)) throw new InvalidSerialException(orderRequest.MerchantId.ToString(),orderRequest.TerminalId.ToString(), orderRequest.SerialNumber); }
private CommitResponse ValidateOrder(OrderRequest orderRequest) { try { //Checking credentials ValidateCredentials(orderRequest); var errorMessage = _blackstonePosService.ValidatePosAddOrderRequest(orderRequest); return new CommitResponse { ErrorMessage = string.IsNullOrEmpty(errorMessage) ? string.Empty : "The Order has some invalid arguments. " + errorMessage, Status = string.IsNullOrEmpty(errorMessage) ? 200: 201, }; } catch (Exception exception) { return new CommitResponse { ErrorMessage = exception.Message, Status = 201 }; } }
private void ValidateCredentials(OrderRequest orderRequest) { switch (orderRequest.SystemType) { case SystemType.Pax: { _blackstonePosService.CheckCredentials(orderRequest.MerchantId, orderRequest.TerminalId, orderRequest.SerialNumber); break; } case SystemType.Tnb: { ValidateRequestKey(orderRequest); break; } //Pending for Joel to send the System Type default: { _blackstonePosService.CheckCredentials(orderRequest.MerchantId, orderRequest.TerminalId, orderRequest.SerialNumber); break; } } }
private PaxTerminalTransactionRequest MapOrderToPaxTerminalRequest(OrderRequest request) { try { var paxTerminalTransactionResult = new PaxTerminalTransactionRequest { AccountNumber = request.AccountNumber, AddInfo1 = request.AddInfo1, AddInfo2 = request.AddInfo2, AltAccountNumber = request.AltAccountNumber, CashierId = request.MerchantId.ToString(), Country = request.CountryCode, CustomerName = request.CustomerName, Fee = request.Fee, LicensePlate = request.LicensePlate, OrderDate = request.OrderDate!= null? DateTime.Parse(request.OrderDate): DateTime.Now, PaymentKeyWord = request.PaymentKeyWord, PhoneNumber = request.PhoneNumber, ProductId = request.ProductMainCode, SenderName = request.SenderName, PurchaseId = request.PurchaseId, SerialNumber = request.SerialNumber, TerminalId = request.TerminalId.ToString(), TotalAmount = request.Amount.ToString(), VendorId = request.VendorId }; return paxTerminalTransactionResult; } catch (Exception exception) { return null; } }
public CommitResponse AddOrderTest() { var newOrderRequest = new OrderRequest { ProductMainCode = "300595", Amount = 2, Fee = 0, OrderDate = "7/16/2015 3:19:10 PM", SerialNumber = "01234567890ABCDEF", MerchantId = 834, TerminalId = 10000642 }; var result = AddOrder(newOrderRequest); return result; }