Pedir presupuesto

Carrito de compra en PHP, MySql y forma de pago Paypal (Parte 7: Envío de e-mail al comprador)

Hasta ahora hemos visto los siguientes puntos:

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:

  1. Recogemos los valores de la compra que nos devuelve PayPal
  2. Creamos el HTML que se enviará por e-mail
  3. 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.

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

Variables de Paypal

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

¿Te ha gustado?, Comparte!!

9 comentarios

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

    1. 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,.

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

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

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

  5. 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.» «;

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

¡Pide tu presupuesto!

Completa los campos para poder enviarte un presupuesto

Todos y tu presupuesto son a medida y totalmente personalizados, entendemos que dos proyectos online no pueden ser iguales y que cada cliente tiene unos objetivos y necesidades muy diferentes, es por eso que para elaborar un presupuesto, necesitamos saber de ti, tu proyecto y objetivos.

Los campos marcados con (*) son obligatorios.

La comunicación enviada quedará incorporada a un fichero del que es responsable COLORDEU. Esta comunicación se utilizará exclusivamente para tratar sus datos para atender su solicitud, siempre de acuerdo al Reglamento (UE) 2016/679 (RGPD), la Ley Orgánica 15/1999 (LOPD) y el Real Decreto 1720/2007 de desarrollo de la LOPD), sobre protección de datos. Sus datos no se comunicarán a terceros, excepto por obligación legal, y se mantendrán mientras no solicite su cancelación. En cualquier momento usted puede ejercer los derechos de acceso, rectificación, portabilidad y oposición, o si procede, a la limitación y/o cancelación del tratamiento, comunicándolo por escrito, indicando sus datos personales mediante un email a hola@colordeu.es