示例#1
0
        public async Task <string> ExecutePayment(Payment payment)
        {
            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;
                        // saving the paymentID in the key guid
                    }
                }
                return(paypalRedirectUrl);
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                return("fail");
            }
        }
示例#2
0
        public async Task <string> PaypalPayment(double total)
        {
            var environment = new SandboxEnvironment(configuration["PayPal:clientId"], configuration["PayPal:secret"]);
            var client      = new PayPalHttpClient(environment);

            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = total.ToString(),
                            Currency = "USD"
                        }
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = configuration["PayPal:cancelUrl"],
                    ReturnUrl = configuration["PayPal:returnUrl"]
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();

            request.RequestBody(payment);
            string paypalRedirectUrl = null;

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

                var     statusCode = response.StatusCode;
                Payment result     = response.Result <Payment>();
                var     links      = result.Links.GetEnumerator();
                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;
                    }
                }
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
            }
            return(paypalRedirectUrl);
        }
示例#3
0
        public async Task <IActionResult> ConfirmAsync([FromRoute] string id)
        {
            string webroot     = HttpContext.Request.Scheme;
            string webroot1    = HttpContext.Request.Host.ToUriComponent();
            string pathReturn  = "http://" + webroot1 + "/paypal/execute-payment";
            string pathCancel  = "http://" + webroot1 + "/paypal/cancel";
            var    environment = new SandboxEnvironment("Acc2-UPp-z25_Olh73h5VZB3XjR16eUKtL2lHoIc27IJn8-2f5R8-Kish229pYjzdy18KR8khHJRQO5Q", "EIb_0hbZQPAEioCGLAzVpn87zRswB7zLAoRtda06Oc4IhrDAmtGYAI2z6xYplX6TdARnsuVh2TC3tHNM");
            var    client      = new PayPalHttpClient(environment);
            string idUser      = id;
            var    payment     = new Payment()
            {
                Intent       = "sale",
                Transactions = GetTransactionsList(id),
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = pathCancel,
                    ReturnUrl = pathReturn
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                },
            };

            PaymentCreateRequest request = new PaymentCreateRequest();

            request.RequestBody(payment);
            var path = CreateExcelOrder.Create(_context.Orders.Where(m => m.UserId == id).Where(m => m.IsConfirm == false).ToList(), id, _environment);

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

                var     statusCode = response.StatusCode;
                Payment result     = response.Result <Payment>();
                LinkDescriptionObject approvalLink = PaypalHelpers.findApprovalLink(result.Links);
                var orders = _context.Orders.Include(m => m.Product).Where(m => m.UserId == id).Where(m => m.IsConfirm == false);
                await orders.ForEachAsync(m => m.Paymentid = result.Id);

                await _context.SaveChangesAsync();

                return(Ok(new ConfirmModel {
                    confirmPath = approvalLink.Href.ToString(), excelPath = path
                }));
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                return(NoContent());
            }
        }
示例#4
0
        public async Task <IActionResult> Checkout(string bill)
        {
            string generateCodeCheck = Encryptor.RandomString(20);

            CheckOut checkOut = JsonConvert.DeserializeObject <CheckOut>(bill);

            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("AXQGDKCc8Q4HNj3CmqQzipkha8qZy_RdJXKihaZ8Pp5sPChWW8RyCQ544XJCrGXgc42VDD4DcD7KIKcR-f1Lkl", "EGL1Sorwr0fxp7cRXxVL12VaI9rAH9RysBslu9KiDnuxEESkf8DVC-DjqAXrqOn9Ufi1dcYzC34rLFye");
            var client      = new PayPalHttpClient(environment);

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

            var TotalPrice = checkOut.TotalPrice.ToString();

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.Name,
                    Currency = "USD",
                    Price    = item.Price.ToString(),
                    Quantity = item.Amount.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }

            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = TotalPrice.ToString(),
                            Currency = "USD",
                            Details  = new AmountDetails
                            {
                                Tax      = "0",
                                Shipping = "0",
                                Subtotal = TotalPrice.ToString()
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Order " + generateCodeCheck,
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "http://localhost:44337/Paypal/Fail",
                    ReturnUrl = "http://localhost:44337/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"));
            }
        }
