Paypal PHP integración con ejemplo completo
Paypal PHP integración con ejemplo completo. PayPal es una empresa pionera en el rubro de transacciones por internet y es la pasarela de pago más usada en el mundo para integrar en su sitio web para recibir pagos en todo el mundo. Por lo tanto, podemos usarlo para comprar o para recibir pagos de una manera sencilla.
Ahora, si observamos el proceso de pago es muy importante para cualquier empresa que tiene su página web de comercio electrónico. Sin embargo, existen muchas compañías similares a PAYPAL pero esta compañía es la más preferida por millones de usuarios en todo el mundo.
Paypal PHP integración con ejemplo completo
Ser la compañía más popular del mundo en transacciones financieras no la detiene, es más trata constantemente de innovar con nuevos productos y servicios para la satisfacción de sus usuarios. Por lo tanto, PayPal, creo una nueva característica llamada «PayPal Express Checkout»
¿Cómo funciona el sistema integración PayPal Express Checout?
Su uso es sistematizar la venta en tiempo real, veamos algunas características.
- Permitirá a los compradores una experiencia de pago simple.
- Segura que los mantiene locales para el sitio web.
- Mantiene en la aplicación móvil durante el proceso de pago.
- Ventana flotante.
- No abandona el sitio web donde realiza la compra.
PayPal Express Checkout es una solución final de cliente y necesita usar el código PayPal Checkout.js. Así que hoy en este tutorial aprenderá a integrar PayPal Express Checkout en su sitio web con PHP.
Estructura del sistema PayPal PHP integración
A continuación, veremos los recursos que necesitamos para integrar PayPal Express Checkout con PHP. Ahora, veremos los principales archivos para este sistema.
- index.php.- En este archivo contendrá el carrito de compras con la integración PayPal.
- config.php.- La configuración se realizara en este archivo, por ejemplo PayPalClientId, entre otras variables necesarias para el funcionamiento.
- payPalCheckout.php
- orderDetails.php
- header.php
- contenedor.php
Configuración del sistema PayPal PHP integración
Detallaremos los pasos para una correcta implementación del sistema.
Paso 01: Configurar la cuenta de Sandbox de PayPal
- Primeramente tenemos que ir a https://developer.paypal.com y crear una cuenta de PayPal Sandbox para poner en marcha el siguiente ejemplo.
- Necesitamos también crear una aplicación de API de REST pasando por el enlace de aplicaciones REST API en el panel de Sandbox de PayPal.
- Cuando se crea la aplicación REST API, se obtendrá detalles de Sandbox y de la aplicación con ID de cliente y clave secreta para integrar PayPal Express Checkout.
Paso 02: Crear configuración
Esta parte es muy importante, porque se trata de la configuración del sistema y estamos hablando del archivo config.php
. Sin embargo, en este archivo definiremos la configuración de Sandbox para integrar PayPal Express Checkout.
La variable ProPayPal
está definida con el valor 0 para probar la funcionalidad en modo de prueba. Por lo tanto, tenemos que cambiar a 1 cuando entremos en modo real.
<?php //ProPayPal es vital para declarar si es demo o prueba las transacciones //define('ProPayPal', 0); // El cero simboliza entorno de Prueba //define('ProPayPal', 1); // El 1 simboliza entorno de producción define('ProPayPal', 0); if(ProPayPal){ define("PayPalClientId", "*********************"); define("PayPalSecret", "*********************"); define("PayPalBaseUrl", "https://demo.baulphp.com/paypal-php-integracion-con-ejemplo-completo/"); define("PayPalENV", "production"); } else { define("PayPalClientId", "AVACP5vOuQheKwTdBy_tlt2CY3g9CT4NAK3D8j3gEpMIpiO79WuRXaGi--I1ycXOhlaTfzXauydINNoS"); define("PayPalSecret", "EMA6lVCQBJ20WMKOj93Z-M3t9cB5_sq0lV3AZgB0eu8pX2PKuFAsHus87bz3N6EdVyVmfyX1B3QqsEHG"); define("PayPalBaseUrl", "https://demo.baulphp.com/paypal-php-integracion-con-ejemplo-completo/"); define("PayPalENV", "sandbox"); } ?>
Entorno de producción PayPal
Si estas intentando crear un entorno real y/o produccion debes de considerar estos pasos:
ProPayPal es vital para declarar si es demo o prueba las transacciones
define(‘ProPayPal’, 0); // El 0 simboliza entorno de Prueba
define(‘ProPayPal’, 1); // El 1 simboliza entorno de producción
Ahora, en paypal para desarrolladores puedes acceder desde este enlace
Pasos para crear una Apps en PayPal desarrolladores
- Primer paso: Elegir My Apps & Credentials
- Segundo paso: Marcar la opción Live (si es de pruebas marcas sandbox )
- Tercer paso: Clic en crear App
Imagen referencial para obtener las credenciales en producción
Paso 03: Mostrar detalles del elemento con el botón de pago exprés PayPal
Todos los datos del producto con el botón de compra será ejecutada desde el archivo index.php. Por lo tanto, en este fichero se mostrarán los detalles del elemento con el botón PayPal Express Checkout.
También incluiremos el archivo «paypalCheckout.php» para mostrar el botón PayPal Express Checkout de manera dinámica.
<div class="container"> <h2>Paypal Express Checkout demostracion en PHP/h2> <br> <table class="table"> <tr> <td style="width:150px"><img src="demo_product.png" style="width:50px" /></td> <td style="width:150px">$<?php echo $productPrice; ?></td> <td style="width:150px"> <?php include 'paypalCheckout.php'; ?> </td> </tr> </table> </div>
Paso 4: Configurar PayPal Express Checkout
Primero configurar el fichero paypalCheckout.php, para mostrar el botón y procesar el pago con respuesta de la plataforma. Sin embargo, llamaremos a orderDetails.php para mostrar los detalles del proceso de pago con los valores requeridos para poder comprobarlo en vivo. A continuación, un ejemplo.
<div id="paypal-button-container"></div> <div id="paypal-button"></div> <script src="https://www.paypalobjects.com/api/checkout.js"></script> <script> paypal.Button.render({ env: '<?php echo PayPalENV; ?>', client: { <?php if(ProPayPal) { ?> production: '<?php echo PayPalClientId; ?>' <?php } else { ?> sandbox: '<?php echo PayPalClientId; ?>' <?php } ?> }, payment: function (data, actions) { return actions.payment.create({ transactions: [{ amount: { total: '<?php echo $productPrice; ?>', currency: '<?php echo $currency; ?>' } }] }); }, onAuthorize: function (data, actions) { return actions.payment.execute() .then(function () { window.location = "<?php echo PayPalBaseUrl ?>orderDetails.php?paymentID="+data.paymentID+"&payerID="+data.payerID+"&token="+data.paymentToken+"&pid=<?php echo $productId; ?>"; }); } }, '#paypal-button'); </script>
Paso 5: comprobar los detalles del proceso de pago
Ya estamos en la etapa final del proceso de pago. Ahora, la respuesta será mostrada en el fichero orderDetails.php. Así que comprobaremos los valores devueltos en el proceso de pago, veamos los resultados.
a) ID de token.
b) ID de pago.
c) ID de pagador.
d) ID de producto.
<?php if(!empty($_GET['paymentID']) && !empty($_GET['payerID']) && !empty($_GET['token']) && !empty($_GET['pid']) ){ $paymentID = $_GET['paymentID']; $payerID = $_GET['payerID']; $token = $_GET['token']; $pid = $_GET['pid']; ?> <div class="alert alert-success"> <strong>Success!</strong> Su pago ha sido procesado correctamente. </div> <table> <tr> <td>Payment Id: <?php echo $paymentID; ?></td> <td>Payer Id: <?php echo $payerID; ?></td> <td>product Id: <?php echo $pid; ?></td> </tr> </table> <?php } ?>
CONCLUSIÓN DEL SISTEMA
- Este sistema es básico para iniciar en el mundo del comercio electrónico ya que con este ejemplo verán como funciona los procesos de pago por internet.
- Si está pensando en promocionar y vender productos estas en el lugar correcto. Porque, con esta simple aplicación y su correcta configuración podemos recibir pagos por los productos que estemos promocionando por internet.
- Su uso es muy recomendado, porque tenemos el respaldo de una gran compañía llamada PAYPAL.
DESCARGA DEL SISTEMA
A continuación, les dejare un ejemplo completo de este pequeño sistema para que lo usen como base en proyectos futuros.
Ver DemostraciónScript corregido
Hola.
Está bien, todo funciona correctamente con PHP 8, sin embargo… cuando el usuario entra en orderDetails.php y con todos los GET’s no hay manera de comprobar si el pago fue o no correcto… saludos.
Hola Daniel, estoy tratando de implementar paypal como pasarela de pago y me encuentro con este mismo problema. Pudiste encontrar una solución? veo que no obtuviste respuesta…
Pensé exactamente lo mismo y estoy trabado. No me parece para nada seguro este procedimiento. Quizá si para el primer pago, pero pudiendo ver el contenido de las variables en ambos extremos podés burlar el resto de los pagos como quieras.
Hola hermano, me gustó tu tutorial de la integración con paypal, pero podrías hacer uno con Pagadito?? pagadito.com es el sitio de esta pasarela. También ofrecen una api en php, y quisiera integrarla en un sitio sin wordpress, pero me está costando mucho.
Buenas noches. Una pregunta, cuando se le de clic derecho y se escoja «Inspeccionar», si buscamos el script de paypalCheckout.php en el archivo index.php si aparece y este archivo al hacer ‘echo’ las llaves de production o sandbox, dependiendo cual se este seleccionando, si aparecen, esto no es peligroso? puede ser vulnerable el sistema por esto?
Me gustaría mucho su retroalimentación, ya que aún no se si sea peligroso o no.
Hola Buenas tardes Jimmy
He estado analizando su consulta y veo que no hay problema, es mas el mismo paypal con ejemplos da esa informacion libre.
https://developer.paypal.com/demo/checkout-v4/#/pattern/client
Solo está mostrando su ID de cliente, así que eso solo permitiría a la gente crear botones para pagarle. Entonces, el riesgo es que algún «aspirante a hacker» quiera usar eso y crear un botón en otro sitio web, resultara que la gente te pague. No veo ningún problema con eso. Es perfectamente seguro.
Buenas tardes, que puedo hacer si funciona con el entorno de sandbox pero no con el entorno de produccion? lo unico que cambia es el clienteID y el token y cuando apunta a produccion termina apareciendo un error en la consola:
Payment could not be executed
Alguna sugerencia? gracias.
Hola jox
Primeramente debes configurar en el fichero config de ProPayPal a 1
//ProPayPal es vital para declarar si es demo o prueba las transacciones
//define(‘ProPayPal’, 0); // El cero simboliza entorno de Prueba
//define(‘ProPayPal’, 1); // El 1 simboliza entorno de producción
Nota:
He actualizado el artículo para que puedas guiarte.
Saludos
Eso lo sé y cuando apunta a producción no se realiza el pago, y llega un mensaje de error. Era por si te había pasado a ver qué se puede hacer
Hola Jox
Primeramente vuelve a descargar el script, estos dias se ha realizado actualizaciones.
En el fichero config.php, Si es producción se tiene que declarar así define(‘ProPayPal’, 1); Y colocar las credenciales de paypal reales de una cuenta en producción (paypal empresa). Además, declarar la ruta de tu script en la constante «PayPalBaseUrl», es decir en que carpeta está instalado.
He probado el script en producción con una cuenta «paypal empresa real» y funciona perfectamente.
Si has configurado correctamente y te muestra error, seguramente debe ser por las credenciales paypal.
Saludos
Hola puesde explicar donde exactamente es que se configura la cuenta que resive la plata????
Hola Lorenz
Hay que configurar el fichero config.php
De tu cuenta paypal de produccion o cuenta demo puedes obtener 2 puntos:
1) PayPalClientId
2) PayPalSecret
Si colocas esas credenciales automaticamente el dinero va a tu cuenta paypal.
Saludos
Que grande eres tío, borrando los comentarios malos!
Te compre tu script aunque lo he tenido que cambiar funciona, nadie es perfecto y hay que ser humilde para admitirlo y subir una nueva versión y no fallar a los clientes que con fe vienen a comprarte. Pero
a) subir código que no funciona y venderlo como que si – malazo; y
b) Quitar los comentarios malos, me parece desleal
Tienes mi correo si deseas dar la cara
Hola Jaime,
1) Los script que ofrecemos tienen soporte personalizado.
2) Solo borramos comentarios de publicidad, spam u otros comentarios ofensivos.
Si el script que adquiriste en nuestra web no funcionan por algun factor de version de PHP, base de datos, etc.
Puedes escribir a esta direccion para pedir soporte.
https://www.baulphp.com/contactanos/
Espero que este mal entendido se solucione.
Saludos
No regresa a la página de comprobación de la operación. Se queda en blanco en una pagina de Sandbox. ¿Alguien sabe qué procede?
Hola Phpero
Primeramente, agradecerle por su comentario y mencionarle que el error ya está corregido y puede descargarlo y/o ver la demostración en vivo.
https://demo.www.baulphp.com/paypal-php-integracion-con-ejemplo-completo/
Saludos
Hola te hago una consulta, este código sirve para clientes que quieran pagar con tarjeta de crédito sin cuenta en paypal? Gracias, saludos.
muchas gracias funciono perfecto solo tuve que cambiar la url base para verificar que todo esta ok. gracias por este aporte
disculpa que modificación realizaste, te agradeceria me comentaras
disculpa que modificación realizaste, te agradeceria me comentaras x2
A la gente que responde de esta manera deberían cortarle las manos. ¿Que manera de aportar a la comunidad es esa?
Se me hace que eres el conocido de Nestor, xq a nadie mas le ha funcionado
Hola Jaime
Acabo de probarlo y funciona muy bien
https://demo.www.baulphp.com/paypal-php-integracion-con-ejemplo-completo/
Saludos
Pues, lo siento doctor, NO funciona correctamente
En el tutorial dice:
define(«PayPalBaseUrl», «https://api.paypal.com/v1/»);
define(«PayPalBaseUrl», «https://api.sandbox.paypal.com/v1/»);
window.location = «orderDetails.php?paymentID
Pero en la demo indica:
window.location = «/paypal-php-integracion-con-ejemplo-completo/orderDetails.php ..
Como puedes ver hay un error, que incluso se da en las fuentes entregadas en la compra, seria bueno sincronizar tutorial y fuentes
Hola Jaime,
Si, una vez corregido se sincronizara las fuentes y los script relacionados.
Gracias por el comentario
buenos dias y se le puede integrar tras que paypal verifique ejecute el sistema una consulta mysql como moneda virtual
me dice esto
No se puede encontrar esta página (api.sandbox.paypal.com)No se ha encontrado ninguna página web para la dirección https://api.sandbox.paypal.com/v1/orderDetails.php?paymentID=PAYID-LXZRAPQ60B96741TL8442109&payerID=HJYKD4JDYBN5E&token=EC-7TV052351A763634W&pid=123456.
HTTP ERROR 404
A mi tambien me pasa lo mismo, creo que hay que modificar la pagina orderDetails.php como pagina IPN simulator (respuesta de PayPal) bueno, a eso voy; espero que resulte
Hola Jaime,
Ya esta funcionando el script.
Saludos
Buenas tardes, ¿Se podría integrar con WordPress? Muchas gracias
Saludos, el archivo orderDetails.php no hace nada, no entiendo el problema