让电子商务网站运行ZNode。我们发送税,运费,订单总额等。一切正常,直到应用订单级折扣(比如说50%)。我们收到PayPal的回复,说明如下:
购物车项目金额的总数与订单金额不匹配。
我正在遍历API,我找不到任何应用订单级别折扣的内容。 FWIW,用户在我们的网站上应用折扣代码,然后转移到PayPal。
答案 0 :(得分:18)
我认为您的问题不是PayPal API。 您检查了在这个50%的折扣案例中,您的参数传递给PayPal的所有内容都完美无缺吗?
在PayPal文档之后,您应提供负值以反映订单的折扣。所以一切都会增加总额。
使用代码更新:(由尼克)
我有一个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()
}
});
}
答案 1 :(得分:1)
通过PayPal API发送折扣的另一个选项是使用PAYMENTREQUEST_n_SHIPDISCAMT
这实际上是一个运费折扣,但工作得很好,并且是一行。
但它确实说PalPal端的运费折扣。