Beispiel #1
0
        public IActionResult Payment(int id)
        {
            var product = TestDatabase.GetById(id);

            var request = new ZarinpalModel.Payment.Request
            {
                MerchantId  = TestMerchantIdV1,
                Amount      = product.Amount, // V1 in Toman
                CallbackUrl = $"{Request.Scheme}://{Request.Host}/Home/Callback/{product.Id}",
                Description = $"Pay for {product.Name} product."
            };

            var response = RestApi.PaymentRequest(request);

            if (response.Status == 100)
            {
                //For debug and test.
                return(Redirect($"https://sandbox.zarinpal.com/pg/StartPay/{response.Authority}"));

                //For publish.
                //return Redirect($"https://www.zarinpal.com/pg/StartPay/{response.Authority}");
            }

            TempData["Message"] = response.Status;
            return(View("Index"));
        }
Beispiel #2
0
        private static readonly string BaseUrl        = "https://sandbox.zarinpal.com";//For debug and test.
        //private static readonly string BaseUrl = "https://www.zarinpal.com";//For publish.

        public static ZarinpalModel.Payment.Response PaymentRequest(ZarinpalModel.Payment.Request request)
        {
            HttpClient.DefaultRequestHeaders.Accept.Clear();
            HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpClient.DefaultRequestHeaders.Add("User-Agent", "ZarinPal Rest Api v1");

            var serializeObject = JsonConvert.SerializeObject(request);

            var stringContent = new StringContent(serializeObject, Encoding.UTF8, "application/json");

            var httpResponseMessage = HttpClient.PostAsync($"{BaseUrl}/pg/rest/WebGate/PaymentRequest.json", stringContent).Result;

            var result = httpResponseMessage.Content.ReadAsStringAsync().Result;

            return(JsonConvert.DeserializeObject <ZarinpalModel.Payment.Response>(result));
        }