public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new PayPal.Core.SandboxEnvironment("AVfkleP2c7e0uq3ejIEtvchq0ecX8DN31BymS6MmD1vFnTpg9g1QD3-77jwZ4eAZ38jZFgDNd8NxC0ta", "EIm8Kah8ii49Dj-ckEeQT4XnOn5tFjZkJdNw_pCyV0vFqj50E0ZraaszgEfmBWXqqGGz8a-dTm97HAiu");
            var client      = new PayPalHttpClient(environment);

            //Đọc thông tin đơn hàng từ Session
            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };

            var tongTien = Cart.Sum(p => p.donGia);

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.hangHoa.TenHh,
                    Currency = "USD",
                    Price    = item.hangHoa.DonGia.ToString(),
                    Quantity = item.soLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = tongTien.ToString(),
                            Currency = "USD",
                            Details  = new AmountDetails
                            {
                                Tax      = "0",
                                Shipping = "0",
                                Subtotal = tongTien.ToString()
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Don hang 001",
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "http://localhost:5001/Paypal/Fail",
                    ReturnUrl = "/Paypal/Success"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();

            request.RequestBody(payment);

            try
            {
                HttpResponse response = await client.Execute(request);

                var     statusCode = response.StatusCode;
                Payment result     = response.Result <Payment>();

                var    links             = result.Links.GetEnumerator();
                string paypalRedirectUrl = null;
                while (links.MoveNext())
                {
                    LinkDescriptionObject lnk = links.Current;
                    if (lnk.Rel.ToLower().Trim().Equals("approval_url"))
                    {
                        //saving the payapalredirect URL to which user will be redirected for payment
                        paypalRedirectUrl = lnk.Href;
                    }
                }

                return(Redirect(paypalRedirectUrl));
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();

                return(RedirectToAction("Fail"));
            }

            return(View());
        }
Exemple #2
0
        public async Task <IActionResult> Paypal_Checkout()
        {
            var environment = new PayPal.Core.SandboxEnvironment("AQjasbufxBKsLNiUCLjl9diJ-yUbo1kcgiimEdjHGGpdEF057SEIIP53VOxEMXLbYU2OwIgDFkSXteGq", "EMLjGQqRwBLb9B41qZHgZaMOdeEf6avNI3tUHz5BKe6_SG9dFGycckKhSH9CrjuKYKYgRvMYbHt0vYPv");
            var client      = new PayPal.Core.PayPalHttpClient(environment);

            List <CartItem> cart     = HttpContext.Session.Get <List <CartItem> >("gioHang");
            var             itemList = new ItemList()
            {
                Items = new List <Item>()
            };
            float total = 0;

            foreach (var item in cart)
            {
                total += item.Dongia * item.Soluong;
                itemList.Items.Add(new Item()
                {
                    Name     = item.Tensp,
                    Currency = "USD",
                    Quantity = item.Soluong.ToString(),
                    Price    = item.Dongia.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = total.ToString(),
                            Currency = "USD",
                            Details  = new AmountDetails
                            {
                                Tax      = "0",
                                Shipping = "0",
                                Subtotal = total.ToString()
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Don hang 001",
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "https://" + Request.Host.ToString() + "/CheckOut/Paypal_Error",
                    ReturnUrl = "https://" + Request.Host.ToString() + "/CheckOut/Paypal_Success"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();

            request.RequestBody(payment);

            try
            {
                HttpResponse response = await client.Execute(request);

                var     statusCode = response.StatusCode;
                Payment result     = response.Result <Payment>();

                var    links             = result.Links.GetEnumerator();
                string paypalRedirectUrl = null;
                while (links.MoveNext())
                {
                    LinkDescriptionObject lnk = links.Current;
                    if (lnk.Rel.ToLower().Trim().Equals("approval_url"))
                    {
                        //saving the payapalredirect URL to which user will be redirected for payment
                        paypalRedirectUrl = lnk.Href;
                    }
                }
                return(Redirect(paypalRedirectUrl));
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();

                //return RedirectToAction("Paypal_Error");
                return(Content(httpException.ToString()));
            }
        }