PayPal usando PHP y MySQL: Ejemplo completo
Guardar los pagos procesados correctamente por PayPal en MySQL
PayPal usando PHP y MySQL. Si estas deseando vender productos o servicios por internet te recomiendo leer este artículo que hablo sobre este tema con ejemplo completo. Esta entrada te ayudará a integrar PayPal pasarela de pago utilizando PHP y MySQL de manera concreta.
PayPal usando PHP y MySQL
¿Que aprenderé con este artículo?
- Aprenderás a integrar PayPal pasarela de pago en su aplicación y procesar pagos.
- PayPal IPN y por qué debería usarlo y una implementación.
- Probar la integración de PayPal pasarela de pago mediante PayPal sandbox (pago pruebas).
PayPal proporciona diferentes opciones para integrar la puerta de enlace como,
- Estándar de pagos PayPal
- Caja
- Plataforma de comercio PayPal
- Pagos recurrentes con suscripciones PayPal
- Pagos
- Facturación
- Aceptar pagos con tarjeta
- PayPal Pro
PayPal integración de pasarela de pago en PHP
En este artículo usaremos como ejemplo el método «PayPal Payments Standard» para integrar la pasarela de pago en nuestro proyecto.
¿Cómo funciona este ejemplo de integración PayPal?
Vamos a ver unos pasos para lograr la integración de la pasarela de pago PayPal.
- Crear un formulario de pago HTML con los parámetros requeridos y el «botón pagar ahora personalizado«.
- Establecer los valores adecuados para los campos del formulario para completar la información.
- ID de correo electrónico del comerciante y las URL de la devolución de llamada.
- Establezca la acción de formulario adecuada con PayPal punto de conexión de sandbox/URL en vivo en el que se deben publicar los detalles de pago en el envío.
- Maneje la respuesta de pago en el agente de IPN para actualizar la base de datos o para enviar correo electrónico al cliente o ambos.
- Reconozca al usuario adecuadamente con la página de devolución / cancelación después del ciclo de pago.
Estructura de archivos
A continuación, la captura de pantalla muestra la estructura de archivos de este código de ejemplo PHP creado para integrar Payment Gateway utilizando PayPal método Payments Standard.
La página de destino muestra un punto de entrada para continuar con el proceso de transacción de pago PayPal. Mostrará un mosaico de producto de muestra que contiene PayPal campos de pago seguidos de un botón Pagar ahora.
Los archivos de respuesta y cancelación son las páginas de reconocimiento a las que el usuario será redirigido adecuadamente. En notificacion.php es la base de datos IPN listener connect para guardar la respuesta y los datos de las transacciones de pago.
DBController.php archivo contiene el código para crear el objeto de conexión de base de datos y para gestionar las consultas sobre la actualización de la base de datos de pago.
Pasos para integrar pago usando PayPal Standard
PayPal Formulario estándar HTML de pagos
En este código HTML podemos ver los campos de formulario PayPal Payments Standard con un botón personalizado Pagar ahora. Este código de ejemplo tiene como objetivo la dirección URL de espacio aislado PayPal en la acción de formulario.
El formulario de pago PayPal debe contener la dirección de correo electrónico de la empresa, la información del pedido como item_number, el nombre, el importe, la moneda y las URL de la página de devolución de llamada y devolución.
Al enviar este formulario, los parámetros de pago se publicarán en el servidor de PayPal. Por lo tanto, el usuario será redirigido al PayPal Iniciar sesión y se le pedirá la confirmación del pago.
<div class="txt-price">$189.41</div> <form action="<?=$paypal_url?>" method="post" target="_top"> <input type='hidden' name='business' value='<?=$email_paypal?>'> <input type='hidden' name='item_name' value='NIKON'> <input type='hidden' name='item_number' value='CAM#N13'> <input type='hidden' name='amount' value='189.41'> <input type='hidden' name='no_shipping' value='1'> <input type='hidden' name='currency_code' value='USD'> <input type='hidden' name='notify_url' value='<?=$url_script?>/notificacion.php'> <input type='hidden' name='cancel_return' value='<?=$url_script?>/cancelar.php'> <input type='hidden' name='return' value='<?=$url_script?>/retornar.php'> <input type="hidden" name="cmd" value="_xclick"> <input type="submit" name="pay_now" id="pay_now" Value="Comprar ahora"> </form> </div>
Notificaciones PayPal
PayPal proporciona notificaciones utilizando diferentes mecanismos. Será útil para actualizar sus procesos de backend, enviar notificaciones de pedidos y trabajos transaccionales similares. A continuación, se presentan los diferentes tipos de notificaciones proporcionadas por PayPal.
- Webhooks
- IPN
- PDT
Las notificaciones deben utilizarse como parte del proceso de integración de la pasarela de pago. Imagine que está ejecutando un sitio web que vende productos digitales en línea. Al final del proceso de pago, está obligado a enviar el producto digital por correo electrónico.
No debe hacer esto en la página de agradecimiento. Ya que no hay garantía de que esta página se muestre en el navegador del usuario. Puede haber fallas de red, los usuarios pueden cerrar el navegador y hay muchas variables involucradas en esto.
La forma confiable de hacerlo es usar notificaciones PayPal. Obtiene una devolución de llamada de PayPal a su servidor backend (de forma asincrónica) y puede administrar el proceso de backend desde allí.
¿Qué es PayPal IPN?
PayPal notifica a los comerciantes sobre los eventos relacionados con sus transacciones. Esta devolución de llamada automática se puede utilizar para realizar tareas administrativas y para cumplir con los pedidos.
Las notificaciones son realizadas por PayPal sobre diferentes tipos de eventos como, pagos recibidos, autorizaciones realizadas, pagos recurrentes, suscripciones, devoluciones de cargo, disputas, reversiones y reembolsos.
Una parte integral del proceso de integración de la pasarela de pago en la capacidad de recibir PayPal notificación y procesar procesos administrativos de backend.
El cumplimiento de pedidos es un paso importante en un software de carrito de compras. Debe hacerse a través de la notificación de PayPal y nunca debe hacerse como parte de la página de agradecimiento o finalización del pedido.
Agente de notificaciones de pago instantáneo
notificacion.php. Esta URL se enviará a PayPal a través del formulario. También se puede establecer en la configuración de la aplicación api de REST PayPal.
Este agente de notificacion será llamado de forma asincrónica por PayPal para notificar la respuesta de procesamiento de pagos. La respuesta de pago se publicará en esta URL.
El siguiente código verifica el estado del pago a partir de la respuesta devuelta por PayPal. Si el pago se verifica y se completa, el resultado se actualizará en una tabla de base de datos.
DBController.php
Este archivo maneja las funciones relacionadas con la base de datos utilizando la instrucción preparada con MySQLi. Esto es importante, recuerde siempre usar Estados de cuenta preparados, ya que lo protegerá de las inyecciones SQL y un paso principal hacia su seguridad de la aplicación.
<?php class DBController { private $host = "localhost"; private $user = "USER_DB"; private $password = "PASSWORD"; private $database = "BD_NAME"; private $conn; function __construct() { $this->conn = $this->connectDB(); } function connectDB() { $conn = mysqli_connect($this->host, $this->user, $this->password, $this->database); return $conn; } function runQuery($query, $param_type, $param_value_array) { $sql = $this->conn->prepare($query); $this->bindQueryParams($sql, $param_type, $param_value_array); $sql->execute(); $result = $sql->get_result(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $resultset[] = $row; } } if (! empty($resultset)) { return $resultset; } } function bindQueryParams($sql, $param_type, $param_value_array) { $param_value_reference[] = & $param_type; for ($i = 0; $i < count($param_value_array); $i ++) { $param_value_reference[] = & $param_value_array[$i]; } call_user_func_array(array( $sql, 'bind_param' ), $param_value_reference); } function insert($query, $param_type, $param_value_array) { $sql = $this->conn->prepare($query); $this->bindQueryParams($sql, $param_type, $param_value_array); $sql->execute(); } } ?>
Consulta SQL
Esta sección muestra la estructura de la tabla de la base de datos de pagos en formato .sql. Esto se proporciona con el código fuente descargable con el archivo sql/pagos.sql. Importe este archivo en el entorno de prueba para ejecutar este ejemplo.
CREATE TABLE IF NOT EXISTS `payment` ( `id` int(11) NOT NULL AUTO_INCREMENT, `item_number` varchar(255) NOT NULL, `item_name` varchar(255) NOT NULL, `payment_status` varchar(255) NOT NULL, `payment_amount` double(10,2) NOT NULL, `payment_currency` varchar(255) NOT NULL, `txn_id` varchar(255) NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) );
¿Cómo probar la integración de la pasarela de pago PayPal mediante sandbox?
Primeramente, debes de probar en script en un entorno de prueba (SANDOX) de PayPal. Es muy importante si estamos procesando pagos a través de internet. Cada línea de código de PHP debe probarse a fondo antes de su puesta en marcha.
PayPal proporciona un excelente conjunto de herramientas para realizar las pruebas de extremo a extremo de la integración de la pasarela de pago. Proporciona un entorno de espacio aislado con el que puede simular el proceso de pago completo, incluido el paso de pagos y cumplimientos.
Pasos para integrar un entorno de prueba
A continuación, para configurar una cuenta de Sandbox PayPal y probar el código PHP para la integración de la pasarela de pago.
- Regístrese con la cuenta de desarrollador PayPal https://developer.paypal.com/
- Cree cuentas empresariales y personales de sandbox a través de Dashboard -> Sandbox -> Accounts.
- Especifique la dirección de correo electrónico en el fichero config.php
- Agregue la URL de instalación del script en config.php
- Si está utilizando IPN, agregue la URL de sandbox para acceder a través de cURL.
- En config.php, establezca la constante de USE_SANDBOX en 1. «define(«USE_SANDBOX», 1);»
Entrar en funcionamiento real
Una vez que todo funcione bien con todo el flujo de procesamiento de transacciones de pago, entonces será el momento de poner en marcha su PayPal integración de pasarela de pago utilizando código PHP. Cambie el modo sandbox al modo en vivo y haga lo siguiente.
- En config.php, establezca la constante de USE_SANDBOX en 0. «define(«USE_SANDBOX», 0);
- Reemplace el Email empresarial real para que funcione con PayPal
Salida de integración de pasarela de pago
A continuación, la captura de pantalla muestra el mosaico del producto que incluye PayPal formulario estándar de pagos y el botón Pagar ahora personalizado.
Una vez que el usuario accede a darle clic al producto será redirigido a PayPal para procesar el pago mediante saldo PayPal o tarjeta vinculada a la cuenta PayPal.
Después de la transacción de pago exitosa, el usuario será redirigido automáticamente a la URL de devolución como se especifica en el formulario de pago. La página de devolución reconocerá al usuario como se muestra a continuación.
La URL de devolución no es más que una página de agradecimiento o una página de finalización de pedidos. Este es el último paso en el proceso de integración de la pasarela de pago.
Una cosa importante que debe saber es que los pasos de cumplimiento del pedido no deben realizarse secuencialmente en la llamada URL de retorno. Debe hacerse a través de la devolución de llamada IPN u otras notificaciones de PayPal.
CONCLUSIÓN: PayPal usando PHP y MySQL
En este artículo hemos implementado de una manera sencilla la opción de integrar base de datos para almacenar las transacciones correctas realizadas por PayPal
Hemos aprendido a configurar una cuenta PayPal de pruebas y/o cuenta real.
Solo es cuestión de analizar y ver la secuencia de envío de información a PayPal y la respuesta.
Espero que esta breve explicación les ayude a integrar pasarela de pagos PayPal en sus proyectos web.
Ver Demo Descargar