Ejemplo n.º 1
0
        public makeRequest GetOrderForPayment(int orderId)
        {
            var order = _context.Orders.Find(orderId);

            if (order == null)
            {
                return(null);
            }

            var request = new makeRequest()
            {
                orderId     = orderId.ToString(),
                amount      = order.OrderSum,
                callbackUrl = "http://localhost:50548/User/Home/PaymentCallBack",
                description = "پرداخت آزمایشی",
                merchant    = "zibal"
            };

            return(request);
        }
Ejemplo n.º 2
0
        public makeRequest_response RequestForPayment(makeRequest request)
        {
            try
            {
                string url = "https://gateway.zibal.ir/v1/request";                                                     // url

                var httpResponse = HttpRequestToZibal(url, JsonConvert.SerializeObject(request));                       // get Response
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))                           // make stream reader
                {
                    var responseText = streamReader.ReadToEnd();                                                        // read Response
                    makeRequest_response response = JsonConvert.DeserializeObject <makeRequest_response>(responseText); // Deserilize as response class object
                    // you can access track id with item.trackId , result with item.result and message with item.message
                    // in asp.net you can use Response.Redirect("https://gateway.zibal.ir/start/item.trackId"); for start gateway and redirect to third-party gateway page
                    // also you can use Response.Redirect("https://gateway.zibal.ir/start/item.trackId/direct"); for start gateway page directly

                    return(response);
                }
            }
            catch
            {
                return(null);
            }
        }