示例#5
0
        public async Task <IActionResult> Checkout(Models.Order order, string answer)
        {
            double             point = 0;
            List <OrderDetail> cart  = SessionHelper.GetObjectFromJson <List <OrderDetail> >(HttpContext.Session, "cart");

            if (ModelState.IsValid)
            {
                if (answer == "paypal")
                {
                    var environment = new SandboxEnvironment(clientId, secretKey);
                    var client      = new PayPalHttpClient(environment);
                    var itemList    = new ItemList()
                    {
                        Items = new List <Item>()
                    };
                    var total = cart.Sum(item => item.Product.ProductPrice * item.Quantity);
                    foreach (var item in cart)
                    {
                        itemList.Items.Add(new Item()
                        {
                            Name     = item.Product.ProductName,
                            Currency = currency,
                            Price    = Math.Round(item.Product.ProductPrice / exchange, 2).ToString(),
                            Quantity = item.Quantity.ToString(),
                            Sku      = "sku",
                            Tax      = "0"
                        });
                    }
                    var paypalOrderId = DateTime.Now.Ticks;
                    var hostname      = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
                    var payment       = new Payment()
                    {
                        Intent       = "sale",
                        Transactions = new List <Transaction>()
                        {
                            new Transaction()
                            {
                                Amount = new Amount()
                                {
                                    Total    = Math.Round(total / exchange, 2).ToString(),
                                    Currency = currency,
                                    Details  = new AmountDetails
                                    {
                                        Tax      = "0",
                                        Shipping = "0",
                                        Subtotal = Math.Round(total / exchange, 2).ToString()
                                    }
                                },
                                ItemList      = itemList,
                                Description   = $"Invoice #{paypalOrderId}",
                                InvoiceNumber = paypalOrderId.ToString()
                            }
                        },
                        RedirectUrls = new RedirectUrls()
                        {
                            CancelUrl = $"{hostname}/Cart/Fail",
                            ReturnUrl = $"{hostname}/Cart/Confirm",
                        },
                        Payer = new Payer()
                        {
                            PaymentMethod = "paypal"
                        }
                    };
                    PaymentCreateRequest request = new PaymentCreateRequest();
                    request.RequestBody(payment);
                    try
                    {
                        var 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 link = links.Current;
                            if (link.Rel.ToLower().Trim().Equals("approval_url"))
                            {
                                paypalRedirectUrl = link.Href;
                            }
                        }
                        Models.Order orderTemp = new Models.Order
                        {
                            OrderDate        = DateTime.Now,
                            Phone            = order.Phone,
                            Address          = order.Address,
                            Email            = order.Email,
                            CusName          = order.CusName,
                            Note             = order.Note,
                            OrderConditionId = 1,
                            PaymentMethodId  = 2,
                            OrderCheckout    = "Đã thanh toán"
                        };
                        dataContext.Orders.Add(orderTemp);
                        dataContext.SaveChanges();
                        var query = dataContext.Orders.FirstOrDefault(p => p.OrderId == orderTemp.OrderId);
                        foreach (var item in cart)
                        {
                            dataContext.OrderDetails.Add(new OrderDetail()
                            {
                                OrderId   = query.OrderId,
                                ProductId = item.Product.ProductId,
                                Quantity  = item.Quantity,
                            });
                            Product product = dataContext.Products.FirstOrDefault(p => p.ProductId == item.Product.ProductId);
                            product.ProductQuantity -= item.Quantity;
                        }
                        dataContext.SaveChanges();
                        var user = await _userManager.FindByEmailAsync(order.Email);

                        if (user != null)
                        {
                            user.UserPoint += Convert.ToInt32(point);
                            await _userManager.UpdateAsync(user);
                        }
                        List <Product> products = new List <Product>();
                        foreach (var item in cart)
                        {
                            Product product = dataContext.Products.FirstOrDefault(p => p.ProductId == item.Product.ProductId);
                            products.Add(product);
                            var revenueId = dataContext.Revenues.FirstOrDefault(p => p.ProductId == item.Product.ProductId).RevenueId;
                            dataContext.RevenueDetails.Add(new RevenueDetail()
                            {
                                RevenueId    = revenueId,
                                DateIssue    = DateTime.Now,
                                Quantity     = item.Quantity,
                                PriceReality = item.Product.ProductPrice
                            });
                        }
                        dataContext.SaveChanges();
                        cart.Clear();
                        TempData["check"] = query.OrderId;
                        SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
                        return(Redirect(paypalRedirectUrl));
                    }
                    catch (HttpException httpException)
                    {
                        var statusCode = httpException.StatusCode;
                        var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                        return(Redirect("/Cart/Fail"));
                    }
                }
                else
                {
                    Models.Order orderTemp = new Models.Order
                    {
                        OrderDate        = DateTime.Now,
                        Phone            = order.Phone,
                        Address          = order.Address,
                        Email            = order.Email,
                        CusName          = order.CusName,
                        PaymentMethodId  = 1,
                        Note             = order.Note,
                        OrderConditionId = 1,
                        OrderCheckout    = "Chưa thanh toán"
                    };
                    dataContext.Orders.Add(orderTemp);
                    dataContext.SaveChanges();
                    var query = dataContext.Orders.FirstOrDefault(p => p.OrderId == orderTemp.OrderId);
                    foreach (var item in cart)
                    {
                        dataContext.OrderDetails.Add(new OrderDetail()
                        {
                            OrderId   = query.OrderId,
                            ProductId = item.Product.ProductId,
                            Quantity  = item.Quantity,
                        });
                        Product product = dataContext.Products.FirstOrDefault(p => p.ProductId == item.Product.ProductId);
                        product.ProductQuantity -= item.Quantity;
                        point += (item.Product.ProductPrice / 10000);
                    }
                    dataContext.SaveChanges();
                    cart.Clear();
                    TempData["check"] = query.OrderId;
                    SessionHelper.SetObjectAsJson(HttpContext.Session, "cart", cart);
                    return(RedirectToAction("Confirm", "Cart"));
                }
            }
            else
            {
                if (cart != null)
                {
                    TestViewBag(cart);
                }
                else
                {
                    return(View());
                }
                return(View(order));
            }
        }
示例#6
0
        public async System.Threading.Tasks.Task <IActionResult> CheckoutPaypal(CartInfoAction CommandAction)
        {
            var environment = new SandboxEnvironment("AdX8qU2NUs8gZiMTuJ3Fgsd-NlZGgmLQpSROXn6LMepUYEtP51Yn9pjN54LPT7wlwj_0wOt43tWYN8vK", "EK5ofEBT0AnZIyKVdG1j2pIr4FvWD3Q-hBDFvNCAsWO87yMb2Da3MtpeOY7CNLQKFBjVKaQP8_F6coal");
            var client      = new PayPalHttpClient(environment);

            #region Create payment (just example)
            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };
            int TyGiaUSD = 23;
            var total    = Math.Round((double)SessionHelper.Get <List <CartItem> >(HttpContext.Session, "cart").Sum(p => p.SoLuong * p.GiaBan) / TyGiaUSD, 2);
            //var total = myCart.Sum(p => p.Total);
            var myCart = SessionHelper.Get <List <CartItem> >(HttpContext.Session, "cart");
            foreach (var item in myCart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.TenThucDon,
                    Currency = "USD",
                    Price    = Math.Round((double)item.GiaBan / TyGiaUSD, 2).ToString(),
                    Quantity = item.SoLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            #endregion
            var paypalOrderID = DateTime.Now.Ticks;
            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   = $"Invoice #{paypalOrderID}",
                        InvoiceNumber = paypalOrderID.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "https://localhost:44390/Paypal/CheckoutFail",
                    ReturnUrl = "https://localhost:44390/Paypal/CheckoutSuccess"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);

            try
            {
                var 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();

                //Process when Checkout with Paypal fails
                return(Redirect("/Paypal/CheckoutFail"));
            }
        }
