Ejemplo n.º 1
0
        private static readonly string BaseWebUrl = "https://www.zarinpal.com"; //For debug and test.

        //private static readonly string BaseApiUrl = "https://api.zarinpal.com";//For publish.
        //private static readonly string BaseWebUrl = "https://www.zarinpal.com";//For publish.

        public static ZarinpalModelV4.Payment.Response PaymentRequest(ZarinpalModelV4.Payment.Request request)
        {
            HttpClient.DefaultRequestHeaders.Accept.Clear();
            HttpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            var serializeObject = JsonConvert.SerializeObject(request, GetSerializerSetting());

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

            var httpResponseMessage =
                HttpClient.PostAsync($"{BaseApiUrl}/pg/v4/payment/request.json", stringContent).Result;

            if (httpResponseMessage.StatusCode == HttpStatusCode.BadGateway)
            {
                throw new ZarinpalException(httpResponseMessage.StatusCode, "Cannot contact Zarinpal Server");
            }
            if ((int)httpResponseMessage.StatusCode >= 400 && (int)httpResponseMessage.StatusCode < 500)
            {
                throw new ZarinpalException(httpResponseMessage.StatusCode,
                                            "Cannot process the request due to bad request error.");
            }
            if ((int)httpResponseMessage.StatusCode >= 500)
            {
                throw new ZarinpalException(httpResponseMessage.StatusCode, "Zarinpal responded with an unknown error");
            }


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

            return(JsonConvert.DeserializeObject <ZarinpalModelV4.Payment.Response>(result, GetSerializerSetting()));
        }
Ejemplo n.º 2
0
        public IActionResult PaymentV4(int id)
        {
            var product = TestDatabase.GetById(id);

            var request = new ZarinpalModelV4.Payment.Request
            {
                MerchantId  = TestMerchantIdV4,
                Amount      = product.Amount * 10, // V4 in Rials
                CallbackUrl = $"{Request.Scheme}://{Request.Host}/Home/CallbackV4/{product.Id}",
                Description = $"Pay for {product.Name} product.",
                Metadata    = new ZarinpalModelV4.Payment.RequestMetadata // Either none, or all
                {
                    Email  = "*****@*****.**",
                    Mobile = null
                }
            };

            var response = RestApiV4.PaymentRequest(request);

            if (response.Data.Code == 100)
            {
                var gatewayLink = RestApiV4.GenerateGatewayLink(response.Data.Authority);
                return(Redirect(gatewayLink));
            }

            TempData["Message"] = response.Data.Code;
            return(View("Index"));
        }