2011-08-09 17 views
7

Tener un sitio de comercio electrónico ejecutando ZNode. Enviamos impuestos, envíos, totales de pedidos, etc. Todo funciona bien hasta que se aplica un descuento de nivel de pedido (digamos 50%). Recibimos una respuesta de PayPal que dice lo siguiente:Pago exprés de Paypal: Aplicar descuento de pedido

Los totales de los montos de los artículos del carrito no coinciden con los montos de los pedidos.

Estoy atravesando la API y no encuentro nada para aplicar un descuento en el nivel de la orden. FWIW, el usuario está aplicando códigos de descuento en nuestro sitio, y luego se está transfiriendo a PayPal.

Respuesta

18

Creo que su problema no es la API de PayPal. ¿Ha comprobado que todo funciona perfecto con sus parámetros pasados ​​a PayPal en este caso de descuento del 50%?

Después de la Documentación de PayPal, debe proporcionar un valor negativo para reflejar un descuento en un pedido. Entonces todo se suma a la cantidad total.

Fuente: https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_ECCustomizing

de actualización con código: (Nick)

que tienen un servicio de paypal que hace todo tipo de cosas, pero el siguiente código debería darle una idea de cómo funciona el descuento. El descuento no es un tipo especial, es un producto como cualquier otro, excepto que se disfraza llamándolo como un descuento y estableciendo su precio en un número negativo.

  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() 
             } 
          }); 
     } 
+0

Establecí TaxTotal, ShippingTotal, ItemTotal y OrderTotal. Todo esto funciona, excepto cuando se establece un código de descuento, ya que el artículo + envío + impuesto no se sumará al total de la orden, ya que OrderTotal tiene una cantidad extraída. No hay ningún lugar que pueda encontrar para establecer una cantidad de descuento. ¿Algunas ideas? – StephenPAdams

+0

@look respuesta actualizada – Skomski

+4

¿Está diciendo que necesito crear un elemento y establecer el valor en negativo? ¿Y luego actualizo el ItemTotal para reflejar todos los artículos así como también el artículo negativo que agregué a la cuenta para el descuento? – StephenPAdams

1

Otra opción para el envío de un descuento a través de la API de PayPal utilizar el PAYMENTREQUEST_n_SHIPDISCAMT

que es en realidad un descuento del envío, pero funciona muy bien, y es una sola línea.

Pero sí indica el descuento de envío en el extremo PalPal.

Cuestiones relacionadas