Prestashop: Poner una comisión al modulo de pago con PayPal.

Actualizado Abril 2016.

En nuestra tienda online desarrollada con Prestashop podemos establecer varios métodos de pago. Entre ellos, PayPal. Para que se pueda pagar a través de esta plataforma debemos instalar el módulo de pago correspondiente.

PayPal nos cobrará una comisión de, aproximadamente, un 3,5% por cada operación. El Prestashopproblema es que, si queremos cobrarle ese recargo al cliente en el momento de efectuar el pago, el módulo de PayPal para Prestashop no nos da esa opción. Tenemos que modificar el código en PHP del módulo para cambiar la forma de calcular el total y añadir esa comisión como un gasto más de manipulación y transporte.

Prestashop 1.5 y 1.6

Aquí tenéis el módulo de pago de PayPal con recargo: paypal-comision.zip

Este módulo incluye un cambio: he modificado el código del archivo paypal.php para añadir la variable id_carrier. De este modo, en caso de utilizar varios transportistas en nuestra tienda online, se utilizará en los cálculos el transportista que se haya seleccionado durante el proceso de compra.

Este módulo es una aportación de la Comunidad Prestashop. En el foro podéis encontrar comentarios y dudas resueltas sobre el tema.

También podéis dejar vuestros comentarios y preguntas al final de este post.

Prestashop 1.4

Aquí tenéis los pasos para modificar el módulo de pago de PayPal:

1 – Hacer primero una copia de seguridad de los archivos que vamos a modificar. En el caso de Prestashop 1.4 están en la carpeta:

modules/paypal/payment

2 – Cambiar el total a cobrar en el archivo submit.php para añadir la comisión:

Después de la línea:

include(_PS_ROOT_DIR_.’/header.php’);

Añadir:

//COMISION
$comisionP = 1.03;    //para una comisión de un 3%
$totalP = $cart->getOrderTotal(true, Cart::BOTH);   //recuperamos el total del carrito
$totalP = $totalP * $comisionP;    //este será el total con comisión

Justo debajo, donde se asignan los valores a la variable $smarty, sustituir la línea:

‘total’ => $cart->getOrderTotal(true, Cart::BOTH),

Por esta otra:

‘total’ => $totalP,

– Cambiar en paypalpayment.php el total a cobrar y los gastos de envío para añadir la comisión y que aparezca como un gasto de manipulación y transporte en el desglose de la compra:

Después de la línea:

$paymentAmount = (float)($cart->getOrderTotal());

Añadir:

//COMISION
$comision = $paymentAmount * 0.03;    //calculo la comisión
$paymentAmount = $paymentAmount + $comision;    //la sumo al total

Después de la línea:

$shipping = $this->PayPalRound($cart->getOrderShippingCost($cart->id_carrier, false));

Añadir:

//envio + comision:
$shipping = $shipping + $comision;

– Cambiar el texto que aparece en la página de confirmación para avisar de que se sumará una comisión al total:

En el archivo modules/paypal/es.php (o el archivo del idioma que corresponda), buscar la línea donde pone «Ha elegido pagar con PayPal.» y añadir un texto al lado para explicar que hay una comisión.

5 – Subir los archivos modificados al servidor y listo.  :  )

