Uso de la notificación de pago instantánea de PayPal con PHP

¡Hola! Hoy vamos a combinar Paypal con PHP para permitir el procesamiento fácil de los pagos en su sitio web.


Producto terminado: Vista previa

Paso 1 - Creando una cuenta de PayPal

Para este tutorial necesitarás un Cuenta Premier de PayPal y un sitio web en línea. Comience por ir a paypal.com y haga clic en "registrarse" en la parte superior de la página.

Hacer clic Empezar bajo el Título Premier; Usted será redirigido a un formulario de registro. Por favor complete toda la información necesaria. Cuando se haya creado su cuenta, inicie sesión y continúe con el paso 2.

Paso 2 - Habilitar IPN

En este paso vamos a habilitar Notificación de pago instantánea (IPN), así que mientras esté conectado, por favor haga clic Perfil y luego elegir Notificación de pago instantáneo

Ahora en la siguiente pantalla verá que la IPN está configurada en "off"; hacer clic "Editar" para cambiar eso.

Al comienzo de este tutorial, mencioné que necesitarías un sitio web en línea. ¿Por qué? Bueno, vamos a pedir a PayPal que nos envíe datos cuando se complete un pago. PayPal no puede acceder a los sitios web locales alojados a menos que tenga todas las configuraciones configuradas correctamente. (Esto implica abrir puertos en su enrutador). Entonces, ingresaré la url a mi script de validación, por ejemplo, http://www.yourdomain.com/PayPal/ipn.php. PayPal publicará una notificación en mi servidor, en la URL que he especificado.

Paso 3 - Construyendo una página HTML simple

Bien, ahora necesitamos una página html simple y básica donde su visitante pueda comprar acceso a su área de descarga..
No voy a explicar todo el HTML porque creo que deberías conocer los conceptos básicos de HTML antes de comenzar con PHP.

index.php - Una simple página HTML con una hoja de estilo..

    Nettuts.com | Acceso de compra al área de descarga.    

Acceso de compra

Haga clic en el botón de abajo para recibir los detalles de inicio de sesión del área de descarga..
¿Ya tienes una cuenta? Entre aquí.

css / style.css - Una hoja de estilo simple para nuestra página HTML.

 cuerpo fondo: # 2D2D2D; / * Establecer color de fondo del sitio web * / font: 11px 'Verdana'; / * Establecer tamaño de fuente del sitio web y tipo de fuente * / # envoltura margen: 0 auto; / * Centrar nuestro contenido * / ancho: 500px; / * Establecer el ancho de nuestro contenido * / background: #FFF; / * Establecer el color de fondo del contenido * / padding: 10px; / * Establecer relleno para contenido * / border: 1px solid # 000; / * Agregar un borde alrededor del contenido * /

Paso 4 - Construyendo un botón de PayPal

Necesitamos crear un botón de compra, así que por favor haga clic Servicios comerciales, y luego elegirPagos de sitio web estándar

Puedes elegir tres tipos de botones, Vender artículos individuales, Vender artículos múltiples y, Suscripción. Ahora en este tutorial vamos a crear un solo elemento. Cuando alguien compra este artículo individual, en este caso accede a un área de descarga. Una vez validado el pago, se enviará un correo electrónico con los detalles..

Vamos a introducir alguna información para nuestro botón de compra; puedes dejar el resto tal como es.

Cuando hayas terminado de rellenar cada sección, genera el código. Copie este código en su portapapeles, y luego péguelo dentroindex.php - donde agregué el comentario en la página html. Por favor revise el paso 3, si es necesario.

Esto debería funcionar perfectamente. Los usuarios pueden hacer clic en el botón y completar su compra.

Paso 5 - Escribiendo ipn.php

Primero, crea ipn.php para que podamos comenzar a escribir. Usaremos un pequeño fragmento que hice de un fragmento más grande que puedes obtener del sitio web de Paypal..
Tenga en cuenta que no hay ninguna razón para aprender este código de su cabeza. Los fragmentos son útiles y ahorran tiempo. Lo voy a romper abajo.

  $ value) $ value = urlencode (stripslashes ($ value)); $ req. = "& $ key = $ value";  // vuelva a publicar en el sistema de PayPal para validar $ header = "POST / cgi-bin / webscr HTTP / 1.0 \ r \ n"; $ header. = "Tipo de contenido: application / x-www-form-urlencoded \ r \ n"; $ header. = "Content-Length:". strlen ($ req). "\ r \ n \ r \ n"; $ fp = fsockopen ('ssl: //www.paypal.com', 443, $ errno, $ errstr, 30); if (! $ fp) // HTTP ERROR else fputs ($ fp, $ header. $ req); while (! feof ($ fp)) $ res = fgets ($ fp, 1024); if (strcmp ($ res, "VERIFIED") == 0) // ¡PAGO VALIDADO Y VERIFICADO!  else if (strcmp ($ res, "INVALID") == 0) // PAYMENT INVALID & INVESTIGATE MANUALY!  fclose ($ fp); ?>

