Implementación de una página de pago por Paypal

24 mayo 2015

Para crear una página de pago por Paypal en comercios electrónicos que empleen un gestor de contenidos como puedan ser Joomla, Drupal o WordPress,  la forma más rápida de hacerlo es emplear alguno de los muchos módulos o plugins  de pago existentes que ofrecen esta funcionalidad. De hecho, en las sesiones prácticas ya hemos comprobado que el plugin de comercio electrónico WooCommerce incluye por defecto la pasarela de pago para PayPal. Además, vimos cómo podíamos descargar las pasarelas de pago de la plataforma Redsýs para instalarlas en nuestro comercio electrónico.

Sin embargo, si no se utiliza un gestor de contenidos (CMS) para el comercio electrónico, será necesario implementar una página de pago por Paypal de forma «manual». Para ello, nos vamos a ayudar de la Interfaz de Programación de Aplicaciones (API) de Paypal.

Utilización del Entorno de Pruebas Sandbox de Paypal

Para acceder al servicio de Paypal tendremos que realizar solicitudes POST a la URL http://www.paypal.com/webscr. Pero antes de hacer solicitudes a la URL real y, para poder probar nuestra página de pago mientras estamos en fase de desarrollo, sin que nos cueste dinero real, utilizaremos el entorno de pruebas de Paypal, sustituyendo la URL real, indicada anteriormente, por http://www.sandbox.paypal.com/webscr. De este modo, estaremos empleando el entorno de prueba, o Sandbox, de Paypal.

Para poder usar el entorno Sandbox, será necesario que dispongamos de  dos cuentas de prueba de Paypal. Una de ellas es la cuenta business o de vendedor, que será la cuenta que reciba del dinero; la otra cuenta será la personal o de comprador, que corresponderá a la persona que compra el producto o  servicio y procede a su pago. Crearemos dichas cuentas accediendo a https://developer.paypal.com. Previamente tendremos que estar registrados en PayPal.

Una vez logueados accederemos a Dashboard, y dentro de Dashboard, haremos clic en Sandbox –> Accounts. Podremos comprobar que Paypal ya ha creado una cuenta Business y una cuenta Personal por defecto, que vienen asociadas a nuestra cuenta de Paypal.

PayPal

Creación del Formulario de Pago

Lo siguiente que haremos será crear un formulario para que el cliente pueda realizar el pago del producto o servicio que queremos venderle. Un ejemplo de implementación sería sería el siguiente formulario HTML, que básicamente muestra en el navegador un botón de pago:

<html>
 <body>
 <form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
 <input type="hidden" name="cmd" value="_xclick">
 <input type="hidden" name="business" value="">
 <input type="hidden" name="item_name" value="Compra de Producto X">
 <input type="hidden" name="currency_code" value="EUR">
 <input type="hidden" name="amount" value="50.00">
 <input type="image" src="http://www.paypal.com/es_XC/i/btn/x-click-but01.gif"
 name="submit"
 alt="Make payments with PayPal - it's fast, free and secure!">
 </form>
 </body>
</html>

Al hacer clic sobre el botón de pago, el navegador envía los datos mediante POST a  la URL http://www.sandbox.paypal.com/cgi-bin/webscr; de este modo, en pantalla aparecerá una página de PaypPal con los datos de la compra, de manera que el cliente podrá validarse como comprador y realizar la transacción:

paypal2

En esta página introduciremos los datos del comprador de pruebas (la cuenta -buyer de Sandbox), y pulsamos sobre Entrar. PayPal nos mostrará el resumen de la compra y nos pedirá que confirmemos el pago:

paypal3

Al hacer clic sobre el botón Pagar ahora, se finaliza la transacción. PaypPal nos mostrará una pantalla de confirmación, pero no regresa al sitio web en donde se inició la transacción:

paypal4

Ya hemos implementado un formulario de pago para Paypal. Ahora vamos a ver algunas modificaciones.

Si lo que nuestro comercio electrónico vende es un producto físico, necesitaremos saber la dirección de entrega para proceder al envío. Como hemos visto, PayPal solicita al usuario esta información. Sin embargo, si lo que el cliente ha adquirido es un producto virtual (como una suscripción o una descarga de un fichero), la dirección de entrega no tiene sentido. Así que podemos evitar que PayPal pregunte por una dirección de entrega si se está adquiriendo de un producto virtual. Para ello, añadiremos al formulario un nuevo campo:

<input type="hidden" name="no_shipping" value="1">

Redirigir al sitio que inició la compra

En el ejemplo anterior, la transacción finaliza en una página de PayPal. Lo ideal sería regresar al sitio que inició la transacción, tal vez a una página agradecimiento por la compra al cliente. Además, durante el proceso de pago en el entorno de PayPal, el cliente puede decidir cancelar el pago, o bien el pago puede fallar por falta de saldo o cualquier otro motivo.

Una vez finalizado el proceso de pago se pueden distinguir dos casos: transacción completada con éxito , o transacción cancelada o incompleta. En nuestro formulario de pago podemos especificar una página de retorno para cada uno de estos casos, mediante los campos return y cancel_return:

<input type="hidden" name="return" value="http://www.mi_dominio.com/pagado.php">
<input type="hidden" name="cancel_return" value="http://www.mi_dominio.com/cancelado.php">

Al añadir estos campos al formulario, la página que nos mostrará PayPal cuando finaliza la transacción incluye el enlace correspondiente (confirmación o error), pero el cliente no regresará a nuestro sitio web hasta que no haga click en dicho enlace.

Retorno automático al sitio que inició la compra

Si queremos que el regreso tras el proceso de pago a nuestro sitio web sea automático, es necesario establecer esta opción en la configuración del usuario Business de PayPal. Para hacer esto, nos loguearemos en www.sandbox.paypal.com (si fuera en entorno real nos haríamos loguin en www.paypal.com) con el usuario Business receptor del pago (el usuario -facilitator), y acceder a Perfil –> Preferencias de Pago en el sitio web.

paypal5

A continuación, en la pantalla Preferencias de Pago en el Sitio web, introduciremos la URL de la página de retorno de nuestro sitio web cuando el pago se realiza con éxito, y activaremos el retorno automático:

paypal6

Por último, destacar que, tal y como nos indica PayPal, los requisitos de URL de retorno son los siguientes:

  • Según las Condiciones de uso, debe proporcionar información en la página que se muestre mediante la URL de retorno que haga saber al comprador que el pago se ha realizado y que la transacción ha finalizado.
  • Debe proporcionar información en la página que se muestre mediante la URL de retorno que explique que los detalles de la transacción del pago se enviarán por correo electrónico al comprador.
  • Ejemplo: Gracias por su pago. Su transacción ha finalizado y le hemos enviado un recibo de su compra por correo electrónico. Puede acceder a su cuenta, www.sandbox.paypal.com/es, para ver los detalles de esta transacción.