Ejemplo n.º 3
0
        private static void Main(string[] args)
        {
            req_builder  builder = req_bytes;
            resp_builder br      = resp_bytes;
            makeRequest  call    = makePipeRequest;

            for (int i = 0; i < args.Length; i++)
            {
                string o = args[i];
                if (o == "-m")
                {
                    string      s = args[i + 1];
                    makeRequest makeWindowsMessageRequest = null;
                    makeRequest makeSharedMemoryRequest   = null;
                    switch (s)
                    {
                    case "pipes":
                        call = makePipeRequest;
                        break;

                    case "messaging":
                        call = makeWindowsMessageRequest;
                        break;

                    case "rpc":
                        call = makeRpcRequest;
                        break;

                    case "wcf":
                        call = makeWcfRequest;
                        break;

                    default:
                        call = makeSharedMemoryRequest;
                        break;
                    }
                }
                if (o == "-d")
                {
                    string      s       = args[i + 1];
                    req_builder req_msg = null;
                    builder = s == "bytes" ? req_bytes : (s == "object" ? req_obj : req_msg);
                    resp_builder resp_msg = null;
                    br = s == "bytes" ? resp_bytes : (s == "object" ? resp_obj : resp_msg);
                }
                if (o == "-r")
                {
                    reuse = true;
                }
                if (o == "-o")
                {
                    oneway = true;
                }
            }

            if (reuse)
            {
                if (call == makePipeRequest)
                {
                    while (!WaitNamedPipe(pipe_name, 1))
                    {
                    }
                }
                if (call == makeRpcRequest)
                {
                    init_rpc();
                }
                if (call == makeWcfRequest)
                {
                    init_wcf();
                }
            }
            byte[] req;
            uint   real_size = 0;

            byte[] response;
            uint   resp_size = 0;

            if (!oneway)
            {
                init_reqs(req_size100, 5000, 10);
                init_reqs(req_size50, 2500, 10);
                init_reqs(req_size10, 500, 10);
                init_reqs(req_size1, 50, 10);
                init_reqs(req_size0_1, 5, 10);
            }
            builder(req_size100, out req, out real_size);
            for (int i = 0; i < 5; i++)
            {
                call(req_size100, builder, br, out response, out resp_size);
            }

            var sw = new Reportwatch();

            sw.Lang = ReportwatchLangs.Markdown;
            sw.SetMode("REAL_TIME");



            Console.WriteLine("Client started");


            var msr100 = "Client process requests ~100kb and gets ~1000kb response of server process";
            var msr50  = "Client process requests ~50kb and gets ~500kb response of server process";
            var msr10  = "Client process requests ~10kb and gets ~100kb response  of server process";
            var msr1   = "Client process requests ~1kb and gets ~10kb response  of server process";
            var msr0_1 = "Client process requests ~0.1kb and gets ~1kb response  of server process";

            builder(req_size100, out req, out real_size);
            Console.WriteLine("Request size :" + real_size / kb + " kb");
            for (int i = 0; i < 5; i++)
            {
                sw.Start(msr100);
                call(req_size100, builder, br, out response, out resp_size);
                sw.Stop(msr100);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");


            builder(req_size50, out req, out real_size);
            Console.WriteLine("Request size :" + real_size / kb + " kb");
            for (int i = 0; i < 10; i++)
            {
                sw.Start(msr50);
                call(req_size50, builder, br, out response, out resp_size);
                sw.Stop(msr50);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");

            builder(req_size10, out req, out real_size);
            Console.WriteLine("Message size :" + real_size / kb + " kb");
            for (int i = 0; i < 50; i++)
            {
                sw.Start(msr10);
                call(req_size10, builder, br, out response, out resp_size);
                sw.Stop(msr10);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");

            builder(req_size1, out req, out real_size);
            Console.WriteLine("Message size :" + real_size + " bytes");
            for (int i = 0; i < 500; i++)
            {
                //Sleep(1);
                //BUG: sometimes hangs here when pipes used....
                sw.Start(msr1);
                call(req_size1, builder, br, out response, out resp_size);
                sw.Stop(msr1);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");


            builder(req_size0_1, out req, out real_size);
            Console.WriteLine("Message size :" + real_size + " bytes");
            for (int i = 0; i < 1000; i++)
            {//BUG: server of shared memory crashes if make number of 10000
                //Sleep(1);
                //BUG: sometimes hangs here when pipes used....
                sw.Start(msr0_1);
                call(req_size0_1, builder, br, out response, out resp_size);
                sw.Stop(msr0_1);
            }
            Console.WriteLine("Response size was :" + resp_size + " bytes");


            builder(req_size100, out req, out real_size);
            Console.WriteLine("Request size :" + real_size / kb + " kb");
            for (int i = 0; i < 5; i++)
            {
                sw.Start(msr100);
                call(req_size100, builder, br, out response, out resp_size);
                sw.Stop(msr100);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");


            builder(req_size50, out req, out real_size);
            Console.WriteLine("Request size :" + real_size / kb + " kb");
            for (int i = 0; i < 10; i++)
            {
                sw.Start(msr50);
                call(req_size50, builder, br, out response, out resp_size);
                sw.Stop(msr50);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");

            builder(req_size10, out req, out real_size);
            Console.WriteLine("Message size :" + real_size / kb + " kb");
            for (int i = 0; i < 50; i++)
            {
                sw.Start(msr10);
                call(req_size10, builder, br, out response, out resp_size);
                sw.Stop(msr10);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");

            builder(req_size1, out req, out real_size);
            Console.WriteLine("Message size :" + real_size + " bytes");
            for (int i = 0; i < 500; i++)
            {
                //Sleep(1);
                //BUG: sometimes hangs here when pipes used....
                sw.Start(msr1);
                call(req_size1, builder, br, out response, out resp_size);
                sw.Stop(msr1);
            }
            Console.WriteLine("Response size was :" + resp_size / kb + " kb");


            builder(req_size0_1, out req, out real_size);
            Console.WriteLine("Message size :" + real_size + " bytes");
            for (int i = 0; i < 1000; i++)
            {//BUG: server of shared memory crashes if make number of 10000
                //Sleep(1);
                //BUG: sometimes hangs here when pipes used....
                sw.Start(msr0_1);
                call(req_size0_1, builder, br, out response, out resp_size);
                sw.Stop(msr0_1);
            }
            Console.WriteLine("Response size was :" + resp_size + " bytes");


            //TODO: make assertion of response

            sw.Report(msr100);
            sw.Report(msr50);
            sw.Report(msr10);
            sw.Report(msr1);
            sw.Report(msr0_1);

            Console.ReadKey();
        }