public Result<Terminal> CreateTerminal(TerminalCreateRequest terminalCreateRequest){
     List<string> validationErrs = ValidateCreate(terminalCreateRequest, new TerminalCreateValidator(),"terminalCreateRequestIsNull");
     if(validationErrs.Count>0){
         return new Result<Terminal>(validationErrs);
     }
     RestRequest request = new RestRequest(CREATE_TERMINAL_URL, Method.POST);
     var terminalJson = JsonConvert.SerializeObject(terminalCreateRequest);
     request.AddParameter(Constants.CONTENT_TYPE_JSON, terminalJson, ParameterType.RequestBody);
     var responseContent = Execute(request);
     TerminalResponse terminalResponse = JsonConvert.DeserializeObject<TerminalResponse>(responseContent);
     Result<Terminal> result = new Result<Terminal>(terminalResponse);
     return result;
 }
 public Result<Terminal> GetTerminal(long terminalId) {
     IList<string> validationErrs = ValidateId(terminalId, "terminalIdInvalid");
     if (validationErrs.Count > 0)
     {
         return new Result<Terminal>(validationErrs);
     }
     RestRequest request = new RestRequest(GET_TERMINAL_URL, Method.GET);
     request.AddUrlSegment("terminalId", terminalId);
     var responseContent = Execute(request);
     TerminalResponse terminalResponse = JsonConvert.DeserializeObject<TerminalResponse>(responseContent);
     Result<Terminal> result = new Result<Terminal>(terminalResponse);
     return result;
 }
Exemple #3
0
        public Result <Terminal> GetTerminal(long terminalId, bool includeDetailInfo)
        {
            IList <string> validationErrs = ValidateId(terminalId, "terminalIdInvalid");

            if (validationErrs.Count > 0)
            {
                return(new Result <Terminal>(validationErrs));
            }
            RestRequest request = new RestRequest(GET_TERMINAL_URL, Method.GET);

            request.AddUrlSegment(URL_SEGMENT_TERMINAL_ID, terminalId);
            request.AddParameter("includeDetailInfo", includeDetailInfo);
            var responseContent = Execute(request);
            TerminalResponse  terminalResponse = JsonConvert.DeserializeObject <TerminalResponse>(responseContent);
            Result <Terminal> result           = new Result <Terminal>(terminalResponse);

            return(result);
        }
Exemple #4
0
        public Result <Terminal> UpdateTerminal(long terminalId, TerminalUpdateRequest terminalUpdateRequest)
        {
            IList <string> validationErrs = ValidateUpdate(terminalId, terminalUpdateRequest, new TerminalUpdateValidator(), "terminalIdInvalid", "terminalUpdateRequestIsNull");

            if (validationErrs.Count > 0)
            {
                return(new Result <Terminal>(validationErrs));
            }
            RestRequest request      = new RestRequest(UPDATE_TERMINAL_URL, Method.PUT);
            var         terminalJson = JsonConvert.SerializeObject(terminalUpdateRequest);

            request.AddParameter(Constants.CONTENT_TYPE_JSON, terminalJson, ParameterType.RequestBody);
            request.AddUrlSegment("terminalId", terminalId);
            var responseContent = Execute(request);
            TerminalResponse  terminalResponse = JsonConvert.DeserializeObject <TerminalResponse>(responseContent);
            Result <Terminal> result           = new Result <Terminal>(terminalResponse);

            return(result);
        }
Exemple #5
0
        private void PrintReceipt(TerminalResponse response)
        {
            String receipt = "x_trans_type=" + response.TransactionType;

            receipt += "&x_application_label=" + response.ApplicationLabel;
            receipt += "&x_masked_card=" + response.MaskedCardNumber;
            receipt += "&x_application_id=" + response.ApplicationId;
            receipt += "&x_cryptogram_type=" + response.ApplicationCryptogramType;
            receipt += "&x_application_cryptogram=" + response.ApplicationCryptogram;
            receipt += "&x_expiration_date=" + response.ExpirationDate;
            receipt += "&x_entry_method=" + response.EntryMethod;
            receipt += "&x_approval=" + response.ApprovalCode;
            receipt += "&x_transaction_amount=" + response.TransactionAmount;
            receipt += "&x_amount_due=" + response.AmountDue;
            receipt += "&x_customer_verification_method=" + response.CardHolderVerificationMethod;
            receipt += "&x_signature_status=" + response.SignatureStatus;
            receipt += "&x_response_text=" + response.ResponseText;
            Debug.WriteLine(receipt);
        }
        public TerminalResponse GetTerminalDetails(TerminalRequest _request)
        {
            string url     = string.Concat(_baseUrl, "terminaldetails");
            var    client  = new RestClient(url);
            var    request = new RestSharp.RestRequest(Method.POST);

            request.AddHeader("content-type", "application/x-www-form-urlencoded");
            string param = JsonConvert.SerializeObject(_request);

            request.AddParameter("application/json", param, ParameterType.RequestBody);
            request.RequestFormat = DataFormat.Json;
            IRestResponse    response         = client.Execute(request);
            TerminalResponse terminalResponse = JsonConvert.DeserializeObject <TerminalResponse>(response.Content);

            if (terminalResponse == null || terminalResponse.ResponseCode == null)
            {
                return(null);
            }
            else
            {
                return(terminalResponse);
            }
        }
