Prestashop: Put a commission to PayPal payment module.

Updated April 2016.

In our online store developed with Prestashop we can establish various payment methods. Including PayPal. So that you can pay through this platform must install the module payment.

PayPal will charge us a fee of approximately 3.5% per transaction. If Prestashopwe collect the surcharge to the customer at the time of payment, PayPal module for Prestashop does not give us that option. We need to modify the code in PHP module to change the way of calculating the total and add the commission as an expense over handling and transport.

Prestashop 1.5 and 1.6

Here’s the PayPal payment module with surcharge: paypal-comision.zip

This module includes a change: I modified the code file paypal.php to add the variable id_carrier. Thus, when using multiple carrier companies in our online store, the carrier selected during the purchase process will be used in the calculations.

This module is a contribution of Prestashop community. You can find comments and questions resolved in the forum.

You can also leave your comments and questions at the end of this post.

Prestashop 1.4

Here are the steps to modify the PayPal payment module:

1 – First you make a backup of the files that we will modify. For Prestashop 1.4 are in the folder:

modules/paypal/payment

2 – Change the total receivables in the submit.php file to add the commission:

After line:

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

Add:

//COMISSION
$comisionP = 1.03; //for a 3% comission
$totalP = $cart->getOrderTotal(true, Cart::BOTH); //total basket
$totalP = $totalP * $comisionP; //total comission

Just below where values are assigned to the variable $smarty, replace the line:

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

By this:

‘total’ => $totalP,

3 – Change in paypalpayment.php the total receivables and shipping charges to add the commission and listed as an expense of handling and transport in the breakdown of the purchase:

After line:

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

Add:

//COMISSION
$comision = $paymentAmount * 0.03; //comission calculation
$paymentAmount = $paymentAmount + $comision; //adding comission to total

After line:

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

Add:

//ship + comission:
$shipping = $shipping + $comision;

4 – Change the text displayed on the confirmation page to warn that a commission be added to the total:

In file modules/paypal/en.php (or the corresponding language file), find the line where it says “You have chosen to pay with PayPal.” and add a text to explain the included comission.

5 – Upload the changed files to the server and ready. : )

This Post Has 41 Comments

  1. Cristina says:

    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!!!!

    • vicent says:

      Hola Cristina,

      El archivo a modificar es el de esta carpeta:

      modules/paypal/payment/submit.php

      ¿Qué línea es la que no encuentras?

  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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

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

  13. vicent says:

    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 says:

    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 says:

    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 says:

    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 says:

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

  18. vicent says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

    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 says:

      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 says:

    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 says:

    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 says:

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

  31. Daniel says:

    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 says:

    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 says:

    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 says:

    Bazofia de artículo que no funciona

  35. Vicent Badia says:

    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 says:

    ¿Alguna solución para prestashop 1.7?

    Muchas gracias

  37. Alejandro says:

    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 says:

    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}

Leave a Reply

Your email address will not be published. Required fields are marked *

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.
×