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; } }
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); } }
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 }); }
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); }
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; } }
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); }