示例#1
0
        public async Task <Guid> ConfirmOrder(string token)
        {
            PayPalEnvironment environment = CreateEnvironment();
            var client = new PayPalHttpClient(environment);

            var request = new OrdersCaptureRequest(token);

            request.Prefer("return=representation");
            request.RequestBody(new OrderActionRequest());
            try
            {
                HttpResponse response = await client.Execute(request);

                PaypalOrder order     = response.Result <PaypalOrder>();
                Guid        invoiceId = Guid.Parse(order.PurchaseUnits.First().CustomId);

                return(invoiceId);
                //_eventBus.Trigger(new InvoicePaymentProviderPayedEventData(invoiceId));
            }
            catch (HttpException httpException)
            {
                var debugId = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                throw httpException;
            }
        }
示例#2
0
        public async Task <Invoice> UpdateInvoice(Invoice invoice, Domain.Entities.Order order)
        {
            ApplicationContext applicationContext = new()
            {
                ReturnUrl = Path.Combine(_paymentProviderOptions.ReturnUrl, order.Id),
                CancelUrl = _paymentProviderOptions.CancelUrl
            };

            PaypalOrder paypalOrder = await _paypalService.GetOrder(invoice.Transaction);


            PaypalOrder paypalOrderNew = await _paypalService.CreatePaypalOrder(paypalOrder.PurchaseUnits.Select(x => new PurchaseUnitRequest()
            {
                AmountWithBreakdown = x.AmountWithBreakdown,
                CustomId            = x.CustomId,
                Description         = x.Description
            }), applicationContext);

            await _paypalService.CancelInvoice(invoice.Transaction);

            Uri uri = new(paypalOrderNew.Links.Single(l => l.Rel == "approve").Href);

            invoice.Link        = uri;
            invoice.Transaction = paypalOrderNew.Id;

            return(invoice);
        }
    }
示例#3
0
        public async Task <Invoice> CreateInvoice(Domain.Entities.Order order)
        {
            List <PurchaseUnitRequest> purchaseUnits = new();

            purchaseUnits.Add(new()
            {
                CustomId            = order.Id,
                Description         = "Venta de Productos",
                AmountWithBreakdown = new AmountWithBreakdown()
                {
                    CurrencyCode = order.Currency.ToString(),

                    Value = Convert.ToInt32(order.TotalAmount).ToString()
                }
            });

            ApplicationContext applicationContext = new()
            {
                ReturnUrl = Path.Combine(_paymentProviderOptions.ReturnUrl, order.Id),
                CancelUrl = _paymentProviderOptions.CancelUrl
            };

            PaypalOrder payPalOrder = await _paypalService.CreatePaypalOrder(purchaseUnits, applicationContext);

            Uri uri = new(payPalOrder.Links.Single(l => l.Rel == "approve").Href);

            return(new()
            {
                Link = uri,
                Transaction = payPalOrder.Id,
                PaymentProvider = PaymentProvider.PayPal,
                OrderId = order.Id
            });
        }
示例#4
0
        public async static Task <PayPalHttp.HttpResponse> createOrder()
        {
            PayPalHttp.HttpResponse response;
            // Construct a request object and set desired parameters
            // Here, OrdersCreateRequest() creates a POST request to /v2/checkout/orders
            var order = new OrderRequest()
            {
                CheckoutPaymentIntent = "CAPTURE",
                PurchaseUnits         = new List <PurchaseUnitRequest>()
                {
                    new PurchaseUnitRequest()
                    {
                        AmountWithBreakdown = new AmountWithBreakdown()
                        {
                            CurrencyCode = "USD",
                            Value        = "5.00"
                        }
                    }
                },
                ApplicationContext = new ApplicationContext()
                {
                    ReturnUrl = "https://www.example.com",
                    CancelUrl = "https://www.example.com"
                }
            };


            // Call API with your client and get a response for your call
            var request = new OrdersCreateRequest();

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

            var statusCode = response.StatusCode;

            PayPalCheckoutSdk.Orders.Order result = response.Result <PayPalCheckoutSdk.Orders.Order>();
            Console.WriteLine("Status: {0}", result.Status);
            Console.WriteLine("AppZeroAPI.Entities.CustomerOrder Id: {0}", result.Id);
            // Console.WriteLine("Intent: {0}", result.Intent);
            Console.WriteLine("Links:");
            foreach (LinkDescription link in result.Links)
            {
                Console.WriteLine("\t{0}: {1}\tCall Type: {2}", link.Rel, link.Href, link.Method);
            }
            return(response);
        }
示例#5
0
        public async Task <PaypalOrder> CaptureOrder(string transaction)
        {
            PayPalCheckoutSdk.Core.PayPalEnvironment environment = CreateEnvironment();
            var client = new PayPalHttpClient(environment);

            var request = new OrdersCaptureRequest(transaction);

            request.Prefer("return=representation");
            request.RequestBody(new OrderActionRequest());
            try
            {
                HttpResponse response = await client.Execute(request);

                PaypalOrder order = response.Result <PaypalOrder>();

                return(order);
            }
            catch (HttpException httpException)
            {
                var debugId = httpException.Headers.GetValues("PayPal-Debug-Id").FirstOrDefault();
                throw httpException;
            }
        }
示例#6
0
文件: Order.cs 项目: p8b/OSnack
        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);
        }