В настоящее время я пытаюсь интегрировать интеллектуальную кнопку 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;
}