示例#7
0
        public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            string clientId     = "AYOwjSPbuM8boAckmyHBzPF3fS5jkqsE6-i-fd_2Y66bMFW7t9miYPklGgcNAdXweQa4ijsjCRQnElL1";
            string clientSecret = "EL485ImsKFuaWVHj8YqVRNwzc1-q8xsmFMaDnFyvBTwH5JT4zqyGe7dLT9F4-Q64-ebEaix79UYxnO4H";
            var    environment  = new SandboxEnvironment(clientId, clientSecret);
            var    client       = new PayPalHttpClient(environment);

            double UsdToVnd = 23211.67;

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

            double tongTien = Cart.Sum(p => p.TotalPrice) / UsdToVnd;

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.Product.ProductName,
                    Currency = "USD",
                    Price    = (item.Product.UnitPrice / UsdToVnd).ToString("0.00"),
                    Quantity = item.Amount.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }


            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = tongTien.ToString("0.00"),
                            Currency = "USD",
                            Details  = new AmountDetails
                            {
                                Tax      = "0",
                                Shipping = "0",
                                Subtotal = tongTien.ToString("0.00")
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Don hang A",
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "http://localhost:44370/paypal/fail",
                    ReturnUrl = "https://localhost:44370/paypal/Execute"
                },
                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();

                string a = tongTien.ToString();

                return(RedirectToAction("Fail"));
            }
        }
示例#8
0
        public async Task <IActionResult> Checkout(Orders order)
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("ATEyDHMWKozlcGDf5yNduG92WTeajJf9gqXc34Dd0AU7LbWgFvH3qY_8ImvFfZls5uZMzaoeZAdZBCrm", "EH1J-u4MfbsyBENy8zBoVHHOnU9DMsDRjGDaXwfZltNEVc3rv_t26ANZ_L2Z4eQlS12oRnUj_Zr8dizO");
            var client      = new PayPalHttpClient(environment);

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

            var AmountUSD = Cart.Sum(p => CurrencyConversion(p.Price, p.QuantityProduct));
            int?AmountVND = 0;

            foreach (var item in Cart)
            {
                AmountVND += item.Price;
                itemList.Items.Add(new Item()
                {
                    Name     = item.ProductName,
                    Currency = "USD",
                    Price    = CurrencyConversion(item.Price).ToString(),
                    Quantity = item.QuantityProduct.ToString(),
                    Tax      = "0"
                });
            }

            order.CreatedDate = DateTime.Now;

            // tính phí ship
            order.Total = AmountVND;
            var shipCostUSD = 0.00;

            if (AmountVND < 100000)
            {
                shipCostUSD    = 0.87;
                order.ShipCost = 20000;
            }
            else if (AmountVND < 500000)
            {
                shipCostUSD    = 0.52;
                order.ShipCost = 12000;
            }
            else
            {
                order.ShipCost = 0;
            }

            // kiểm tra người dùng có đăng nhập để lưu ID người dùng
            var info = HttpContext.Session.GetObject <Customer>("Customer");

            if (info != null)
            {
                order.CustomerId = info.CustomerId;
            }

            _context.Orders.Add(order);
            _context.SaveChanges();
            IdLasted = order.OrderId;
            foreach (var item in Cart)
            {
                OrderDetail orderDetail = new OrderDetail()
                {
                    OrderId   = IdLasted,
                    ProductId = item.ProductId,
                    Price     = item.Price,
                    Quantity  = item.QuantityProduct
                };
                _context.OrderDetail.Add(orderDetail);
                _context.SaveChanges();
            }

            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = (AmountUSD + shipCostUSD).ToString(),
                            Currency = "USD",
                            Details  = new AmountDetails
                            {
                                Tax      = "0",
                                Shipping = shipCostUSD.ToString(),
                                Subtotal = AmountUSD.ToString(),
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Don hang " + IdLasted,
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host + "/Paypal/Fail",
                    ReturnUrl = HttpContext.Request.Scheme + "://" + HttpContext.Request.Host + "/Paypal/Execute"
                },
                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"));
            }
        }
示例#9
0
        public async Task <string> CreateNewPayment(string amount)
        {
            var environment = new SandboxEnvironment("AV8B5CBqWFqiUEBdhbe2rBVqX0RwNjY74nORYSEI3P8WZ-rRzRxXd1H0pA_qrywn0MCZuXzg3x-WwDeY", "EL-1QQduQKljgE0uHFs6WKAM4JtYrbf8CzOisxNCczPvdnkQYQDT1-rCM1W1dYM3Dhu8L9AcwqwhKdZH");
            var client      = new PayPalHttpClient(environment);
            var payment     = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = amount,
                            Currency = "EUR",
                            Details  = new AmountDetails()
                            {
                                Tax      = "0",
                                Subtotal = amount
                            }
                        },
                        ItemList = new ItemList()
                        {
                            Items = new List <Item>()
                            {
                                new Item()
                                {
                                    Name        = "QPay Saldo",
                                    Currency    = "EUR",
                                    Price       = amount,
                                    Quantity    = "1",
                                    Sku         = "Sku",
                                    Tax         = "0",
                                    Description = "QPay Saldo"
                                }
                            }
                        }, Description = "Opwaarderen QPay",
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "https://pilotqpayportal.azurewebsites.net/Payment/Failed",
                    ReturnUrl = "https://pilotqpayportal.azurewebsites.net/Payment/Execute" //RELEASE RETURN URL
                                                                                            //ReturnUrl = "https://localhost:44354/Payment/Execute" //Localhost return URL
                },

                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                },
                NoteToPayer = amount + "euro Tegoed"
            };

            PaymentCreateRequest request = new PaymentCreateRequest();

            request.RequestBody(payment);

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

                var     statusCode = response.StatusCode;
                Payment result     = response.Result <Payment>();
                LinkDescriptionObject approvalLink = findApprovalLink(result.Links);
                string redirectUrl = approvalLink.Href;
                return(redirectUrl);
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                return("Failed");
            }
        }
        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());
        }