Hay 41 Comentarios

  1. Cristina dice:

    Hola! tengo la version 1.5 de prestashop y en el módulo de paypal, los dos archivos submit.php que he encontrado no tienen la linea modificada…
    para esta versión, cómo podemos hacerlo?
    MiL GRACIAS!!!!

  2. Prestashop: Poner una comisión al modulo de pago con PayPal. | oh!disea · diseño creativo , es interesante, desde que os recibo no puedo parar de mirar todas vuestras sugerencias y me alegra cuando recibo uno más, sois lo mejor en español, me encata vuestra presentación y el curre que hay detrás. Un beso y abrazo,GRACIAS POR VUESTRO TRABAJO, nos alegrais la vida.

  3. Jesús dice:

    No se si influirá que tenga activado el pago exprés, pero a mi no me cambia el precio y tampoco sale el mensaje de la comisión. Tengo Prestashop 1.4.7.3

  4. Sara dice:

    Hola! Gracias por la explicación. Lo he intentado pero la verdad es que no ha surtido efecto. Estoy usando prestashop 1.5, así que imagino que el módulo de paypal es diferente y se debe a eso… las líneas que hay que buscar no son las mismas y no logro saber dónde tengo que modificar las cosas.

  5. Hola, tengo la version 1.5.4.1 de prestashop y la 3.5.5 del módulo de paypal y no existe la carpeta payment, encuentro 2 archivos llamados submit.php en la carpeta controllers y integral_evolution pero no tienen las línea que tu mencionas (include(_PS_ROOT_DIR_.’/header.php’);)

    Un saludo

  6. Hola,

    Estoy buscando la carpeta payment dentro del modulo de PayPal
    y no esta alguna idea para la ultima versión
    Uso la versión de PayPal :3.5.5

    Muchas gracias

  7. Pitufo dice:

    Tengo la versión 3.5.5 de PayPal y no se encuentra la carpeta /payment, como puedo cambiar la comisión en esta versión?

    Gracias!

  8. Roberto dice:

    Buenas,

    Tras hacer los cambios, he realizado una prueba y en la página submit.php me indica «- El importe total de su pedido es de 0,00 € (TTC)», como puede hacer para que aparezca el valor correcto¿?

    Debo decir que a continuación en la página donde te dirige paypal ya aparece el total y el gasto de manipulación y trasporte correctamente.

    Yo he probado a cambiar en el archivo submit.php la linea:
    $totalP = $cart->getOrderTotal(true, Cart::BOTH); //recuperamos el total del carrito
    por:
    $totalP = $cart->getOrderTotal(true, PayPal::BOTH); //recuperamos el total del carrito

    Pero no hubo cambios.

    Gracias por el aporte y a la espera de una respuesta.

  9. Roberto dice:

    Tras hacer los cambios, todo correcto.

    Pero a la hora de comprobar en payapal la cantidad cobrada sigue siendo la misma sin el porcentaje indicado.

    Alguna pista u opción a modificar en paypal.

  10. Rafael dice:

    Hola muy buenas, he aplicado el codigo tal y como indicas en los diferentes archivos, pero sigue sin calcularme la comisión y sin aparecer el comentario. Hay que hacer algo más una vez modificados y subidos via FTP.
    Muchas gracias.

  11. vicent dice:

    Hola Rafael,
    ¿Qué versión de Prestashop utilizas? Sé que funciona con la 1.4, pero no estoy seguro de que funcione en la 1.5.
    Si has cambiado el mensaje en modules/paypal/es.php, al menos esto debería aparecer. ¿Puede que estés modificando los archivos de otro módulo de Paypal distinto al que está activo?
    Un saludo!

  12. Cristhian dice:

    Hola tengo la version 1.6 tendras en modulo paypal con recargo para descargarlo

  13. vicent dice:

    Hola Cristhian,

    Aquí tienes el módulo con recargo para Prestashop 1.5.2 :

    http://www.prestashop.com/forums/topic/210740-modulo-paypal-con-recargo-152/

    Puedes probarlo con la versión 1.6, a ver si funciona corectamente. Ya nos dices qué tal ha ido. ¡Gracias!

  14. ANGEL dice:

    Hola, tras bajar y hacer las modificaciones en los 3 archivos indicados, me sale este mensaje al subir cualquiera de los 3 por FTP:
    Respuesta: 550 es.php: Permission denied
    Error: Error crítico de transferencia de fichero
    ¿Es posible que el módulo PayPal este codificado y no acepta ninguna modificación?
    Gracias, un saludo.

  15. vicent dice:

    Hola Ángel,

    Ese error es debido a los permiosos que tienen los ficheros en el servidor. Seguramente, has instalado el módulo de PayPal desde el Backend de Prestashop. En este caso, los archivos se instalan con permisos para el usuario Apache del servidor y tu cuenta de usuario FTP no tiene permisos para modificarlos o reescribirlos.

    Tienes que cambiar los permisos de los archivos que quieres reescribir desde el cliente FTP que utilizas (Filezilla o similar). Puedes hacerlo con el botón derecho del ratón sobre el archivo que quieres cambiar. Pones los permisos CHMOD a 777 y después podrás subir los archivos modificados.

    Es posible que el sistema no te deje cambiar esos permisos por FTP. En este caso, tendrás que entrar al panel de control del hosting, buscar una utilidad para la gestión de los archivos y borrar los archivos antiguos desde allí. Una vez borrados, podrás subir los archivos nuevos.

    Avísame si tienes cualquier duda. Un saludo!

  16. ANGEL dice:

    Muchas gracias por su repuesta, efectivamente lo hice y cambié los permisos a 777 y no había manera de modificar, borrar o sustituir, de hecho acabo de intentar también borrar es.php desde el panel y tampoco, me sale el siguiente mensaje:
    No se pudo eliminar /httpdocs/modules/paypal/es.php: filemng: Error occurred during /bin/rm command.
    Gracias, un saludo.

  17. antoniio dice:

    hola, gracias por tus aportes, no tienes ya uno modificado que puedas compartir. gracias..

  18. vicent dice:

    Hola Antonio,
    La versión del módulo que modifiqué en su día es para Prestashop 1.4. Si quieres el módulo con esa función ya incorporada para Prestashop 1.6, aquí tienes uno:
    http://www.alabazweb.com/es/253-modulo-pago-paypal-con-recargo-para-prestashop-16.html

    Es de pago, pero el precio es bastante razonable y tienen un buen soporte técnico. ¡Un saludo!

  19. Mario_Texmon dice:

    En primer lugar muchas gracias por el módulo, Vicent.

    En segundo, resulta que el porcentaje no me lo aplica correctamente. Uso Prestashop 1.6.1 y parece funcionar todo bien, pero he añadido un 3,4 y un 0,35 en los valores del módulo (3,4% de porcentaje y 0,35 céntimos fijos por operación) y no sé dónde se pierde, pero la realidad es que no aplica los porcentajes debidamente.

    En primera instancia pensé que los números no cuadran porque para el cálculo de la comisión no tenía en cuenta el transporte, pero no es así. ¿Alguna idea?

    Gracias,

  20. Mario_Texmon dice:

    Vale, veo que el problema está en que no añade correctamente el gasto de envío que yo le marco en la tienda.

    Es decir, el producto vale 745 € y el envío 40 €. La comisión del 3,4% + 0.35 € sale a 27,04 € y el programa lo marca bien, el problema es que en el desglose de costes aparece:

    745 € (Coste del producto)

    27,04 € (Comisión correcta de la suma de «coste de producto + transporte»)

    33,06 € (Dice ser el coste de «Envío y manipulación»)

    Osease, los 40 € de envío mios desaparecen y se cambia por esos 33,06 € que no sé de dónde salen

  21. Vicent Badia dice:

    Hola Mario,

    Creo que esos 33,06€ son los 40€ del envío, pero sin el IVA:

    33,06 * 1,21 = 40€

    Revisa la configuración de los gastos de envío en Transporte > Transportistas. ¿Has seleccionado el tipo de IVA a incluir?

  22. israelpaya dice:

    Hola,

    He seguido los pasos y modificado los 3 archivos cuidadosamente, pero sigue sin hacer nada. Ni siquiera aparece si quiera el comentario. Solo tengo un módulo Paypal (una sola carpeta paypal), con lo que no puedo estar modificando los archivos de otra carpeta. Utilizo la versión de Prestashop 1.4.8.2. ¿Alguna idea, por favor?

  23. Vicent Badia dice:

    Hola Israel,

    Si has modificado el archivo modules/paypal/es.php , al menos el texto que has puesto debería aparecer.
    Comprueba por FTP la carpeta del servidor, para ver las fechas de modificación de los archivos y asegurarte de que se han modificado.
    ¿Aparece algún mensaje de error? ¿El módulo funciona normalmente?
    Si no aparece ningún error, puedes poner la tienda en modo Debug:

    http://www.rubenortiz.es/2012/01/05/prestashop-habilitar-modo-debug/

    Así aparecerán los errores y alertas que puedan haber en la aplicación.

    Dinos si aparece algún error o si era un problema de permisos en el servidor. Un saludo!

  24. israelpaya dice:

    Hola Vicent,
    Las modificaciones las estoy haciendo en local. Me he asegurado de que están hechas y he revisado el código. También he activado el Debug, pero no da ningún error. De hecho, la aplicación funciona correctamente, pero no hace el cálculo del recargo de Paypal. Funciona todo como si no se hubiera hecho ningún cambio.

  25. Vicent Badia dice:

    Uff… sí que es raro!
    Prueba alguna de estas cosas si no lo has hecho ya:

    – Ve a la configuración de Prestashop y vacía la caché.
    – Activa la opción de forzar la compilación.
    – Haz un backup de los archvos del módulo de Paypal y después cárgate la carpeta. Prueba a hacer el pago con Paypal a ver qué pasa. Ya sé que lo habrás mirado, pero es posible que el sistema esté utilizando otro módulo distinto al que tú estás modificando.
    – Si la carpeta que estás modificando es la correcta, prueba a cambiar los textos que aparecen en pantalla, para ver si esos cambios sí que se realizan en el módulo.

    Suerte, ya me cuentas.

  26. israelpaya dice:

    Hola Vicent,
    He vaciado la caché. He activado la opción forzar compilación. He eliminado la carpeta del módulo Paypal y al efectuar la compra no aparecía la forma de pago Paypal … hasta ahí todo correcto. He probado a cambiar los textos que aparecen en pantalla y no se cambian y sigue sin aplicar el cargo. Esto es muy raro. Ya no se lo que hacer.

  27. daniel dice:

    Hola, muy bueno tu sitio.

    Necesito ayuda con un tema de Paypal y no sé cómo seguir, espero me puedas ayudar. Estoy armando una tienda para Uruguay en Prestashop y no logro hacer que el bloque de paypal se muestre SIEMPRE en el checkout (aunque todos los productos estén pesos uruguayos) ?

    Quiero vender en Pesos Uruguayos y que el bloque de Paypal aparezca en el checkout y por supuesto haga la conversión a USD.

    Tengo PS1.6 y estoy probando con Paypal Europa. Actualmente ya he verificado que hace la conversión aún sin aparecer en el checkout pero obviamente necesito que para los clientes APAREZCA.

    Muchas gracias y saludos desde Uruguay.

    • Herman dice:

      Daniel, veo que utilizas Prestashop en Uruguay y al parecer lograste instalar un modulo PayPal.
      He buscado información y no he podido resolver ese paso. ¿Cual es el módulo PAYPAL que utilizas que funciona para nuestro país?
      Se agradece tu experiencia.
      Muchas gracias
      Herman

  28. Vicent Badia dice:

    Hola Daniel,

    Los distintos módulos de pago que tienes instalados se pueden configurar para que aparezcan o no según la moneda elegida en el frontend. Yo diría que hay un problema con esas restricciones. Dale un vistazo a esto:

    restricciones moneda modulos de pago Prestashop

    ¡Un saludo!

  29. soporte666 dice:

    buen dia, estoy en mexico, segun paypal esta prohibido cobrar comisiones por el uso de su servicio, alguien ha tenido problemas con paypal por usar modulos asi?

  30. lorena dice:

    hola, uso prestashop 1.6 alguien puede decirme si esto aun funciona?

  31. Daniel dice:

    Buenas he revisado este articulo, y esta bastante bien, pero mal calculada la comision de paypal, de esa forma se sigue perdiendo dinero. Aun si muy trabajado.

  32. ivan dice:

    Con 1.6.2 funciona, lo único que hay que configurar la cuenta ya como PayPal business. Al instalar no se instala como un módulo nuevo es la actualización del que ya tenemos si la tienes instalada.

  33. abebox dice:

    Tengo el mismo problema con PRESTASHOP 1.6.1.6 y PayPal USA, Canada 1.3.9 y todo comenzo cuando paypal hizo las modificaciones de seguridad este año.
    Antes PS daba un error cuando se intentaba hacer un pago con una moneda no habilitada para PayPal en el backoffice.
    Ahora no da el error sino que intenta procesar el pago en PayPal y por supuesto aparece el error de PayPal»Things don’t appear to be working at the moment..»
    Existe una forma que el cliente pueda seguir viendo los precios en su moneda local pero que el sistema tome USD al hacer checkout ?

  34. Juan dice:

    Bazofia de artículo que no funciona

  35. Vicent Badia dice:

    Hola Juan,
    La solución funciona en las versiones de Prestashop que indica el artículo. Si no te gusta, en lugar de aprovecharte del trabajo de los demás e insultar, aprende a programar y propón tú una solución mejor. Eso quedaría bastante más profesional que tu comentario.

  36. Ray dice:

    ¿Alguna solución para prestashop 1.7?

    Muchas gracias

  37. Alejandro dice:

    Hola buenas, lo hemos probado en nuestro Prestashop 1.6 y funciona perfectamente. Lo único que, aunque en el porcentaje de comisión lo cobramos en paypal, en la factura no muestra esa comisión. ¿Sabes cual seria el código a introducir en el invoices.php o donde corresponda para que se muestre el total de la factura con su porcentaje de comisión y muestre el total real que paga el cliente?

  38. Hola!
    Gracias por el aporte… ¿Funciona con prestashop 1.7? y de ser así…
    ¿Cómo puedo reflejarlo en la factura?

    Mil gracias!

  39. Vicent Badia dice:

    Hola!
    No he probado el módulo con Prestashop 1.7, lo siento. Quizá funcione con alguna modificación. Si alguien lo ha probado puede comentarlo aquí.

    Para modificar la factura y poder incluir la comisión de PayPal, tenemos que editar la plantilla que genera esa factura. En el archivo pdf/invoice.tpl podemos añadir una condición y, en el caso de que el pago sea mediante PayPal, mostrar esa comisión y sumarla al total:

    {if $payment->payment_method === ‘Paypal’}
    añadimos una línea en los subtotales para la comisión de PayPal
    sumamos esa comisión al total de la factura
    {/if}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Partner 480interactive
¡Compartelo!
  Newsletter
NEWSLETTER

Suscríbete a nuestra Newsletter para recibir en tu e-mail las últimas noticias sobre Diseño y Marketing Online.

* no compartiremos tus datos.
×