Prestashop: Posar una comissió al mòdul de pagament amb PayPal.
Actualitzat Abril 2016.
A la nostra botiga online desenvolupada amb Prestashop podem establir diversos mètodes de pagament. Entre ells, PayPal. Perquè es pugui pagar a través d’aquesta plataforma hem d’instal·lar el mòdul de pagament corresponent.
PayPal ens cobrarà una comissió de, aproximadament, un 3,5% per cada operació. El problema és que, si volem cobrar el recàrrec al client en el moment d’efectuar el pagament, el mòdul de PayPal per Prestashop no ens dóna aquesta opció. Hem de modificar el codi en PHP del mòdul per canviar la forma de calcular el total i afegir aquesta comissió com una despesa més de manipulació i transport.
Prestashop 1.5 i 1.6
Aquí teniu el mòdul de pagament de PayPal amb recàrrec: paypal-comision.zip
Aquest mòdul inclou un canvi: he modificat el codi de l’arxiu paypal.php per afegir la variable id_carrier. D’aquesta manera, en cas d’utilitzar diversos transportistes a la nostra botiga en línia, s’utilitzarà en els càlculs el transportista que s’hagi seleccionat durant el procés de compra.
Aquest mòdul és una aportació de la Comunitat Prestashop. En el fòrum podeu trobar comentaris i dubtes resolts sobre el tema.
També podeu deixar els vostres comentaris i preguntes al final d’aquest post.
Prestashop 1.4
Aquí teniu els passos per modificar el mòdul de pagament de PayPal:
1 – Fer una còpia de seguretat dels arxius que modificarem. En el cas de Prestashop 1.4 estan a la carpeta:
modules/paypal/payment
2 – Canviar el total a cobrar en l’arxiu submit.php per afegir la comissió:
Després de la línia:
include(_PS_ROOT_DIR_.’/header.php’);
Afegir:
//COMISSIÓ
$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
Just a sota, on s’assignen els valors a la variable $smarty, substituir la línia:
‘total’ => $cart->getOrderTotal(true, Cart::BOTH),
Per aquesta altra:
‘total’ => $totalP,
3 – Canviar en paypalpayment.php el total a cobrar i les despeses d’enviament per afegir la comissió i que aparegui com una despesa de manipulació i transport en el desglossament de la compra:
Després de la línia:
$paymentAmount = (float)($cart->getOrderTotal());
Afegir:
//COMISSIÓ
$comision = $paymentAmount * 0.03; //calculo la comisión
$paymentAmount = $paymentAmount + $comision; //la sumo al total
Després de la línia:
$shipping = $this->PayPalRound($cart->getOrderShippingCost($cart->id_carrier, false));
Afegir:
//enviament + comissió:
$shipping = $shipping + $comision;
4 – Canviar el text que apareix a la pàgina de confirmació per avisar que se sumarà una comissió al total:
A l’arxiu modules/paypal/es.php (o l’arxiu de l’idioma que correspongui), buscar la línia on posa “Ha triat pagar amb PayPal.” i afegir un text al costat per explicar que hi ha una comissió.
5 – Pujar els arxius modificats al servidor i llest. : )
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!!!!
Hola Cristina,
El archivo a modificar es el de esta carpeta:
modules/paypal/payment/submit.php
¿Qué línea es la que no encuentras?
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.
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
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.
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
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
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!
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.
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.
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.
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!
Hola tengo la version 1.6 tendras en modulo paypal con recargo para descargarlo
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!
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.
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!
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.
hola, gracias por tus aportes, no tienes ya uno modificado que puedas compartir. gracias..
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!
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,
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
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?
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?
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!
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.
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.
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.
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.
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
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:
¡Un saludo!
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?
hola, uso prestashop 1.6 alguien puede decirme si esto aun funciona?
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.
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.
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 ?
Bazofia de artículo que no funciona
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.
¿Alguna solución para prestashop 1.7?
Muchas gracias
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?
Hola!
Gracias por el aporte… ¿Funciona con prestashop 1.7? y de ser así…
¿Cómo puedo reflejarlo en la factura?
Mil gracias!
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}