示例#11
0
        public async System.Threading.Tasks.Task <IActionResult> CheckoutAsync(string id, int?addressValue, bool?usePoint = false)
        {
            var environment = new SandboxEnvironment(_clientID, _secretID);
            var client      = new PayPalHttpClient(environment);

            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };

            //Query tính tổng giá của đơn hàng bằng cách lặp rồi tính sum của giá * số lượng
            //Nếu cart được tìm thuộc giỏ hàng đang hiển thị thì mới gọi paypal tránh hiện tượng user nhập lại id cũ đã thanh toán nhưng vẫn gọi api paypal
            if (_context.CartTable.Find(id).IsDisplay == true)
            {
                var totalPrice = _context.CartDetailTable.Where(x => x.CartID == id).Include(x => x.Product).Sum(x => x.Product.ProductPrice * x.Quantity);
                var cartItem   = _context.CartDetailTable.Where(x => x.CartID == id).Include(x => x.Product);
                //Free ship 15$
                var saleOff = 15;
                var user    = await _userManager.Users.Include(x => x.DeliveryInfo).SingleAsync(x => x.Id == _cookieServices.ReadCookie(HttpContext, "CART_INFORMATION"));

                var pointLeft   = user.Point;
                var orderAmount = new Amount()
                {
                    Total    = (totalPrice - saleOff).ToString(),
                    Currency = "USD",
                    Details  = new AmountDetails
                    {
                        Tax              = "0",
                        Shipping         = "0",
                        ShippingDiscount = saleOff.ToString(),
                        Subtotal         = totalPrice.ToString()
                    }
                };
                if (usePoint == true && user.Point > 0)
                {
                    if (user.Point <= totalPrice)
                    {
                        Item point = new Item {
                            Name = "Xu", Currency = "USD", Price = (-user.Point).ToString(), Quantity = "1", Description = $"Sử dụng {user.Point} xu "
                        };
                        itemList.Items.Add(point);
                        orderAmount.Details.Subtotal = (Convert.ToInt32(orderAmount.Details.Subtotal) - user.Point).ToString();
                        orderAmount.Total            = (Convert.ToInt32(orderAmount.Total) - user.Point).ToString();
                        pointLeft = 0;
                    }
                    else
                    {
                        Item point = new Item {
                            Name = "Xu", Currency = "USD", Price = (-user.Point).ToString(), Quantity = user.Point.ToString(), Description = $"Sử dụng {totalPrice} xu để giảm giá"
                        };
                        itemList.Items.Add(point);
                        orderAmount.Details.ShippingDiscount = "0";
                        orderAmount.Details.Subtotal         = (Convert.ToInt32(orderAmount.Details.Subtotal) - user.Point).ToString();
                        orderAmount.Total = (Convert.ToInt32(orderAmount.Total) - user.Point).ToString();
                        pointLeft         = (user.Point - Convert.ToInt32(totalPrice));
                    }
                }

                foreach (var item in cartItem)
                {
                    itemList.Items.Add(new Item()
                    {
                        Name     = item.Product.ProductName,
                        Currency = "USD",
                        Price    = (item.Product.ProductPrice).ToString(),
                        Quantity = item.Quantity.ToString()
                    });
                }

                if (addressValue >= 1 && addressValue <= 2)
                {
                    itemList.ShippingAddress = new ShippingAddress {
                        City = user.DeliveryInfo.Single(x => x.AddressValue == addressValue).Address, Phone = user.DeliveryInfo.Single(x => x.AddressValue == addressValue).Phone, CountryCode = "VN", Line1 = "Q.10", Line2 = "Sư Vạn Hạnh", State = user.DeliveryInfo.Single(x => x.AddressValue == addressValue).Address, RecipientName = user.UserName, PostalCode = "70000"
                    };
                    itemList.ShippingPhoneNumber = user.DeliveryInfo.Single(x => x.AddressValue == addressValue).Phone;
                }

                var payment = new Payment()
                {
                    Intent       = "sale",
                    Transactions = new List <Transaction>()
                    {
                        new Transaction()
                        {
                            Amount        = orderAmount,
                            ItemList      = itemList,
                            Description   = "Hóa đơn 696",
                            InvoiceNumber = id
                        }
                    },
                    RedirectUrls = new RedirectUrls()
                    {
                        CancelUrl = Url.Action(nameof(CheckoutFail), "Home", null, protocol: Request.Scheme),
                        ReturnUrl = Url.Action(nameof(CheckoutSuccess), "Home", new { id = id, userid = user.Id, pointLeft = pointLeft }, protocol: Request.Scheme),
                    },
                    Payer = new Payer()
                    {
                        PaymentMethod = "paypal"
                    }
                };

                PaymentCreateRequest request = new PaymentCreateRequest();
                request.RequestBody(payment);

                try
                {
                    var 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();

                    //Process when Checkout with Paypal fails
                    return(RedirectToAction(nameof(CheckoutFail)));
                }
            }
            else
            {
                return(RedirectToAction(nameof(CheckoutFail)));
            }
        }
示例#12
0
        public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("AX_kJNjRRJ3-EatrprZEudFpqOHcD22CFJiyilo0usKgEKuQsQ7pih2JQuSgxoKlAEi8N6Z031s8udSf", "EFqNIdiiBAK2Gg3sQk7kkt3L4NbckK7AxsLRuzF0dikFSwoayxHSdfyb0PqC5SiJIN10l7utfd87sE9w");
            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.ThanhTien);

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.HangHoa.TenHh,
                    Currency = "USD",
                    Price    = item.HangHoa.GiaBan.ToString(),
                    Quantity = item.SoLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });

                //itemList.Items.Add(new Item()
                //{
                //	Name = "Coca",
                //	Currency = "USD",
                //	Price = "5",
                //	Quantity = "1",
                //	Sku = "sku",
                //	Tax = "0"
                //});
                //itemList.Items.Add(new Item()
                //{
                //	Name = "Pepsi",
                //	Currency = "USD",
                //	Price = "2",
                //	Quantity = "3",
                //	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:53845/Paypal/Fail",
                    ReturnUrl = "http://localhost:53845/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());
        }
示例#13
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()));
            }
        }
示例#14
0
        public async Task <PaypalPayment> GetURLPaymentWithPaypal(List <ProductToCart> cart, double sale, string hostname)
        {
            #region Create Paypal Order
            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };

            var total = cart.Sum(item => Math.Round(item.ProductModel.ProductPrice * sale / TyGiaUSD, 2) * item.Quantity);

            foreach (var item in cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.ProductModel.ProductName,
                    Currency = "USD",
                    Price    = Math.Round(item.ProductModel.ProductPrice * sale / TyGiaUSD, 2).ToString(),
                    Quantity = item.Quantity.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            #endregion

            var paypalOrderId = DateTime.Now.Ticks.ToString();
            var payment       = new Payment()
            {
                Id           = paypalOrderId,
                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   = $"Invoice #{paypalOrderId}",
                        InvoiceNumber = paypalOrderId,
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = $"{hostname}/Cart/PaymentFail",
                    ReturnUrl = $"{hostname}/Cart/PaymentSuccess"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);

            var 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(new PaypalPayment()
            {
                RedirectURL = paypalRedirectUrl,
                PaypalId = result.Id
            });
        }
