Я думаю, что ваша проблема не в API PayPal.Вы проверили, что все отлично работает с вашими параметрами, переданными в PayPal в этом случае 50% скидки?
После Документации PayPal вы должны указать отрицательное значение, чтобы отразить скидку на заказ.Таким образом, все складывается в общую сумму.
Источник: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing
Обновление с кодом: (от Ника)
У меня есть сервис PayPal, который выполняет все виды вещей, но следующий код должен дать вам представление о том, как действует скидка.Скидка не является особым типом, это продукт, как и любой другой, за исключением того, что он маскируется, называя его скидкой и устанавливая ее цену в отрицательное число.
List<PaymentDetailsItemType> items = paymentDetails.PaymentDetailsItem;
foreach (ShoppingCartItem item in cart.ShoppingCartItems)
{
items.Add(new PaymentDetailsItemType
{
Name = item.Book.Title,
Quantity = item.Quantity,
Number = item.BookId.ToString(),
Amount =
new BasicAmountType
{currencyID = CurrencyCodeType.USD,
value = (item.Book.Price).To2Places()}
});
}
if (cartTotals.Discount > 0)
{
items.Add(new PaymentDetailsItemType
{
Name = "Promo Code Discount",
Quantity = 1,
Number = "PromoCode",
Amount =
new BasicAmountType
{
currencyID = CurrencyCodeType.USD,
value = (cartTotals.Discount*-1).To2Places()
}
});
}