Miércoles, 17 de febrero de 2010

Cómo utilizar PayPal para realizar compras en tu web

Categoría: Comercio electrónico

Vamos a explicar cómo llamar al API de PayPal para realizar pagos en tu página web. En primer lugar deberemos crear una cuenta como desarrollador de PayPal Sandbox (https://developer.paypal.com/) que usaremos para verificar que lo hacemos de manera correcta antes de hacerlo funcionar en la tienda virtual de nuestra página web.

Tras hacerla y meternos en nuestra cuenta de desarrollador, deberemos seleccionar la opción Create a preconfigured buyer or seller account donde rellenaremos con nuestros datos el formulario teniendo en cuenta que debe ser una cuenta de vendedor.

Una vez creada, entraremos a nuestro listado de cuentas de PayPal Sandbox. Estas cuentas no son cuentas reales de PayPal y sólo funcionarán dentro de su Sandbox. Para entrar en ella pulsaremos el botón de Enter Sandbox Test Site y podremos introducir el usuario y contraseña para esta cuenta de prueba. Una vez dentro podemos observar que es como si fuera una cuenta de PayPal pero los pagos que se hagan a ella no serán reales.

Ejemplo de pago con el API de PayPal

Para realizar el pago utilizaremos un documento HTML en el que le pasaremos los parámetros que PayPal necesita (importe, código de venta, etc.) y otros opcionales como los datos del usuario que compra para que le aparezcan rellenados en el formulario de pago. Un ejemplo sería el siguiente:

<html>

<head>

<title>Ejemplo de pago mediante la API de PayPal</title>

</head>

<body>

<form name='formTpv' method='post' action='https://www.sandbox.paypal.com/cgi-bin/webscr'>

	<input type='hidden' name='cmd' value='_xclick'>
	<input type='hidden' name='business' value='mi_cuenta_sandbox@mi_pagina.com'>
	<input type='hidden' name='item_name' value='Nueva compra en mi web'>
	<input type='hidden' name='item_number' value='VENTA-X2561'>
	<input type='hidden' name='amount' value='10.15'>
	<input type='hidden' name='page_style' value='primary'>
	<input type='hidden' name='no_shipping' value='1'>
	<input type='hidden' name='return' value='http://mi_pagina/exito.html'>
	<input type='hidden' name='rm' value='2'>
	<input type='hidden' name='cancel_return' value='http://mi_pagina/cancelada.html'>
	<input type='hidden' name='no_note' value='1'>
	<input type='hidden' name='currency_code' value='EUR'>
	<input type='hidden' name='cn' value='PP-BuyNowBF'>
	<input type='hidden' name='custom' value=''>
	<input type='hidden' name='first_name' value='NOMBRE'>
	<input type='hidden' name='last_name' value='APELLIDOS'>
	<input type='hidden' name='address1' value='DIRECCIÓN'>
	<input type='hidden' name='city' value='POBLACIÓN'>
	<input type='hidden' name='zip' value='CÓDIGO POSTAL'>
	<input type='hidden' name='night_phone_a' value=''>
	<input type='hidden' name='night_phone_b' value='TELÉFONO'>
	<input type='hidden' name='night_phone_c' value=''>
	<input type='hidden' name='lc' value='es'>
	<input type='hidden' name='country' value='ES'>
</form>
<script type='text/javascript'>
	document.formTpv.submit();
</script>

</body>

</html>

La dirección de llamada del formulario de pruebas es https://www.sandbox.paypal.com/cgi-bin/webscr pero al pasar a ventas reales deberemos indicar https://www.paypal.com/cgi-bin/webscr

Como podemos ver, existente multitud de parámetros en el formulario que son fáciles de ver cuales son su propósito (nombre, dirección, etc.). A continuación detallamos los más importantes o que podemos tener duda de qué son realmente:

  • business: indicaremos la cuenta de PayPal asociada al vendedor. Mientras estemos de pruebas indicaremos la cuenta de pruebas del Sandbox, pero para ventas reales deberemos indicar nuestra cuenta de vendedor.
  • item_name: título que aparecerá en la pantalla de pago.
  • item_number: código de la venta, actuará como identificador único de cada venta.
  • amount: importe a pagar, donde si hay decimales no podrán indicarse con una coma ni con más de dos números.
  • return: página de vuelta a nuestra web indicando éxito en el pago.
  • cancel_return: página de vuelta a nuestra web indicando que no se realizó el pago por que el usuario lo canceló.
  • currency_code: código de la moneda usada en el pago. Para el caso del euro es EUR.
  • lc: idioma de la pantalla de pago.
  • country: código ISO del país del cliente.

Artículos relacionados

Enviado por Imaginanet a las 9:32

9 comentarios

Media de 4,5 puntos / 2 votos

Hola buenas yo estoy haciendo una pagina de proyecto y queria ponerle un paypal tal y como pones es increiblemente facil. Mi duda (quizás problema), es si en la página de éxito: Hay alguna manera de recuperar los datos que le había enviado anteriormente a Paypal o no? Gracias
Comentario de Carlos - 17 de junio de 2010 - 20:29
Hola Carlos, en tu configuración de cuenta de PayPal puedes configurar a qué página debe responder PayPal si ha tenido éxito una venta. Entre las variables que te envía PayPal a esa página que le indicas, está la variable item_number que tú le enviaste. Con esa variable te debería ser suficiente para conocer por ejemplo el código de compra y saber exactamente qué compra se ha finalizado con éxito para poder trabajar contra una base de datos.
Comentario de Imaginanet - 18 de junio de 2010 - 12:19
Muchas gracias! Eres un crack! Me ha ayudado mucho, cuando consiga implementar esto, volveré por aquí a comentar la experiencia!! Un abrazo
Comentario de Carlos - 18 de junio de 2010 - 13:45
Hola de nuevo tengo un grave problema, te explico, estoy haciendo una web de reservas, entonces lo que hago es hacer una "Pre-Reserva" y entonces voy a pagar con el paypal (el formulario de arriba), paga bien pero claro me voy cuenta que al pagar el usuario va a la página de éxito solo si pincha en un enlace, es decir no va siempre. Entonces no tengo ni idea de como hacer para poder modificar en la base de datos que se ha pagado esa reserva. No se como hacer. Podrías darme alguna idea y/o ayuda por favor, Muchísimas gracias de nuevo!
Comentario de Carlos - 19 de junio de 2010 - 18:55
Hola de nuevo Carlos, en mi primer comentario te dije que PayPal te avisaba de una compra exitosa y no es mediante el sistema de pinchar en el enlace de éxito tras pagar.

El mejor método para hacerlo es que en la configuración de la cuenta de PayPal en la que se paga, configures el Instant Payment Notification (o Notificación inmediata de Pago) a una dirección que tu le digas y te devuelve unos valores entre ellos el item_number.

Por ejemplo, tu le dices que tu dirección de IPN es www.tudominiopruebas.es/ipn-paypal.php, PayPal sólo llamará a ese archivo si tuviera éxito la venta y manda varias variables POST, entre ellas la variable POST item_number.

Con esa variable item_number puedes consolidar en base de datos una reserva que era una propuesta a una reserva en firme.

Puedes encontrar más información sobre IPN en el siguiente enlace https://www.paypal.com/ipn
Comentario de Imaginanet - 21 de junio de 2010 - 07:59
Hola de nuevo y gracias, creo que el problema es que mi pagina es en localhost!! ¿que puedo hacer?
Comentario de Carlos - 21 de junio de 2010 - 11:41
Estoy probando con express checkout y me hace lo del token, me muestra esto en el navegador: TOKEN=EC%2d4HS07007JP073753M&TIMESTAMP=2010%2d06%2d21T09%3a45%3a00Z&CORRELATIONID=974f0ac98c912&ACK=Success&VERSION=52%2e0&BUILD=1364064 pero no vuelve al return
Comentario de Carlos - 21 de junio de 2010 - 11:44
Deberás o contratar un servicio de hosting o abrir los puertos de tu pc para que PayPal pueda acceder al archivo de respuesta IPN.
Comentario de Imaginanet - 21 de junio de 2010 - 11:59
Hola que tal ojala me puedan echar una mano estoy implementando 2 tipos de pagos el spress chekout u el pago estandar en cuanto al 2do hay alguna forma de optener el codigo de transacipon id antenada muchas gracias y saludos
Comentario de Harley - 7 de septiembre de 2010 - 03:41