示例#15
0
        public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("AY8MwYgaL5KnJtJ-vx4G1cwgxcDg5dYUCQQTJZHJJZZMiJlDK53Uqvy6n1iCgff23iwfOxPsZ0TmZ3IS", "ENxga6p6gERlitpbUG8oxAINJdw27ce_Elurr1lioQd_SWrJwFR-Puim57pGYPgLhslFgFZUrxRPack0");
            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.ThanhTien);

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.HangHoa.TenHh,
                    Currency = "USD",
                    Price    = item.HangHoa.GiaBan.ToString(),
                    Quantity = item.SoLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            //itemList.Items.Add(new Item()
            //{
            //    Name = "Coca",
            //    Currency = "USD",
            //    Price = "5",
            //    Quantity = "1",
            //    Sku = "sku",
            //    Tax = "0"
            //});
            //itemList.Items.Add(new Item()
            //{
            //    Name = "Pepsi",
            //    Currency = "USD",
            //    Price = "2",
            //    Quantity = "3",
            //    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:50289/Paypal/Fail",
                    ReturnUrl = "http://localhost:50289/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());
        }
示例#16
0
        public async Task <IActionResult> Test()
        {
            var environment = new SandboxEnvironment("AY8MwYgaL5KnJtJ-vx4G1cwgxcDg5dYUCQQTJZHJJZZMiJlDK53Uqvy6n1iCgff23iwfOxPsZ0TmZ3IS", "ENxga6p6gERlitpbUG8oxAINJdw27ce_Elurr1lioQd_SWrJwFR-Puim57pGYPgLhslFgFZUrxRPack0");
            var client      = new PayPalHttpClient(environment);

            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = "10",
                            Currency = "USD"
                        }
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "https://example.com/cancel",
                    ReturnUrl = "https://example.com/return"
                },

                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    link = result.Links.GetEnumerator();
                string paypalRedirectUrl = null;
                while (link.MoveNext())
                {
                    LinkDescriptionObject lnk = link.Current;
                    if (lnk.Rel.ToLower().Trim().Equals("approval_url"))
                    {
                        paypalRedirectUrl = lnk.Href;
                    }
                }
                return(Redirect(paypalRedirectUrl));
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
            }
            return(View());
        }
示例#17
0
        //Install-Package PayPal -Version 2.0.0-rc2
        public async System.Threading.Tasks.Task <IActionResult> PaypalCheckout()
        {
            var environment = new SandboxEnvironment(_clientId, _secretKey);
            var client      = new PayPalHttpClient(environment);

            #region Create Paypal Order
            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };

            double total = 0;

            //// 0 đ không cân thanh toán paypal
            //if (total == 0)
            //{
            //    return RedirectToAction("CheckoutSuccess");
            //}
            var product = GetCartItems();
            foreach (var item in product)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.product.TenSp,
                    Currency = "USD",
                    Price    = item.Giam == 0? Math.Round(item.product.DonGia.GetValueOrDefault() / 23000, 2).ToString()
                    : Math.Round(item.Giam / 23000, 2).ToString(),
                    Quantity = item.quantity.ToString()
                });
                if (item.Giam == 0)
                {
                    total += item.quantity * item.product.DonGia.GetValueOrDefault();
                }
                else
                {
                    total += item.quantity * item.Giam;
                }
            }

            total = Math.Round(total / 23000, 2);
            #endregion

            //var total = Math.Round(double.Parse(checkout[0].Total.ToString()) / 23000, 2) *itemList.Items.Count;

            var paypalOrderId = DateTime.Now.Ticks;
            var hostname      = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
            var payment       = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = total.ToString(),
                            Currency = "USD",
                        },
                        ItemList      = itemList,
                        Description   = $"Invoice #{paypalOrderId}",
                        InvoiceNumber = paypalOrderId.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = $"{hostname}/Checkout/CheckoutFail",
                    ReturnUrl = $"{hostname}/Checkout/CheckoutSuccess",
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);

            try
            {
                var 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();

                //Process when Checkout with Paypal fails
                return(Redirect("/Checkout/CheckoutFail"));
            }
        }
示例#18
0
        public async Task <IActionResult> CheckOut()
        {
            var environment = new SandboxEnvironment("AS0kSYMcJkI2Fkiog9fsFbZmvmHB_f77kUMvbeV3AhPRyoRpNOfgpHVjHAOojYiQwPSJ5yqXORY3Ri5K", "EBohfZ1jqyXHhQ5VUvaW29D_5pgv35NPsh5s6FI39FjlbAyp6lcJLgxpkX7mip-qs4Vnap2eNNWi9WtN");
            var client      = new PayPalHttpClient(environment);
            var itemList    = new ItemList()
            {
                Items = new List <Item>()
            };
            double sum = 0;

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.HangHoa.TenHh,
                    Currency = "USD",
                    Price    = item.ThanhTien.ToString(),
                    Quantity = (item.SoLuong).ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
                sum += item.ThanhTien;
            }

            var payment = new Payment()
            {
                Intent       = "sale",
                Transactions = new List <Transaction>()
                {
                    new Transaction()
                    {
                        Amount = new Amount()
                        {
                            Total    = sum.ToString(),
                            Currency = "USD",
                            Details  = new AmountDetails()
                            {
                                Tax      = "0",
                                Shipping = "0",
                                Subtotal = sum.ToString()
                            }
                        },
                        ItemList      = itemList,
                        Description   = "Đơn hàng",
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "http://localhost:44323/Paypal/Fail",
                    ReturnUrl = "http://localhost:44323/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    link = result.Links.GetEnumerator();
                string paypalRedirectUrl = null;
                while (link.MoveNext())
                {
                    LinkDescriptionObject lnk = link.Current;
                    if (lnk.Rel.ToLower().Trim().Equals("approval_url"))
                    {
                        paypalRedirectUrl = lnk.Href;
                    }
                }
                return(Redirect(paypalRedirectUrl));
            }
            catch (HttpException ex)
            {
                var statusCode = ex.StatusCode;
                var debugId    = ex.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();

                return(RedirectToAction("Fail"));
            }
        }
示例#19
0
        public async System.Threading.Tasks.Task <IActionResult> PaypalCheckout()
        {
            var environment = new SandboxEnvironment(_clientId, _secretKey);
            var client      = new PayPalHttpClient(environment);

            #region Create Paypal Order
            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };
            var total = Math.Round(Carts.Sum(p => p.ThanhTien) / TyGiaUSD, 2);
            foreach (var item in Carts)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.TenHh,
                    Currency = "USD",
                    Price    = Math.Round(item.DonGia / TyGiaUSD, 2).ToString(),
                    Quantity = item.SoLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            #endregion

            var paypalOrderId = DateTime.Now.Ticks;
            var hostname      = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
            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   = $"Invoice #{paypalOrderId}",
                        InvoiceNumber = paypalOrderId.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = $"{hostname}/GioHang/CheckoutFail",
                    ReturnUrl = $"{hostname}/GioHang/CheckoutSuccess"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);

            try
            {
                var 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();

                //Process when Checkout with Paypal fails
                return(Redirect("/GioHang/CheckoutFail"));
            }
        }
