PayPal. Как динамически создавать позиции в теле запроса заказа PayPal? - PullRequest
0 голосов
/ 13 июня 2019

В настоящее время я пытаюсь интегрировать интеллектуальную кнопку PayPal в основное веб-приложение asp.net.Я ссылался на следующую документацию API, чтобы настроить транзакцию с API PayPal с моего сервера: https://developer.paypal.com/docs/checkout/reference/server-integration/set-up-transaction/#on-the-server. Однако в документации жестко прописаны отдельные позиции в теле запроса заказа PayPal.Сейчас у меня есть переменная lineItems , которая содержит список продуктов, которые я хочу отправить в PayPal.Как динамически создать lineItems в методе BuildRequestBody ()?Ниже приведен мой текущий код:

Обновление Я все еще пытаюсь решить эту проблему.С благодарностью за помощь!

Обновление2 Все еще пытаясь решить эту проблему, помощь очень нужна.

Обновление3 У кого-то есть такая же проблема, какмне?Документация чрезвычайно расплывчата, и мне нужна помощь.

Обновление 4 Нет прогресса, по-прежнему требуется помощь!

        public async Task<HttpResponse> createPaypalTransaction()
        {
            List<Product> lineItems = new List<Product>();
            decimal totalPrice = 4.00;

            lineItems.Add(new Product
            {
                ProductId = 1,
                ProductName = "T-Shirt",
                Quantity = 2,
                Price = 2.00M
            });

            lineItems.Add(new SanitizeProduct
            {
                ProductId = 2,
                ProductName = "Shoe",
                Quantity = 2,
                Price = 2.00M
            });

            var request = new OrdersCreateRequest();
            request.Prefer("return=representation");
            request.RequestBody(BuildRequestBody());
            //3. Call PayPal to set up a transaction
            var response = await PayPalClient.client().Execute(request);

            var result = response.Result<PayPalCheckoutSdk.Orders.Order>();
            Console.WriteLine("Status: {0}", result.Status);
            Console.WriteLine("Order 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);
            }
            AmountWithBreakdown amount = result.PurchaseUnits[0].Amount;
            Console.WriteLine("Total Amount: {0} {1}", amount.CurrencyCode, amount.Value);
            return response; 
        }

        /*
          Method to generate sample create order body with CAPTURE intent

          @return OrderRequest with created order request
         */
        private static OrderRequest BuildRequestBody(decimal totalPrice, List<SanitizeProduct> lineItems)
        {
            OrderRequest orderRequest = new OrderRequest()
            {
                Intent = "CAPTURE",

                ApplicationContext = new ApplicationContext
                {
                    BrandName = "12345",
                    UserAction = "CONTINUE",
                },
                PurchaseUnits = new List<PurchaseUnitRequest>
        {
          new PurchaseUnitRequest{
            ReferenceId =  "PUHF",
            Description = "Customisable Goods",
            CustomId = "CUST-HighFashions",
            SoftDescriptor = "HighFashions",
            Amount = new AmountWithBreakdown
            {
              CurrencyCode = "SGD",
              Value = "230.00",
              Breakdown = new AmountBreakdown
              {
                // The subtotal for all items (quantity * price)
                ItemTotal = new Money
                {
                  CurrencyCode = "SGD",
                  Value = "230.00"
                },
              }
            },

// How do i dynamically generate the list of items instead of hardcoding it?
             Items = new List<Item>
            {
              new Item
              {
                Name = "T-shirt",
                Description = "Green XL",
                Sku = "sku01",
                UnitAmount = new Money
                {
                  CurrencyCode = "SGD",
                  Value = "90.00"
                },
                Tax = new Money
                {
                  CurrencyCode = "SGD",
                  Value = "10.00"
                },
                Quantity = "1",
                Category = "PHYSICAL_GOODS"
              },
              new Item
              {
                Name = "Shoes",
                Description = "Running, Size 10.5",
                Sku = "sku02",
                UnitAmount = new Money
                {
                  CurrencyCode = "SGD",
                  Value = "45.00"
                },
                Tax = new Money
                {
                  CurrencyCode = "SGD",
                  Value = "5.00"
                },
                Quantity = "2",
                Category = "PHYSICAL_GOODS"
              }
            },
          }
    }
            };
            return orderRequest;
        }
...