1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using Newtonsoft.Json;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- namespace BankServer
- {
- class Program
- {
- static void Main(string[] args)
- {
- Listen();
- Console.Read();
- }
- public static async Task<string> Pay(HttpListenerContext context, HttpListenerRequest request)
- {
- StreamReader reader = new StreamReader(request.InputStream, Encoding.UTF8);
- string Json = await reader.ReadToEndAsync();
- DataOfPayment dataOfPayment = JsonConvert.DeserializeObject<DataOfPayment>(Json);
- HttpListenerResponse response = context.Response;
- byte[] buffer;
- if (dataOfPayment.PIN == "0000")
- {
- buffer = Encoding.UTF8.GetBytes("Отклонено.Код транзакции: 00000000 - 000000. Неверный PIN.");
- response.ContentLength64 = buffer.Length;
- Stream outputErrorePIN = response.OutputStream;
- outputErrorePIN.Write(buffer, 0, buffer.Length);
- outputErrorePIN.Close();
- return buffer.ToString();
- }
- if (dataOfPayment.PriceRefueling > dataOfPayment.Balance)
- {
- buffer = Encoding.UTF8.GetBytes("Отклонено.Код транзакции: 00000000 - 000000. Не достаточно средств.");
- response.ContentLength64 = buffer.Length;
- Stream outputErroreBalance = response.OutputStream;
- outputErroreBalance.Write(buffer, 0, buffer.Length);
- outputErroreBalance.Close();
- return buffer.ToString();
- }
- buffer = Encoding.UTF8.GetBytes($"Одобрено. Код транзакции: {DateTime.Now.ToString("ddMMyyyy - hhmmss")}") ;
- response.ContentLength64 = buffer.Length;
- Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- output.Close();
- return buffer.ToString();
- }
- public static async void Listen()
- {
- HttpListener listener = new HttpListener();
- listener.Prefixes.Add("http://127.0.0.1:8081/");
- listener.Start();
- Console.WriteLine("Ожидание подключений");
- while (true)
- {
- HttpListenerContext context = await listener.GetContextAsync();
- HttpListenerRequest request = context.Request;
- if (request.RawUrl.Contains("/pay") && request.HttpMethod == "POST")
- {
- string State = await Pay(context, request);
- Console.WriteLine(State);
- }
- if (request.RawUrl.Contains("/refund") && request.HttpMethod == "POST")
- {
- HttpListenerResponse response = context.Response;
- byte[] buffer = Encoding.UTF8.GetBytes($"Средства возвращены.");
- response.ContentLength64 = buffer.Length;
- Stream output = response.OutputStream;
- output.Write(buffer, 0, buffer.Length);
- output.Close();
- }
- }
- }
- }
- }
|