Пример #1
0
        public async Task <string> CreateOrder(WS_Ordre ordre)
        {
            var total = 0.00;

            ordre.OrdreLinjer.ForEach(x => total += x.EnhedsPris);
            string totalString = total.ToString();

            totalString = totalString.Replace(',', '.');
            HttpResponse response;
            var          order = new OrderRequest()
            {
                CheckoutPaymentIntent = "CAPTURE",
                PurchaseUnits         = new List <PurchaseUnitRequest>()
                {
                    new PurchaseUnitRequest()
                    {
                        AmountWithBreakdown = new AmountWithBreakdown()
                        {
                            CurrencyCode = "USD",
                            Value        = totalString
                        }
                    }
                },
                ApplicationContext = new ApplicationContext()
                {
                    ReturnUrl = "http://www.webshop.nillertron.com/api/Order/" + ordre.Id,
                    CancelUrl = "http://www.webshop.nillertron.com"
                }
            };

            var request = new OrdersCreateRequest();

            request.Prefer("return=representation");
            request.RequestBody(order);
            response = await Client().Execute(request);

            var   statusCode = response.StatusCode;
            Order result     = response.Result <Order>();
            var   url        = result.Links.Where(x => x.Rel.ToLower() == "approve").FirstOrDefault();

            return(url.Href);
        }
Пример #2
0
        public async Task <Order> CreateOrder(CreateOrderCommand command, bool debug = true)
        {
            var request = new OrdersCreateRequest();

            request.Prefer("return=representation");
            request.RequestBody(BuildRequestBody(command));
            //3. Call PayPal to set up a transaction
            var response = await PayPalClientService.Client().Execute(request);


            //if (debug)
            //{
            var result = response.Result <Order>();

            Console.WriteLine("Status: {0}", result.Status);
            Console.WriteLine("Order Id: {0}", result.Id);
            Console.WriteLine("Intent: {0}", result.CheckoutPaymentIntent /*Intent*/);
            Console.WriteLine("Links:");
            foreach (LinkDescription link in result.Links)
            {
                Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
            }
            PayPalCheckoutSdk.Orders.AmountWithBreakdown amount = result.PurchaseUnits[0].AmountWithBreakdown /*Amount*/;
            Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value);
            //}

            return(result);
            //return Json(new
            //{
            //  id = result.Id,
            //  CheckoutPaymentIntent = result.CheckoutPaymentIntent,
            //  CreateTime = result.CreateTime,
            //  ExpirationTime = result.ExpirationTime,
            //  Links = result.Links,
            //  Payer = result.Payer,
            //  PurchaseUnits = result.PurchaseUnits,
            //  Status = result.Status,
            //  UpdateTime = result.UpdateTime
            //});
        }
Пример #3
0
        public async Task <PayPalOrder> CreatePendingOrder(Guid accountId, decimal amount)
        {
            // TODO: Make this range configurable.
            if (amount <= 0 || amount > 500)
            {
                throw new Exception("Invalid amount.");
            }

            _logger.LogInformation("Creating pending paypal order for {AccountId} for {Amount}", accountId, amount);

            var account = await _accountsService.GetAccount(AccountIdentification.ById(accountId));

            account.NotNull();

            var    potentialOrderId = Guid.NewGuid();
            string paypalOrderId;

            {
                var client  = _payPalClientProvider.BuildHttpClient();
                var request = new OrdersCreateRequest();
                request.Prefer("return=representation");
                request.RequestBody(new OrderRequest
                {
                    CheckoutPaymentIntent = "CAPTURE",
                    PurchaseUnits         = new List <PurchaseUnitRequest>
                    {
                        new PurchaseUnitRequest
                        {
                            ReferenceId         = potentialOrderId.ToString(),
                            AmountWithBreakdown = new AmountWithBreakdown
                            {
                                Value        = amount.ToString(CultureInfo.InvariantCulture),
                                CurrencyCode = "USD"
                            }
                        }
                    }
                });

                var response = await client.Execute(request);

                if (response.StatusCode != HttpStatusCode.Created)
                {
                    _logger.LogError("Invalid status code from PayPal order create: status: {Status} response: {Response}", response.StatusCode, SerializePayPalType(response.Result <object>()));
                    throw new Exception("Invalid PayPal response");
                }

                paypalOrderId = response.Result <Order>().Id;
            }

            // Great, we created a PayPal order, let's add the record into the database.
            using (var con = new ConScope(_dataService))
            {
                var pendingOrder = new PayPalOrder
                {
                    Id            = potentialOrderId,
                    OrderStatus   = PayPalOrderStatus.Pending,
                    PayPalOrderId = paypalOrderId,
                    AccountId     = account.Id,
                    Amount        = amount
                };

                await con.Connection.InsertAsync(pendingOrder);

                return(pendingOrder);
            }
        }