Complete las credenciales correctas para su base de datos para que podamos insertar datos en el siguiente paso.

PayPal envía los datos a la url que especificamos. En este ejemplo, solo necesitamos la dirección de correo electrónico del comprador, para que podamos enviarle su información de inicio de sesión. Este código anterior leerá los datos que PayPal envía y devolverá la información a PayPal. He añadido dos comentarios donde debería venir el código si está validado. Además, también he agregado un comentario que especifica qué se debe hacer si no se valida.

Paso 6 - Creando la base de datos

Ahora nos centraremos en lo que debería suceder si se verifica el pago. Primero, necesitamos construir una tabla MySQL donde almacenemos la información de los usuarios. Solo una simple con un campo de identificación, correo electrónico y contraseña.

A continuación, debemos introducir los detalles de nuestra mesa; necesitamos un CARNÉ DE IDENTIDAD con una selección de clave primaria y debería auto incremento; al lado un correo electrónico y contraseña campo.

Para aquellos de ustedes que no tienen tiempo para ingresar toda esta información, a continuación hay un pequeño código de volcado de MySQL para recrear la tabla..

 CREAR TABLA 'users' ('id' int (10) NOT NULL auto_increment, 'email' varchar (50) NOT NULL, 'password' varchar (32) NOT NULL, PRIMARY KEY ('id')) ENGINE = MyISAM DEFAULT CHARSET = utf8 AUTO_INCREMENT = 1; 

Paso 7 - Creación de cuenta

Abierto ipn.php otra vez. Vamos a escribir el siguiente código debajo de la línea "// PAYMET VALIDATED".

Nuestro primer paso es recuperar la dirección de correo electrónico del comprador; PayPal envía toda esta información a ipn.php.

 // ¡PAGO VALIDADO Y VERIFICADO! $ email = $ _POST ['payer_email'];

Debemos crear una última variable, que es la contraseña que generaremos usando php.

 // ¡PAGO VALIDADO Y VERIFICADO! $ email = $ _POST ['payer_email']; $ contraseña = mt_rand (1000, 9999);

Como puede ver, usamos mt_rand para generar una contraseña aleatoria; en este caso, un valor numérico entre 1000 y 9999. Luego, debemos insertar estos datos en nuestra base de datos. Para ello, utilizaremos la consulta de inserción de mysql..

 // ¡PAGO VALIDADO Y VERIFICADO! $ email = $ _POST ['payer_email']; $ contraseña = mt_rand (1000, 9999); mysql_query ("INSERT INTO users (email, password) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ password). "')") o die (mysql_error ());

Aquí le decimos a nuestro script que inserte el correo electrónico y la contraseña en nuestra base de datos. He añadido una mysql_escape_string para garantizar que no sea posible la inyección de mysql. También he agregado la función md5 a nuestra contraseña para que se almacene como un hash de 32 caracteres. Ahora se crea la cuenta; vamos al siguiente paso.

Paso 8 - Enviar por correo electrónico las credenciales de inicio de sesión

Necesitamos escribir algún código que envíe por correo electrónico la información de inicio de sesión al comprador. Para lograr esto, utilizaremos la función de correo php..

 // ¡PAGO VALIDADO Y VERIFICADO! $ email = $ _POST ['payer_email']; $ contraseña = mt_rand (1000, 9999); mysql_query ("INSERT INTO users (email, password) VALUES ('". mysql_escape_string ($ email). "', '" .md5 ($ password). "')") o die (mysql_error ()); $ a = $ correo electrónico; $ subject = 'Área de descarga | Credenciales de acceso'; $ message = 'Gracias por su compra La información de su cuenta ------------------------- Correo electrónico:'. $ email. ' Contraseña: '. $ Contraseña'. ------------------------- Ahora puede iniciar sesión en http://yourdomain.com/PayPal/ '; $ headers = 'From: [email protected]'. "\ r \ n"; correo ($ a, $ asunto, $ mensaje, $ encabezados);

Vamos a romper esta función de correo electrónico hacia abajo. Usamos la variable $ email para obtener la dirección de correo electrónico del usuario y asignarla a la variable $ to.
La variable $ asunto es el título / asunto que verá en su programa de correo electrónico. Después de esto, tenemos nuestro mensaje, que contendrá una nota de agradecimiento y la información de la cuenta. Las variables $ email y $ password en el mensaje cambiarán a la información correcta una vez que el correo electrónico haya sido enviado. También hemos establecido un encabezado personalizado. Cuando el usuario recibe el correo electrónico, la dirección "de" se mostrará como "[email protected]".

