Lenguaje PHP

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
Paypal PHP integración con ejemplo completo

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 Checkout orden y pagar ahora, vista general
Paypal Checkout orden y pagar ahora, vista general

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
integracion pasarela pago con paypal y php
integracion pasarela pago con paypal y 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.
Creacion de cuenta en developer paypal
Creacion de cuenta en developer paypal

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>
PayPal Express Checkout con integración PHP
PayPal Express Checkout con integración PHP

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ón

Script corregido

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

30 comentarios

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

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

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

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

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

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

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

      define('ProPayPal', 0);
      if(ProPayPal){
      	define("PayPalClientId", "*********************");
      	define("PayPalSecret", "*********************");
      	define("PayPalBaseUrl", "https://demo.www.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.www.baulphp.com/paypal-php-integracion-con-ejemplo-completo/");
      	define("PayPalENV", "sandbox");
      }

      Nota:
      He actualizado el artículo para que puedas guiarte.

      Saludos

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

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

    1. Hola Lorenz

      Hay que configurar el fichero config.php

      define("PayPalClientId", "*********************");
      define("PayPalSecret", "*********************");
      

      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

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

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

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

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

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

          1. Hola Jaime,

            Si, una vez corregido se sincronizara las fuentes y los script relacionados.

            Gracias por el comentario

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

Deja una respuesta

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

Botón volver arriba