示例#20
0
        public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("AW0XNlAAqYLVMTbaBJVpAz_DFp2TrHMQgAmZ5WXDPt9Hoyt4Jrrb1ZpdvpI70CIqetpb3yHYV23Z9vsS", "EKqZen_z_GAihIxYgBDxy8mvu2Cola9Pdq09v38SSWn05gaAXgmlPy7H-UK7bhL9tW8CSCrVYM5A7WWv");
            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.ThanhTien);

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.TenHh,
                    Currency = "USD",
                    Price    = item.GiaBan.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   = "Shop online technology products",
                        InvoiceNumber = DateTime.Now.Ticks.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = "https://techworld.azurewebsites.net/Paypal/Fail",
                    ReturnUrl = "https://techworld.azurewebsites.net/Paypal/Success"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            KhachHang kh = HttpContext.Session.Get <KhachHang>("Username");
            HoaDon    hd = new HoaDon
            {
                MaKh    = kh.MaKh,
                HoTen   = kh.HoTen,
                DiaChi  = kh.DiaChi,
                NgayDat = DateTime.Now,
                // GhiChu = ghichu,
                SdtNguoinhan        = kh.DienThoai,
                MaTrangThai         = 0,
                PhuongThucThanhToan = 1,
                TinhTrangThanhToan  = 1,
                PhiVanChuyen        = 0
            };

            db.HoaDon.Add(hd);
            double tongtien   = 0;
            double tonghoadon = 0;

            foreach (var i in Cart)
            {
                tongtien = tongtien + i.ThanhTien;
                HangHoa hh = db.HangHoa.SingleOrDefault(p => p.MaHh == i.MaHh);

                ChiTietHd cthd = new ChiTietHd
                {
                    MaHd    = hd.MaHd,
                    MaHh    = i.MaHh,
                    DonGia  = hh.DonGia,
                    GiamGia = hh.GiamGia,
                    SoLuong = i.SoLuong
                };
                db.ChiTietHd.Add(cthd);
                db.SaveChanges();
            }
            tonghoadon      = tongtien + 0;
            hd.TongTienHang = tongtien;
            hd.TongThucThu  = tonghoadon;
            db.SaveChanges();
            HttpContext.Session.Remove("GioHang");

            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();
        }
示例#21
0
        //[Authorize]
        public async System.Threading.Tasks.Task <IActionResult> PaypalCheckout()
        {
            var environment = new SandboxEnvironment(_clientId, _secretKey);
            var client      = new PayPalHttpClient(environment);

            var cart = HttpContext.Session.Get <OrderHeader>("cart");

            #region Create Paypal Order

            var itemList = new ItemList()
            {
                Items = new List <Item>()
            };

            foreach (var item in cart.OrderDetails)
            {
                itemList.Items.Add(new Item()
                {
                    Name        = item.Product.Name,//"Trà sữa",
                    Currency    = "USD",
                    Price       = Math.Round(item.Product.Price.GetValueOrDefault() / TyGiaUSD, 2).ToString(),
                    Quantity    = item.Count.ToString(),
                    Description = "Số lượng: " + item.Count.ToString(),
                    Sku         = "sku",
                    Tax         = "0"
                });
            }
            var total = itemList.Items.Sum(x => double.Parse(x.Price) * int.Parse(x.Quantity));

            #endregion

            //var total = Math.Round(double.Parse(checkout[0].Total.ToString()) / 23000, 2) *itemList.Items.Count;

            var paypalOrderId = cart.Id;
            var hostname      = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";

            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   = $"Invoice #{paypalOrderId}",
                        InvoiceNumber = paypalOrderId.ToString()
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = $"{hostname}/Paypal/CheckoutFail",
                    ReturnUrl = $"{hostname}/Paypal/CheckoutSuccess"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);
            var transaction = await _db.Database.BeginTransactionAsync();

            try
            {
                var code     = HttpContext.Session.Get <string>("discount");
                var discount = _db.Discounts.Where(x => (x.TimesUseLimit - x.TimesUsed) > 0 && x.DateExpired > DateTime.Now).FirstOrDefault(x => x.Code == code);
                if (discount != null)
                {
                    discount.TimesUsed++;
                    _db.SaveChanges();
                }
                #region Add cart
                cart.ApplicationUser = null;
                cart.PaymentStatus   = "Paid";
                var newlistOrderDetail = cart.OrderDetails.Select(x => new OrderDetail
                {
                    Count           = x.Count,
                    OrderHeaderId   = x.OrderHeaderId,
                    ProductId       = x.ProductId,
                    Price           = x.Price,
                    Id              = x.Id,
                    Status          = x.Status,
                    DeliveryDetails = new DeliveryDetail()
                    {
                        Address = x.DeliveryDetails.Address, DateEnd = x.DeliveryDetails.DateEnd, Price = x.DeliveryDetails.Price, DateStart = x.DeliveryDetails.DateStart, DeliveryId = x.DeliveryDetails.DeliveryId, Note = x.DeliveryDetails.Note, OrderDetailId = x.DeliveryDetails.OrderDetailId
                    }
                });
                cart.OrderDetails = newlistOrderDetail.ToList();


                foreach (var item in cart.OrderDetails)
                {
                    var objfromDb = _db.Products.Find(item.ProductId);
                    objfromDb.Quantity = objfromDb.Quantity - item.Count;
                    if (objfromDb.Quantity < 0)
                    {
                        throw new Exception("Lỗi đơn hàng " + objfromDb.Name + " chỉ còn " + (objfromDb.Quantity + item.Count));
                    }
                    else
                    {
                        _db.Update(objfromDb);
                        _db.SaveChanges();
                    }
                }
                _db.OrderHeaders.Add(cart);
                _db.SaveChanges();
                #endregion
                var 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;
                    }
                }
                await transaction.CommitAsync();

                transaction.Dispose();
                HttpContext.Session.Remove("cart");
                HttpContext.Session.Remove("discount");
                return(Redirect(paypalRedirectUrl));
            }
            catch (HttpException httpException)
            {
                var statusCode = httpException.StatusCode;
                var debugId    = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                transaction.Rollback();
                transaction.Dispose();
                HttpContext.Session.Remove("cart");
                HttpContext.Session.Remove("discount");
                //Process when Checkout with Paypal fails
                return(Redirect("/Paypal/CheckoutFail"));
            }
            catch (Exception)
            {
                transaction.Rollback();
                transaction.Dispose();
                HttpContext.Session.Remove("cart");
                HttpContext.Session.Remove("cart");
                return(Redirect("/Paypal/CheckoutFail"));
            }
        }