Paso 9 - Correo electrónico de pago no válido

Un pago no válido puede ocurrir debido a un fraude, pero también debido a un problema con PayPal; por lo que queremos asegurarnos de que nuestro cliente reciba lo que pagó.
Así que vamos a enviar un correo electrónico a nuestro administrador del sitio, diciéndole que se comunique con el comprador para obtener más información. Simplemente copie el código de correo electrónico que usamos antes y luego realice los cambios que se enumeran a continuación.

 // ¡PAGO NO VÁLIDO E INVESTIGUE MANUAL! $ to = '[email protected]'; $ subject = 'Área de descarga | Pago no válido '; $ message = 'Estimado administrador: se ha realizado un pago pero se ha marcado como INVÁLIDO. Por favor verifique el pago manualmente y contacte al comprador. Correo electrónico del comprador: '. $ Email. "; $ Headers =' From: [email protected] '." \ R \ n "; correo ($ to, $ subject, $ message, $ headers);

Este código es casi el mismo que el anterior, solo hicimos algunos cambios en el destinatario, el asunto y el mensaje.

Paso 10 - Inicio de sesión de usuario

Este es nuestro paso final, donde creamos un formulario de inicio de sesión simple para nuestros compradores. Crea un nuevo archivo php y llámalo login.php. Usaremos la misma página HTML que usamos para el index.php, solo haremos algunos ajustes en el contenido de la página y, por supuesto, agregaremos un poco de estilo a nuestro formulario de inicio de sesión.

login.php - Esta es la página donde nuestros compradores pueden iniciar sesión..

    Nettuts.com | Iniciar sesión    

Iniciar sesión

Ingrese sus credenciales de inicio de sesión para acceder al área de descarga

añadir style.css

 label display: block; / * Asegúrese de que la etiqueta esté en una sola línea * / margin: 3px; / * Crear algo de distancia de los campos de entrada * / input padding: 3px; / * Dale un poco más de espacio al texto * / border: 1px solid gray; / * Agrega un borde alrededor de los campos de entrada * / margin: 3px; / * Crear algo de distancia de las etiquetas * /

Ahora que hemos creado nuestro formulario, debemos verificar si las credenciales de inicio de sesión son correctas. Hice algunos cambios en login.php para que podamos comenzar:

    Nettuts.com | Iniciar sesión    

Iniciar sesión

Ingrese sus credenciales de inicio de sesión para acceder al área de descarga

El código anterior verificará si el correo electrónico y la contraseña están publicados. Si es verdadero, podemos verificar las credenciales. Si no, devolvemos un error. El siguiente código que vamos a escribir se colocará debajo de "// Verificar". Primero tenemos que convertir las variables post en variables locales..

 $ email = mysql_escape_string ($ _ POST ['email']); $ contraseña = md5 ($ _ POST ['contraseña']);

He agregado una función de escape para evitar la inyección de mysql y he transformado la contraseña publicada en un hash md5. Debido a que hicimos esto en nuestra base de datos, también debemos cambiar la contraseña del usuario para comparar los dos valores correctamente. Ahora es el momento de verificar los datos..

 $ email = mysql_escape_string ($ _ POST ['email']); $ contraseña = md5 ($ _ POST ['contraseña']); $ gUser = mysql_query ("SELECCIONAR * DE LOS usuarios DONDE. $ email." "Y. $ contraseña." "LIMITE 1") o die (mysql_error ()); $ Verify = mysql_num_rows ($ gUser); si ($ verificar> 0) echo '

Inicio de sesión completo

Haga clic aquí para descargar nuestro programa.

'; else echo '

Error de inicio de sesion

Lo siento, sus credenciales de inicio de sesión son incorrectas. ';

Como puede ver, estamos ejecutando una consulta de mysql y seleccionando todos los datos de nuestra tabla de usuarios, pero solo la fila donde la dirección de correo electrónico del usuario coincide con la de la base de datos.
mysql_num_rows comprueba si se ha encontrado una coincidencia: 1 = verdadero; 0 = falso.

Eso es todo!

Y ese es el final de este tutorial. Espero que lo hayas disfrutado, y siéntete libre de dejar un comentario con tus pensamientos. Tener algún consejo que pueda ayudar?

  • Suscríbase a la fuente RSS de NETTUTS para obtener más artículos y artículos de desarrollo web diarios..