Paypal Express Checkout: применить скидку к заказу - PullRequest
8 голосов
/ 10 августа 2011

У сайта электронной коммерции работает ZNode. Мы отправляем налог, доставку, сумму заказа и т. Д. Все работает нормально, пока не применяется скидка на уровне заказа (скажем, 50%). Мы получаем ответ от PayPal, в котором говорится следующее:

Итоговые суммы товаров в корзине не соответствуют суммам заказа.

Я просматриваю API и не могу найти ничего, чтобы применить скидку на уровне заказа. FWIW, пользователь применяет коды скидок на нашем сайте, а затем переводится в PayPal.

Ответы [ 2 ]

18 голосов
/ 10 августа 2011

Я думаю, что ваша проблема не в API PayPal.Вы проверили, что все отлично работает с вашими параметрами, переданными в PayPal в этом случае 50% скидки?

После Документации PayPal вы должны указать отрицательное значение, чтобы отразить скидку на заказ.Таким образом, все складывается в общую сумму.

Источник: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing

enter image description here

Обновление с кодом: (от Ника)

У меня есть сервис 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 голос
/ 23 сентября 2015

Другой вариант отправки скидки через API PayPal - PAYMENTREQUEST_n_SHIPDISCAMT

На самом деле это скидка на доставку, но она отлично работает и состоит из одной строки.

Но это говорит о скидке на доставку в конце PalPal.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...