示例#22
0
        public async Task <IActionResult> ThanhToanPaypal()
        {
            var model = _context.loais.ToList();

            ViewBag.model = model;

            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            var environment = new SandboxEnvironment(_clientId, _secretKey);
            var client      = new PayPalHttpClient(environment);

            #region Create Paypal Order
            var cart     = SessionHelper.Get <List <Item> >(HttpContext.Session, "cart");
            var itemList = new ItemList()
            {
                Items = new List <item>()
            };
            //var total = Math.Round(cart.Sum(item => (item.Product.DonGia * item.Quantity) - ((item.Product.GiamGia) * (item.Product.DonGia)) / 100) / tyGiaUSD, 2);
            var total = cart.Sum(item => Math.Round(Math.Round(item.Product.DonGia / tyGiaUSD, 2) - Math.Round(Math.Round(item.Product.DonGia / tyGiaUSD, 2) * item.Product.GiamGia / 100, 2), 2) * item.Quantity);
            var giam  = Math.Round(cart.Sum(item => Math.Round(Math.Round(item.Product.DonGia / tyGiaUSD, 2) * item.Quantity * item.Product.GiamGia / 100, 2)), 2);
            //var total = Math.Round(sub - giam, 2);
            foreach (var item in cart)
            {
                itemList.Items.Add(new item()
                {
                    Name     = item.Product.TenHH,
                    Currency = "USD",
                    Price    = Math.Round(Math.Round(item.Product.DonGia / tyGiaUSD, 2) - Math.Round(Math.Round(item.Product.DonGia / tyGiaUSD, 2) * item.Product.GiamGia / 100, 2), 2).ToString(),
                    Quantity = item.Quantity.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            #endregion


            var paypalOrderId = DateTime.Now.Ticks;
            var hostname      = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
            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   = $"Invoice #{paypalOrderId}",
                        InvoiceNumber = paypalOrderId.ToString(),
                        Payee         = new Payee()
                        {
                            Email      = _email,
                            MerchantId = _merchantId
                        }
                    }
                },
                RedirectUrls = new RedirectUrls()
                {
                    CancelUrl = $"{hostname}/cart/that-bai",
                    ReturnUrl = $"{hostname}/cart/paypal-hoan-thanh"
                },
                Payer = new Payer()
                {
                    PaymentMethod = "paypal"
                }
            };

            #region Insert Order to Database
            var oder = new Oder();
            oder.ID           = paypalOrderId;
            oder.ShipAddress  = "Paypal User";
            oder.ShipName     = "Paypal User";
            oder.ShipMobile   = "Paypal User";
            oder.ShipEmail    = "Paypal User";
            oder.CheckOutType = "Paypal";
            oder.CustomerID   = user.Id;
            oder.CreatedDate  = DateTime.Now;

            var subTotal = cart.Sum(item => (item.Product.DonGia - item.Product.DonGia * item.Product.GiamGia / 100) * item.Quantity);

            oder.Total = Math.Round(subTotal, 0);

            _orderId = oder.ID;
            SessionHelper.Set(HttpContext.Session, "orderId", _orderId);

            try
            {
                var id = Insert(oder);
                foreach (var item in cart)
                {
                    var oderDetail = new OderDetail();
                    oderDetail.MaHH     = item.Product.MaHH;
                    oderDetail.OderID   = id;
                    oderDetail.Gia      = item.Product.DonGia;
                    oderDetail.Quantity = item.Quantity;
                    Insert1(oderDetail);

                    var hanghoas = _context.HangHoas.Where(x => x.MaHH == item.Product.MaHH).First();

                    hanghoas.DaMua += item.Quantity;
                    _context.Update(hanghoas);
                    _context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                Console.Write(e);
                return(View("ThatBai"));
            }
            #endregion
            PaymentCreateRequest request = new PaymentCreateRequest();
            request.RequestBody(payment);

            try
            {
                var 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"))
                    {
                        paypalRedirectUrl = lnk.Href;
                    }
                }

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

                return(Redirect("/cart/that-bai"));
            }
        }
