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; }
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); }
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); }
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); } }
// 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(); }
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"); }