Exemple #7
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, ITerminalServiceFactory terminalFactory)
        {
            loggerFactory.AddConsole();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseWebSockets();
            app.Use(async(context, next) =>
            {
                var http = (HttpContext)context;

                if (http.WebSockets.IsWebSocketRequest)
                {
                    using (var webSocket = await http.WebSockets.AcceptWebSocketAsync())
                        using (var terminal = terminalFactory.CreateTerminalService())
                        {
                            terminal.OnRead = async(data) =>
                            {
                                var response = new TerminalResponse
                                {
                                    Type = TerminalResponseType.Text,
                                    Data = data
                                };

                                using (var stream = new MemoryStream())
                                {
                                    var serializer = new DataContractJsonSerializer(typeof(TerminalResponse));

                                    serializer.WriteObject(stream, response);
                                    var sendBuffer = stream.ToArray();

                                    await webSocket?.SendAsync(
                                        new ArraySegment <byte>(sendBuffer, 0, sendBuffer.Length),
                                        WebSocketMessageType.Text,
                                        true, CancellationToken.None);
                                }
                            };
                            terminal.OnError = async(data) =>
                            {
                                var response = new TerminalResponse
                                {
                                    Type = TerminalResponseType.Error,
                                    Data = data
                                };

                                using (var stream = new MemoryStream())
                                {
                                    var serializer = new DataContractJsonSerializer(typeof(TerminalResponse));

                                    serializer.WriteObject(stream, response);
                                    var sendBuffer = stream.ToArray();

                                    await webSocket?.SendAsync(
                                        new ArraySegment <byte>(sendBuffer, 0, sendBuffer.Length),
                                        WebSocketMessageType.Text,
                                        true, CancellationToken.None);
                                }
                            };
                            terminal.OnIdle = async() =>
                            {
                                var response = new TerminalResponse
                                {
                                    Type = TerminalResponseType.Idle
                                };

                                using (var stream = new MemoryStream())
                                {
                                    var serializer = new DataContractJsonSerializer(typeof(TerminalResponse));

                                    serializer.WriteObject(stream, response);
                                    var sendBuffer = stream.ToArray();

                                    await webSocket?.SendAsync(
                                        new ArraySegment <byte>(sendBuffer, 0, sendBuffer.Length),
                                        WebSocketMessageType.Text,
                                        true, CancellationToken.None);
                                }
                            };

                            await terminal.StartAsync();

                            var receiveBuffer = new byte[1024];
                            var received      = await webSocket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer), CancellationToken.None);

                            while (received.MessageType != WebSocketMessageType.Close)
                            {
                                var message = GetString(receiveBuffer.Take(received.Count).ToArray());
                                await terminal.WriteAsync(message);

                                received = await webSocket.ReceiveAsync(new ArraySegment <byte>(receiveBuffer), CancellationToken.None);
                            }

                            await webSocket.CloseAsync(received.CloseStatus.Value, received.CloseStatusDescription, CancellationToken.None);
                        }
                }
                else
                {
                    await next();
                }
            });

            app.UseDefaultFiles();
            app.UseStaticFiles();
        }
Exemple #8
0
        public static void PrintReceipt(TerminalResponse response)
        {
            // build receipt string
            Console.WriteLine("ABC RETAIL SHOP");
            Console.WriteLine("1 Heartland Way");
            Console.WriteLine("Jeffersonville, IN 47316");
            Console.WriteLine("888-798-3133");
            Console.WriteLine();
            Console.WriteLine(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss"));
            Console.WriteLine(response.TransactionType);
            Console.WriteLine();

            // EMV stuff
            if (!string.IsNullOrEmpty(response.ApplicationLabel))
            {
                Console.WriteLine("ACCT:     {0}", response.MaskedCardNumber);
                Console.WriteLine("APP NAME: {0}", response.ApplicationLabel);
                Console.WriteLine("AID:      {0}", response.ApplicationId);
                Console.WriteLine("{0}:      {1}", response.ApplicationCryptogramType, response.ApplicationCryptogram);
            }
            else
            {
                Console.WriteLine("ACCT:     {0}", response.MaskedCardNumber);
                Console.WriteLine("EXP:      ****");
            }
            Console.WriteLine("ENTRY:    {0}", response.EntryMethod);
            Console.WriteLine("APPROVAL: {0}", response.AuthorizationCode);
            Console.WriteLine();
            Console.WriteLine("TOTAL:    {0:c}", response.TransactionAmount);

            if (response.AmountDue != null && response.AmountDue != 0)
            {
                Console.WriteLine("AMOUNT DUE: {0:c}", response.AmountDue);
            }
            Console.WriteLine();
            Console.WriteLine();

            Action printSignature = () => {
                Console.WriteLine("I agree to pay the above total amount according to card issuer agreement");
                Console.WriteLine();
                Console.WriteLine();
                Console.WriteLine("X___________________________________");
                Console.WriteLine("SIGNATURE");
            };

            var signatureRequiredCvms = new List <string> {
                "3", "5", "6"
            };
            var signatureRequiredStatus = new List <string> {
                "2", "3", "6"
            };

            if (response.EntryMethod == "Chip")
            {
                var cvm = response.CardHolderVerificationMethod;
                if (signatureRequiredCvms.Contains(cvm))
                {
                    var sign_status = response.SignatureStatus ?? "0";
                    if (sign_status == "1" || sign_status == "5")
                    {
                        Console.WriteLine("Signature Captured Electronically");
                    }
                    else if (signatureRequiredStatus.Contains(sign_status))
                    {
                        printSignature();
                    }
                }
            }
            else
            {
                printSignature();
            }

            Console.WriteLine();
            Console.WriteLine(response.ResponseText);
            Console.WriteLine("MERCHANT COPY");
        }