示例#23
0
        //public ActionResult Callback()
        //{
        //    if (Request.QueryString.Count > 0)
        //    {

        //        var vnpayData = Request.QueryString;
        //        VnPayLibrary vnpay = new VnPayLibrary();
        //        //if (vnpayData.Count > 0)
        //        //{
        //        foreach (string s in vnpayData)
        //        {
        //            //get all querystring data
        //            if (!string.IsNullOrEmpty(s) && s.StartsWith("vnp_"))
        //            {
        //                vnpay.AddResponseData(s, vnpayData[s]);
        //            }
        //        }
        //        // }

        //        //vnp_TxnRef: Ma don hang merchant gui VNPAY tai command=pay
        //        string orderId = vnpay.GetResponseData("vnp_TxnRef");

        //        // lấy ra idkiosk để lấy hashsecret trong kiosk
        //        string vnp_HashSecret = "NZWQLJRMIMACCBLXUUHZXWRDPRMJPIVQ";
        //        int IdTransaction = int.Parse(orderId);
        //        int IdKiosk = 0;
        //        DateTime payDate = DateTime.Now;

        //        //vnp_TransactionNo: Ma GD tai he thong VNPAY
        //        long vnpayTranId = Convert.ToInt64(vnpay.GetResponseData("vnp_TransactionNo"));
        //        //vnp_ResponseCode:Response code from VNPAY: 00: Thanh cong, Khac 00: Xem tai lieu
        //        string vnp_ResponseCode = vnpay.GetResponseData("vnp_ResponseCode");
        //        //vnp_SecureHash: MD5 cua du lieu tra ve
        //        String vnp_SecureHash = Request.QueryString["vnp_SecureHash"];


        //        bool checkSignature = vnpay.ValidateSignature(vnp_SecureHash, vnp_HashSecret);
        //        if (checkSignature)
        //        {

        //            if (vnp_ResponseCode.Equals("00"))
        //            {
        //                //Thanh toan thanh cong

        //                using (THUONGMAIDIENTUEntities db = new THUONGMAIDIENTUEntities())
        //                {
        //                    var order = db.ORDERs.Where(x => x.IdOrder == IdTransaction).FirstOrDefault();
        //                    order.IdStatus = 2;
        //                    db.SaveChanges();
        //                    TempData["id"] = IdTransaction;
        //                    return RedirectToAction("Success");
        //                }

        //            }
        //        }

        //    }
        //    return RedirectToAction("Fail");

        //}
        public async Task <ActionResult> Paypal(OrderInfoModel data)
        {
            Session["CustomerName"]    = data.CustomerName;
            Session["CustomerEmail"]   = data.CustomerEmail;
            Session["CustomerAddress"] = data.CustomerAddress;
            Session["CustomerPhone"]   = data.CustomerPhone;
            Session["CustomerComment"] = data.CustomerComment;
            Session["Giftcode"]        = data.Giftcode;

            if (data.PaymentMethod != 0)
            {
                return(Redirect("~/cart/nganluong"));
            }
            else
            {
                string _clientId   = "AV_3qekNnWjCxzPYk3tUMH30mAiXyn4JLOTdLYOqml9fd9gab2GvyTkhCV5WZDaPnbL-6VSTX82r5eF1";
                string _secretKey  = "EBiagCKxqSwIxNKfvuqFZx_POhc8tF40ghBLbWQGT1phGUcszldfVF5RYqqGXFVfzbEN9rTAD0jFevvO";
                var    environment = new SandboxEnvironment(_clientId, _secretKey);
                var    client      = new PayPalHttpClient(environment);
                #region Create Paypal Order
                var itemList = new ItemList()
                {
                    Items = new List <Item>()
                };
                var list  = (Session["cart"] as List <PRODUCT>);
                var total = 0;
                foreach (var item in list)
                {
                    total += (int)item.ProductPrice * item.Quantily;

                    itemList.Items.Add(new Item()
                    {
                        Name     = item.ProductName,
                        Currency = "USD",
                        Price    = item.ProductPrice.ToString(),
                        Quantity = item.Quantily.ToString(),
                        Sku      = "sku",
                        Tax      = "0"
                    });
                }

                #endregion

                var paypalOrderId = DateTime.Now.Ticks;
                //var hostname = $"{HttpContext.Request.Url.Scheme}://{HttpContext.Request.Url.Host}";
                var hostname = "http://m-store.store/"; // nhớ update lại
                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   = $"Invoice #{paypalOrderId}",
                            InvoiceNumber = paypalOrderId.ToString()
                        }
                    },
                    RedirectUrls = new RedirectUrls()
                    {
                        CancelUrl = "http://m-store.store/cart/ThatBai",
                        ReturnUrl = "http://m-store.store/cart/Thanhcong"
                                    //CancelUrl = $"{hostname}/cart/ThatBai",
                                    //ReturnUrl = $"{hostname}/cart/Thanhcong"
                    },
                    Payer = new Payer()
                    {
                        PaymentMethod = "paypal"
                    }
                };

                PaymentCreateRequest request = new PaymentCreateRequest();
                request.RequestBody(payment);

                try
                {
                    // var response = await client.Execute(request);
                    var response = await ExecutePayPalRequest(client, 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(Content(paypalRedirectUrl));
                }
                catch (HttpException httpException)
                {
                    //var statusCode = httpException.StatusCode;
                    //var debugId = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();

                    //Process when Checkout with Paypal fails
                    return(Content("http://m-store.store/home/index"));
                }
            }
        }
示例#24
0
        public async Task <IActionResult> Checkout()
        {
            //SandboxEnvironment(clientId, clientSerect)
            var environment = new SandboxEnvironment("AQpgvR2MiWimK_hj88CQvkSyNg5xE_097z5rawOtDRvidGAGGxrdJdgKhb34l7sQfKTPeA1Z7O-f1Lkl", "ENitUdOKY6bjZ9w3tnqaETbcJeqYLrFot0lBhUgZlccaAEdkr1gFeTWGzh0zG_npFJ1MUGZbTzZLvJWe");
            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.ThanhTien);

            foreach (var item in Cart)
            {
                itemList.Items.Add(new Item()
                {
                    Name     = item.HangHoa.TenHh,
                    Currency = "USD",
                    Price    = item.HangHoa.GiaBan.ToString(),
                    Quantity = item.SoLuong.ToString(),
                    Sku      = "sku",
                    Tax      = "0"
                });
            }
            //itemList.Items.Add(new Item()
            //{
            //    Name = "Coca",
            //    Currency = "USD",
            //    Price = "5",
            //    Quantity = "1",
            //    Sku = "sku",
            //    Tax = "0"
            //});
            //itemList.Items.Add(new Item()
            //{
            //    Name = "Pepsi",
            //    Currency = "USD",
            //    Price = "2",
            //    Quantity = "3",
            //    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:50289/Paypal/Fail",
                    ReturnUrl = "http://localhost:50289/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"));
            }
        }