Hasta ahora hemos visto los siguientes puntos:
- Parte 1: Introducción
- Parte 2: ¿Qué nos hace falta?
- Parte 3: Diagrama de Flujo
- Parte 4: Base de datos de un carro de compra
- Parte 5.1: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 5.2: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 6: Añadir PayPal como método de pago a nuestro carro de compra
- Parte 7: Factura y envío de e-mail al comprador
Ahora solo nos falta enviar la factura al cliente con los datos de la compra a modo de e-mail.
Pasos a seguir para enviar el e-mail con la factura al cliente:
- Recogemos los valores de la compra que nos devuelve PayPal
- Creamos el HTML que se enviará por e-mail
- Llamamos a una función para enviar el mail con los datos al cliente.
Con estos 3 sencillos pasos ya tendremos el tutorial finalizado por completo.
Tabla de contenidos
Recoger variables de Paypal con la información del cliente (PayPal IPN)
Si habéis seguido todas las partes del tutorial y en concreto en la que creabamos el script «comprar.php«, recordaréis que creamos un input oculto con el valor «return» en el atributo name.
[html]
[/html]
Pues bien, esta página a la que estamos apuntando será a la que PayPal enviará al usuario en caso de que el pago se realice con éxito y es justo aquí donde vamos a llevar a cabo los 3 procesos que hemos mencionado anteriormente. Así que si no la hemos creado, vamos a incluir en nuestra aplicación una página llamada «exito.php«.
Para empezar, lo primero que tenemos que hacer es recoger los valores que nos devuelve PayPal para tener datos del cliente con los que «jugar». Esto es tan simple como recuperar variables de un formulario enviadas por POST:
[php]
$nombre = $_POST[‘first_name’];
$apellido = $_POST[‘last_name’];
$email_client = $_POST[‘payer_email’];
$calle_client = $_POST[‘address_name’];
$ciudad_client = $_POST[‘address_city’];
$pais_client = $_POST[‘address_country’];
$zonaRes_client = $_POST[‘residence_country’];
$total_pedido = $_POST[‘mc_gross’];
[/php]
TRUCO
Estas no son las únicas variables que nos puede devolver PayPal, para ver las variables que nos devuelve podemos hacer dos cosas: 1) Ir a la documentación de Paypal sobre las variables que nos devuelve o 2)Poner un «print_r» para que nos muestre todos los datos que nos llegan de la variable POST de la siguiente manera:[php]
print_r($_POST);
[/php]
Esto nos mostrará por pantalla tanto las variables que nos pasa por POST como sus valores.
Preparar el envio del e-mail en PHP con HTML
Ahora que tenemos los datos estamos preparados para redactar el e-mail que se le enviará al cliente que ha efectuado la compra, donde informaremos
[php]
$email = $email_client;
$asunto = ‘COLORATE – Resumen de tu pedido’;
//Texto que se incluirá en el mail.
$html .= «
COMPRA PRODUCTOS COLORATE
Hola $nombre,
Tu solicitud de compra ha sido realizada con éxito.
Gracias por comprar en COLORATE. Aquí le adjuntamos el resumen de tu pedido.
«;
$html .= «
Datos del Comprador
«;
$html .= «Nombre : » . $nombre . «
«;
$html .= «Apellido : » . $apellido . «
«;
$html .= «E-mail del comprador : » . $email_client . «
«;
$html .= «Calle del comprador : » . $calle_client . «
«;
$html .= «Ciudad del comprador : » . $ciudad_client . «
«;
$html .= «País del comprador : » . $pais_client . «
«;
$html .= «Zona Residencia comprador: » . $zonaRes_client . «
«;
$html .= «
«;
$html .= «Total de la compra : » . $total_pedido . «€
«;
//Con la variable cabecera le decimos a PHP que queremos enviar un mail en formato HTML.
$cabeceras = «Content-type: text/html\r\n»;
[/php]
Con esto ya tenemos la información necesaria para enviar el mail.
Llamamos a una función para enviar el mail con los datos al cliente.
Con toda la información guardada en variables, ya estamos preparados para llamar a la función mail para enviar un correo electrónico en PHP. Es tan simple como:
[php]
mail($email,$asunto,$html,$cabeceras);
[/php]
Como se que a muchos de vosotros tenéis problemas para enviar un mail con PHP en localhost, también podréis ver el resultado de lo que se enviará por correo electrónico poniendo un «echo» de la variable html.
[php]
echo «$html«;
[/php]
Donde veréis un resultado parecido a este (hacer clic para verlo ampliado):
Para terminar os dejo el código completo de la página «exito.php«:
[php]
Compra realizada con éxito, por favor revisa su correo para ver la notificación.
Volver a la tienda Colorate
COMPRA PRODUCTOS COLORATE
Hola $nombre,
Tu solicitud de compra ha sido realizada con éxito.
Gracias por comprar en COLORATE. Aquí te adjuntamos el resumen de tu pedido.
«;
$html .= «
Datos del Comprador
«;
$html .= «Nombre : » . $nombre . «
«;
$html .= «Apellido : » . $apellido . «
«;
$html .= «E-mail del comprador : » . $email_client . «
«;
$html .= «Calle del comprador : » . $calle_client . «
«;
$html .= «Ciudad del comprador : » . $ciudad_client . «
«;
$html .= «País del comprador : » . $pais_client . «
«;
$html .= «Zona Residencia comprador: » . $zonaRes_client . «
«;
$html .= «
«;
$html .= «Total de la compra : » . $total_pedido . «€
«;
$cabeceras = «Content-type: text/html\r\n»;
/*Si no te funciona enviar mail desde localhost, prueba a imprimir en
pantalla la información que se enviará al mail del cliente.*/
echo «$html«;
//3. llamamos a una función para enviar el mail con la factura al cliente.
mail($email,$asunto,$html,$cabeceras);
?>
[/php]
Espero que os haya gustado este tutorial después de haber publicado sus 7 partes de inicio a fin. Ahora solo falta la descarga de los ficheros que la publicaré en la parte 8, asi como las posibles mejoras a realizar.
Guía tutorial Carrito de compras con Php y forma de pago PayPal
- Parte 1: Introducción
- Parte 2: ¿Qué nos hace falta?
- Parte 3: Diagrama de Flujo
- Parte 4: Base de datos de un carro de compra
- Parte 5.1: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 5.2: Scripts necesarios para un carro de compra en PHP y MySQL
- Parte 6: Añadir PayPal como método de pago a nuestro carro de compra
- Parte 7: Factura y envío de e-mail al comprador
- Parte 8: Descarga de archivos
9 comentarios
Hola que tal exelente tuto amigo te felicito , oye solo uiesiera saber si me puedes ayudar a que no sea en una compra de pay pal y eso lo pueda guardar en una basde de datos y mandarlo a impresion directamente, podrias ayudarme?? te apoyare con una donacion soy de mexico saludos!!
hola ross,
SI quieres decirme concretamente lo que quieres desarollar lo hablamos mejor por correo electróinico.
Ahora te mandaré un correo y me contestas ahi.
Saludos,.
Excelente tutorial amigo pero tengo una duda quisiera comentarla contigo en email pura vida!
excelente tutorial, de verdad muchas felicidades pero tengo una duda… solo se utilizó una tabla de la base de datos llamada «productos», las otras 3 no fueron usadas, gracias
Excelente tutorial me sale todo, pero al enviar el correo al cliente, no se muestra los detalles de la compra.
A que se puede deber gracias por la respuesta.
Hola, muy bueno el tutorial, sobre todo la parte de la integración con PayPal que no conseguía entender la API que ofrece.
Tengo un problema, PayPal no me devuelve ninguna variable al completar el pago correctamente, lo compruebo con «print_r $_POST» y nada.
hola tengo un problema como puede especificar los detalles del pedido es decir el (Nombre del producto , la Cantidad, y el Precio) yo hice esto:
me gustaria aportar una donacion si esqueme ayudas
primero obtuve la variables:
$nombre_producto = $_POST[‘item_name1’];
$cantidad = $_POST[‘quantity1’];
$costo_producto=$_POST[«mc_gross_1»];
$total_productos = $_POST[«num_cart_items»]
$html .= «Producto : «.$nombre_producto .» Cantidad: «.$cantidad.» Costo: «.$costo_producto.» «;
Hola
como enviar por email el resultado de un carrito de compra con las imagenes de los productos?
gracias
Me pasa lo mismo que a cristobal!, la verdad que pareciera que me envía totalmente vacío el $_Post.. no se que más hacer, ni porque sucede y luego en la pagina donde tendría que retornar el valor, aparece lo siguiente:
Array ( )
Notice: Undefined index: item_name in /var/www/html/onlinefr/paypal_ipn.php on line 46
Notice: Undefined index: item_number in /var/www/html/onlinefr/paypal_ipn.php on line 47
Notice: Undefined index: payment_status in /var/www/html/onlinefr/paypal_ipn.php on line 48
Notice: Undefined index: mc_gross in /var/www/html/onlinefr/paypal_ipn.php on line 49
Notice: Undefined index: mc_currency in /var/www/html/onlinefr/paypal_ipn.php on line 50
Notice: Undefined index: txn_id in /var/www/html/onlinefr/paypal_ipn.php on line 51
Notice: Undefined index: receiver_email in /var/www/html/onlinefr/paypal_ipn.php on line 52
Notice: Undefined index: payer_email in /var/www/html/onlinefr/paypal_ipn.php on line 53
Notice: Undefined index: txn_type in /var/www/html/onlinefr/paypal_ipn.php on line 54
Notice: Undefined index: pending_reason in /var/www/html/onlinefr/paypal_ipn.php on line 55
Notice: Undefined index: payment_type in /var/www/html/onlinefr/paypal_ipn.php on line 56
Notice: Undefined index: custom in /var/www/html/onlinefr/paypal_ipn.php on line 57
Notice: Undefined variable: header in /var/www/html/onlinefr/paypal_ipn.php on line 88