Пример #4
0
        internal async Task <PayPalCheckoutSdk.Orders.Order> ConvertToPayPalOrder()
        {
            OrderRequest orderRequest = new OrderRequest();

            orderRequest.CheckoutPaymentIntent = "CAPTURE";
            orderRequest.ApplicationContext    = new ApplicationContext()
            {
                BrandName          = AppConst.Settings.BrandName,
                UserAction         = "CONTINUE",
                ShippingPreference = "SET_PROVIDED_ADDRESS",
            };

            orderRequest.PurchaseUnits = new List <PurchaseUnitRequest>()
            {
                new PurchaseUnitRequest()
                {
                    ReferenceId         = "PUHF",
                    Description         = "Snacks and food products",
                    CustomId            = "CUST-HighFashions",
                    SoftDescriptor      = "Snacks",
                    AmountWithBreakdown = new AmountWithBreakdown()
                    {
                        CurrencyCode    = AppConst.Settings.PayPal.CurrencyCode,
                        Value           = TotalPrice.ToString("0.00"),
                        AmountBreakdown = new AmountBreakdown()
                        {
                            ItemTotal = new Money()
                            {
                                CurrencyCode = AppConst.Settings.PayPal.CurrencyCode,
                                Value        = TotalItemPrice.ToString("0.00")
                            },
                            Shipping = new Money()
                            {
                                CurrencyCode = AppConst.Settings.PayPal.CurrencyCode,
                                Value        = ShippingPrice.ToString("0.00")
                            },
                            Discount = new Money()
                            {
                                CurrencyCode = AppConst.Settings.PayPal.CurrencyCode,
                                Value        = TotalDiscount.ToString("0.00")
                            }
                        }
                    },
                    Items = ConvertItem(),
                }
            };
            if (User != null)
            {
                orderRequest.PurchaseUnits.FirstOrDefault().ShippingDetail = new ShippingDetail()
                {
                    Name = new Name()
                    {
                        FullName = $"{User.FirstName} {User.Surname}"
                    },
                    AddressPortable = new AddressPortable()
                    {
                        AddressLine1 = FirstLine,
                        AddressLine2 = SecondLine,
                        PostalCode   = Postcode,
                        CountryCode  = "GB",
                        AdminArea1   = "UK",
                        AdminArea2   = City
                    },
                };
                orderRequest.Payer = new Payer()
                {
                    Email = User.Email,
                    Name  = new Name()
                    {
                        GivenName = User.FirstName,
                        Surname   = User.Surname
                    },
                    AddressPortable = new AddressPortable()
                    {
                        AddressLine1 = FirstLine,
                        AddressLine2 = SecondLine,
                        PostalCode   = Postcode,
                        CountryCode  = "GB",
                        AdminArea2   = City
                    }
                };
            }
            else
            {
                orderRequest.ApplicationContext.ShippingPreference = "GET_FROM_FILE";
            }
            OrdersCreateRequest request = new OrdersCreateRequest();

            request.Prefer("return=representation");

            request.RequestBody(orderRequest);
            var response = await PayPalClient.client().Execute(request).ConfigureAwait(false);

            PayPalCheckoutSdk.Orders.Order paypalOrder = response.Result <PayPalCheckoutSdk.Orders.Order>();

            return(paypalOrder);
        }