Integración de la pasarela de pago de PayPal en CodeIgniter

Hoy en día, la pasarela de pago se utiliza enormemente para el comercio electrónico y los proveedores de servicios en línea. Ayuda a aceptar el pago en línea en la aplicación web. Antes de integrar una pasarela de pago en el sitio web, debe elegir el mejor proveedor de servicios de pasarela de pago para aceptar el pago en línea sin ninguna interrupción. PayPal es una de las soluciones de pago por Internet más populares del mundo. Si desea aceptar un pago global en su sitio web, PayPal es la mejor opción para integrar la pasarela de pago en su proyecto web.
PayPal proporciona una manera fácil de integrar la pasarela de pago estándar en PHP . Si su aplicación web creada con CodeIgniter, debe crearse una biblioteca para la integración de la pasarela de pago estándar de PayPal en CodeIgniter. En este tutorial, le mostraremos cómo integrar la pasarela de pago de PayPal en CodeIgniter . Aquí proporcionaremos la guía paso a paso sobre la integración de la pasarela de pago estándar de PayPal para la aplicación CodeIgniter. Nuestro código de ejemplo le ayudará a integrar la pasarela de pago de PayPal en CodeIgniter.
En la aplicación de ejemplo CodeIgniter, se seguirán los siguientes pasos para integrar la pasarela de pago de PayPal en CodeIgniter.
  • Obtenga los productos de la base de datos y anótelos en la página web.
  • Cada producto tendrá un botón Comprar ahora que le permite al usuario comprar el producto.
  • El botón Comprar redirige al usuario al sitio de PayPal para realizar el pago.
  • Después del pago en PayPal, el comprador será redirigido de nuevo al sitio web.
  • El estado del pago con los datos de la transacción se mostrará al comprador.
  • La transacción se validará mediante el servicio PayPal IPN (Notificación de pago instantánea) y la información de pago se almacenará en la base de datos.

Crear una cuenta de PayPal Sandbox

Antes de activar la pasarela de pago de PayPal, debe comprobarse si el proceso de pago funciona correctamente. PayPal proporciona un entorno de Sandbox para probar el proceso de transacción antes de aceptar el pago de los compradores. 
Para probar la pasarela de pago de PayPal, debe crear una cuenta de sandbox de PayPal.
  • Vaya al Portal de desarrolladores de PayPal e inicie sesión en el Tablero con las credenciales de su cuenta de PayPal. Si no tiene una cuenta de PayPal, regístrese primero para obtener una cuenta de PayPal.
  • En el panel de control, haga clic en Cuentas debajo de la etiqueta de la caja de arena en el panel de menú del lado izquierdo.
    paypal-developer-sandbox-account-codeigniter-codexworld
  • Haga clic en Crear cuenta para crear una cuenta de comprador y comerciante. En la sección Tipo de cuenta, seleccione Personalpara cuenta de comprador o Negocio para una cuenta de comerciante.
    create-paypal-sandbox-buyer-business-account-codeigniter-codexworld

Crear tablas de base de datos

Para almacenar información de productos y pagos, se deben crear dos tablas en la base de datos.
El siguiente SQL crea una productstabla con algunos campos básicos en la base de datos MySQL.
CREATE  TABLE  `products` (
  ` id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `name`  varchar ( 255 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` image`  varchar ( 200 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `price`  float ( 10 , 2 ) NOT  NULL ,
  `status` enum ( '1' , '0' )COLLATE utf8_unicode_ci NOT  NULL  DEFAULT  '1' ,LLAVE 
 PRIMARIA ( `id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;
El siguiente SQL crea una paymentstabla en la base de datos MySQL para almacenar la información de transacción proporcionada por PayPal.
CREAR  TABLA  `payment` (
  ` payment_id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `user_id`  int ( 11 ) NOT  NULL ,
  ` product_id`  int ( 11 ) NOT  NULL ,
  `txn_id`  varchar ( 100 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` payment_gross`  float ( 10 , 2 ) NOT  NULL ,
 `currency_code`  varchar ( 5 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` payer_email`  varchar ( 100 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `payment_status`  varchar ( 20 ) COLLATE utf8_unicode_ci NOT  NULL ,LLAVE 
 PRIMARIA ( `payment_id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;

Config

paypal.php:
Las variables de configuración de la biblioteca de PayPal se definen en este archivo. Especifique el entorno de PayPal, el correo electrónico comercial y el código de moneda.
<? php   if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 
// ------------------------------------------------ ------------------------ 
// Configuración de la biblioteca de Paypal 
// ------------------- -------------------------------------------------- --- 

// Entorno de PayPal, Sandbox o Live $ config [ 'sandbox' ] =  TRUE // FALSE para el entorno en vivo 

// PayPal business email $ config [ 'business' ] =  'Your_PayPal_Email' ; 
// ¿Cuál es la moneda por defecto? $ config ['paypal_lib_currency_code' ] =  'USD' ; 
// ¿Dónde está ubicado el botón? $ config [ 'paypal_lib_button_path' ] =  'asset / images /' ; 
// Si (y donde) para registrar la respuesta ipn en un archivo $ config [ 'paypal_lib_ipn_log' ] =  TRUE ; $ config [ 'paypal_lib_ipn_log_file' ] =  BASEPATH  'logs / paypal_ipn.log' ;

Biblioteca

Paypal_lib.php:
La biblioteca de Paypal CodeIgniter ayuda a integrar la pasarela de pago de PayPal en la aplicación CodeIgniter 3. Esta biblioteca tiene una dependencia de un archivo de configuración llamado paypal.phpColoque el Paypal_lib.phparchivo en el application/libraries/directorio y el paypal.phparchivo en el application/config/directorio.
Solía
  • Genere el formulario de PayPal y envíelo a PayPal.
  • Valide la respuesta de IPN usando cURL en PHP.
  • Registrar los datos de respuesta de IPN en un archivo.
<? php  if (! defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); / ** 
 * Biblioteca de PayPal para CodeIgniter 3.x 
 * 
 * Biblioteca para la pasarela de pago de PayPal. Ayuda a integrar la pasarela de pago de PayPal 
 * en la aplicación CodeIgniter. 
 * 
 * Requiere el archivo de configuración de PayPal y se debe colocar en el directorio de configuración. 
 * 
 * @package CodeIgniter 
 * @category Libraries 
 * @author CodexWorld 
 * @license http://www.codexworld.com/license/ 
 * @link http://www.codexworld.com 
 * @version 2.0 
 * / 
class  Paypal_lib{ 

    var  $ last_error ; 
    var  $ ipn_log ; 
    var  $ ipn_log_file ; 
    var  $ ipn_response ;    
    var  $ ipn_data  = array (); 
    var  $ fields  = array (); 
    var  $ submit_btn  '' ; 
    var  $ button_path  '' ; 
    var  $ CI ; 
    
    función  __construct () { 
        $ this -> CI  = &  get_instance (); 
        $ esto -> CI ->carga -> ayudante ( 'url' ); 
        $ this -> CI -> load -> helper ( 'form' ); 
        $ this -> CI -> load -> config ( 'paypal' ); 
        
        $ sanbox  $ this -> CI -> config -> item ( 'sandbox' ); 
        $ esto -> paypal_url  = ( $ sanbox  ==  VERDADERO )? 'https://www.sandbox.paypal.com/cgi-bin/webscr' :'https://www.paypal.com/cgi-bin/webscr' ; 
                
        $ this -> last_error  '' ; 
        $ this -> ipn_response  '' ; 

        $ this -> ipn_log_file  $ this -> CI -> config -> item ( 'paypal_lib_ipn_log_file' ); 
        $ this -> ipn_log  $ this -> CI -> config -> item ( 'paypal_lib_ipn_log' ); 
        
        $ esto ->$ this -> CI -> config -> item ( 'paypal_lib_button_path' ); 
        
        // rellena $ array array con unos pocos valores por defecto. 
        $ businessEmail  $ this -> CI -> config -> item ( 'business' ); 
        $ this -> add_field ( 'business' , $ businessEmail ); 
        $ this -> add_field ( 'rm' , '2' ); 
        $ esto -> add_field ( 'cmd' ,); 

        $ this -> add_field ( 'currency_code' $ this -> CI -> config -> item ( 'paypal_lib_currency_code' )); 
        $ this -> add_field ( 'cantidad' '1' ); 
        $ este botón -> ( '¡Pagar ahora!' );     } botón de     función  ( $ valor ) { // cambia el título predeterminado del botón de envío $ esto -> submit_btn  form_submit (



        
        'pp_submit' $ valor ); 
    } 

imagen de     función  ( $ archivo ) { 
        $ this -> submit_btn  '<input type = "image" name = "add" src = "' . base_url ( rtrim ( $ this -> button_path '/' ). '/' $ file ). '"border =" 0 "/>' ; 
    } 

    function  add_field ( $ field $ value ) { 
        // agrega una clave =>
        [ $ campo ] =  $ valor ; 
    } 

    function  paypal_auto_form () { 
        // formulario con elementos ocultos que se envía a paypal 
        $ this -> button ( 'Haga clic aquí si no se le redirige automáticamente ...' ); 

        echo  '<html>'  "\ n" ; 
        echo  '<head> <title> Procesando pago ... </title> </head>'  "\ n" ; 
        echo  '<body style = "text-align: center;" onLoad = "document.forms [\ 'paypal_auto_form \']. submit ();"> '  "\ n" ; 
        eco '<p style = "text-align: center;"> Por favor, espere, su orden se está procesando y será redirigido al sitio web de PayPal. </p>'  "\ n" ; 
        echo  $ this -> paypal_form ( 'paypal_auto_form' ); 
        echo  '</body> </html>' ; 
    } 

    function  paypal_form ( $ form_name = 'paypal_form' ) { 
        $ str  '' ; 
        $ str  . =  '<form method = "post" action = "' . $ this -> paypal_url . '"nombre ="' . $ form_name .'"/>'  " \ n " ; 
        foreach ( $ this -> fields  as  $ name  =>  $ value ) 
            $ str  . =  form_hidden ( $ name $ value ).  " \ n " ; 
        $ str  . =  '< p> ' $ this -> submit_btn  ' </p> ' ; 
        $ str  . =  form_close ().  "\ n" ; 

        return  $ str ;
    } 
    
    función  validate_ipn ( $ paypalReturn) { 
        $ ipn_response  $ this -> curlPost ( $ this -> paypal_url $ paypalReturn ); 
        
        if ( preg_match ( "/ VERIFIED / i" $ ipn_response )) { 
            // Transacción IPN válida. 
            volver  verdadera ; 
        } else { 
            // Transacción IPN inválida. Compruebe el registro para más detalles. 
            $ this -> last_error  'Falló la validación de IPN'. ; 
            $ this -> log_ipn_results ( false );    
            devolver  falso; 
        } 
    } 

    function  log_ipn_results ( $ success ) { 
        if (! $ this -> ipn_log ) return;  // ¿el registro está desactivado? 

        // Marca 
        de tiempo $ text  '[' . fecha ( 'm / d / Y g: i A' ). '] -' 

        // ¿Se está logrando o no el éxito? 
        if ( $ success $ text  . =  "SUCCESS! \ n" ; 
        else  $ text  . =  'FAIL:' . $ esto -> last_error . "; 

        // Registre las variables POST 
        $ text  . =  "IPN POST Vars from Paypal: \ n" ; 
        foreach ( $ this -> ipn_data  como  $ key => $ value ) 
            $ text  . =  " $ key = $ value ," ; 

        // Registre la respuesta del servidor paypal 
        $ text  . =  "\ NIPN Respuesta del servidor Paypal: \ n" . $ esto -> ipn_response ; 

        // Escribir en el registro 
        $ fp = fopen ( $ this -> ipn_log_file , 'a' );
        fwrite ( $ fp $ text  "\ n \ n" ); 

        fclose ( $ fp );  // archivo cerrado 
    } 

    function  dump () { 
        // Usado para la depuración, esta función generará todos los pares de campos / valores 
        ksort ( $ this -> fields ); 
        echo  '<h2> ppal-> dump () Salida: </h2>'  "\ n" ; 
        echo  '<code style = "fuente: 12px Mónaco, \' Courier New \ ', Verdana, Sans-serif; fondo: # f9f9f9; borde: 1px sólido # D0D0D0; color: # 002166; pantalla: bloque; margen: 14px 0 ; relleno: 12px 10px; "> "\ n" ; 
        foreach ( $ this -> campos  como  $ key  =>  $ value ) echo  '<strong>' $ clave  . '</strong>:' urldecode ( $ valor ). '<br/>' ; 
        echo  "</code> \ n" ; 
    } 
    
    function  curlPost ( $ paypal_url $ paypal_return_arr ) { 
        $ req  'cmd = _notify-validate' ;
$ value ) { 
            $ value  urlencode ( stripslashes ( $ value )); 
            $ req  . =  "& $ key = $ value " ; 
        } 
            
        $ ipn_site_url  $ paypal_url ; 
        $ ch  curl_init (); 
        curl_setopt ( $ ch CURLOPT_URL $ ipn_site_url ); 
        curl_setopt ( $ ch CURLOPT_HEADER falso ); 
        curl_setopt ( $ ch CURLOPT_POST 1 ); 
        curl_setopt ( $ ch CURLOPT_RETURNTRANSFER true ); 
        curl_setopt ( $ ch CURLOPT_POSTFIELDS $ req ); 
        $ resultado  curl_exec ( $ ch ); 
        curl_close ( $ ch ); 
    
        devuelve  $ resultado ; 
    } 

}

Controlador

Crearemos dos controladores, Productos y Paypal para manejar la lista de productos y el proceso de pago.
Productos (Productos.php):
el controlador de Productos contiene 3 funciones, __construct (), index () y buy ().
  • __construct() - Carga la biblioteca de PayPal y el modelo del producto.
  • index() -
    • Recupere los datos de los productos de la base de datos utilizando la función getRows () del modelo del producto.
    • Pase los datos a la vista y cargue el archivo de vista para enumerar los productos.
  • buy() -
    • Obtenga los datos del producto de la base de datos según el ID del producto solicitado.
    • Genere el formulario de PayPal con variables HTML utilizando la biblioteca de PayPal.
    • Procese el formulario de PayPal y redirija al comprador al sitio de PayPal para que realice el pago.
<? php defined ( 'BASEPATH' ) O exit ( 'No se permite el acceso directo al script' ); 

la clase  Productos se  extiende a  CI_Controller { 
    
    function   __construct () { 
        parent :: __construct (); 
        
        // Cargar la biblioteca de paypal y el modelo del producto 
        $ this -> load -> library ( 'paypal_lib' ); 
        $ esto -> cargar -> modelo ( 'producto' ); 
    } 
    
índice de     función  () { 
        $ data  = array ();
        
        // Obtener datos de productos de la base 
        de datos $ datos [ 'productos' ] =  $ esto -> producto -> getRows (); 
        
        // Pase los datos de los productos a la vista 
        $ this -> load -> view ( 'products / index' $ data ); 
    } 
    
    función  comprar ( $ id ) { 
        // Establecer variables para paypal form 
        $ returnURL  base_url (). 'paypal / success' ; 
        $ cancelURL  base_url (). 'paypal / cancel' ; 
        $ notificationURL base_url (). 'paypal / ipn' ; 
        
        // Obtener datos del producto de la base 
        de datos $ product  $ this -> product -> getRows ( $ id ); 
        
        // Obtener el ID de usuario actual de la sesión 
        $ userID  $ _SESSION [ 'userID' ]; 
        
        // Agregar campos a paypal desde 
        $ this -> paypal_lib -> add_field ( 'return' $ returnURL ); 
        $ this -> paypal_lib -> add_field ( 'cancel_return' $ cancelURL ); 
        $ this -> paypal_lib -> add_field ( 'notify_url' $ notifyURL ); 
        $ this -> paypal_lib -> add_field ( 'item_name' $ product [ 'name' ]); 
        $ this -> paypal_lib -> add_field ( 'custom' $ userID ); 
        $ this -> paypal_lib -> add_field ( 'item_number' ,   $ product [ 'id' ]);
        -> paypal_lib -> add_field ( 'cantidad' ,   $ producto [ 'precio' ]); 
        
        // Procesar paypal form 
        $ this -> paypal_lib -> paypal_auto_form (); 
    } 
}
Paypal (Paypal.php):
el controlador de Paypal contiene 4 funciones, __construct (), success (), cancel () e ipn ().
  • __construct() - Carga la biblioteca de PayPal y el modelo del producto.
  • success() - Obtenga los datos de transacción de la URL y muestre el éxito del pago al comprador.
  • cancel() - Mostrar la notificación de fallos en el pago al usuario.
  • ipn() - Este método es llamado por PayPal IPN (Notificación de pago instantánea).
    • Valide la transacción utilizando el método validate_ipn () de la biblioteca de PayPal.
    • Inserte la información de pago en la base de datos utilizando la función insertTransaction () del modelo del producto.
<? php  if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

la clase  Paypal  extiende  CI_Controller { 
    
     function   __construct () { 
        parent :: __construct (); 
        
        // Cargar la biblioteca de paypal y el modelo del producto 
        $ this -> load -> library ( 'paypal_lib' ); 
        $ esto -> cargar -> modelo ( 'producto' ); 
     } 
     
    función  éxito () {
        // Obtenga los datos de la transacción 
        $ paypalInfo  $ this -> input -> get (); 

        $ data [ 'item_name' ] =  $ paypalInfo [ 'item_name' ]; 
        $ data [ 'item_number' ] =  $ paypalInfo [ 'item_number' ]; 
        $ data [ 'txn_id' ] =  $ paypalInfo [ "tx" ]; 
        $ data [ 'payment_amt' ] =  $ paypalInfo [ "amt" ]; 
        $ datos [ '] =  $ paypalInfo [ "cc" ]; 
        $ data [ 'status' ] =  $ paypalInfo [ "st" ]; 
        
        // Pase los datos de la transacción para ver 
        $ this -> load -> view ( 'paypal / success' $ data ); 
    } 
     
     función  cancel () { 
        // Error al cargar el pago ver 
        $ this -> load -> view ( 'paypal / cancel' ); 
     } 
     
     function  ipn () { 
        // Paypal publica los datos de la transacción
        $ paypalInfo  $ this -> input -> post (); 
        
        if (! empty ( $ paypalInfo )) { 
            // Valide y obtenga la respuesta 
            de ipn $ ipnCheck  $ this -> paypal_lib -> validate_ipn ( $ paypalInfo ); 

            // Compruebe si la transacción es válida 
            si ( $ ipnCheck ) { 
                // Inserte los datos de la transacción en la base 
                de datos $ data [ 'id_usuario' ] =  $ paypalInfo [ "personalizado" ]; 
                $ datos [ 'product_id' ] = $ paypalInfo [ "item_number" ]; 
                $ data [ 'txn_id' ] =  $ paypalInfo [ "txn_id" ]; 
                $ data [ 'payment_gross' ] =  $ paypalInfo [ "mc_gross" ]; 
                $ data [ 'currency_code' ] =  $ paypalInfo [ "mc_currency" ]; 
                $ data [ 'payer_email' ] =  $ paypalInfo [ "payer_email" ]; 
                $ datos [ 'payment_status']; 

                $ this -> product -> insertTransaction ( $ data ); 
            } 
        } 
    } 
}
Configurar la notificación de pago instantánea de PayPal (IPN):
la ipn()función del controlador de Paypal verifica cada transacción e inserta los datos de pago en la base de datos. La IPN de PayPal debe estar habilitada en la cuenta comercial de PayPal para que la IPN funcione. Debe especificar la URL de IPN ( http://www.example.com/paypal/ipn/) en el campo de URL de notificación donde PayPal enviará los mensajes de IPN.
Siga esta guía paso a paso para habilitar IPN en PayPal: cómo habilitar la Notificación de pago instantánea de PayPal
Tenga en cuenta que: Los datos de la transacción no se insertarán en la base de datos sin la configuración de IPN de PayPal.

Modelo (Product.php)

El modelo del producto contiene 3 funciones __construct()getRows()insertTransaction().
  • __construct () : define los nombres de las tablas de la base de datos.
  • getRows () : recupera los registros de la tabla de productos y los devuelve como una matriz.
  • insertTransaction () : inserte los datos de la transacción en la tabla de pagos.
<? php  if (!  defined ( 'BASEPATH' )) exit ( 'No se permite el acceso directo al script' ); 

clase  de productos  se extiende  CI_Model { 
    
    función  __construct () { 
        $ this -> protable    'productos' ; 
        $ this -> transTable  'pagos' ; 
    } 
    
    / * 
     * Obtener datos de productos de la base de datos 
     * @param id devuelve un solo registro si se especifica, de lo contrario, todos los registros 
     * / 
    función pública  getRows ( $ id  '' ) { 
        $ this -> db -> select ( '*' ); 
        $ this -> db -> from ( $ this -> proTable ); 
        $ this -> db -> where ( 'status' '1' ); 
        if ( $ id ) { 
            $ this -> db -> where ( 'id' $ id ); 
            $ consulta   $ esto -> db -> get (); 
            $ resultado $ consulta -> fila_array (); 
        } else { 
            $ this -> db -> order_by ( 'name' 'asc' ); 
            $ consulta   $ esto -> db -> get (); 
            $ result  $ query -> result_array (); 
        } 
        
        // devolver el 
        retorno de datos recuperados ! vacío ( $ resultado )? $ resultado : falso ; 
    } 
    
    / * 
     * Insertar datos en la base de datos 
     * @param data array 
     * /
    función pública  insertTransaction ( $ data ) { 
        $ insert  $ this -> db -> insert ( $ this -> transTable , $ data ); 
        volver  $ insertar ? verdadero : falso ; 
    } 
    
}

Ver

Se crearán dos directorios de vista, productos y paypal. El products/directorio contiene los archivos de vista del controlador de Productos y el paypal/directorio contiene los archivos de vista del controlador de Paypal. Todos los productos se obtienen de la base de datos y se enumeran con el botón de compra.
products/index.php:
< div  class = "col-lg-12" > 
<! - Listar todos los productos -> 
<? php  if (! empty ( $ products )) {foreach ( $ products  as  $ row ) {  ?> 
    < div  class = "col-sm-4 col-lg-4 col-md-4" > 
        < div  class = "thumbnail" > 
            < img  src = " <? php  echo  base_url ( ' asset / images /' . $ row [ 'image' ]);  ?> "/> 
            <div  class = "caption" > 
                < h4  class = "pull-right" > $ <? php  echo  $ row [ 'price' ]; ?> USD </ h4 > 
                < h4 > < a  href = "javascript: void (0);" > <? php  echo  $ row [ 'name' ]; ?> </ a > </ h4 > 
                < p >a  href = "http://www.codexworld.com" > CodexWorld </ a > . </ P > 
            </ div > 
            < div  clase = "ratings" > 
                < un  href = " <? Php?  Eco  base_url ( 'productos / Comprar /' . $ Fila [ 'id' ]);  ?> " > 
                    < Img  src = " <? php  echo  base_url ( '); ?> " />
                </ a >
                < p  class = " pull-right " >15 reviews</ p >
                < p >
                    < span  class = " glyphicon glyphicon-star " ></ span >
                    < span  class = " glyphicon glyphicon -star " ></ span >
                    < span  class = " glyphicon glyphicon-star " ></ span >
                     "glyphicon glyphicon-star" > </ span > 
                    < span  class = "glyphicon glyphicon-star" > </ span > 
                </ p > 
            </ div > 
        </ div > 
    </ div > 
<? php  }} else else  ? > 
    < p > Producto (s) no encontrado ... </ p > 
<? php  ?> 
</ div >
paypal/success.php:
Después del pago en PayPal, se muestran la notificación de éxito y los datos de la transacción.
< div  class = "col-lg-12" > 
    < h4  class = "success" > ¡ Gracias! Su pago fue exitoso. </ h4 > 
    < p > Nombre del elemento: < span > <? php  echo  $ item_name ?> </ span > </ p > 
    < p > Número de artículo: < span > <? php  echo  $ item_number ?> <p > 
    < p > TXN ID: < span > <? php  echo  $ txn_id ?> </ span > </ p > 
    < p > Cantidad pagada: < span > $ <? php  echo  $ payment_amt . '' . $ currency_code ?> </ span > </ p > 
    < p > Estado del pago: < span > $ status ?> </ span > </ p >
    
    < Un  href = " <? Php?  Eco  base_url ( 'productos' );  ?> " > Volver a los productos </ a > 
</ div >
paypal/cancel.php:
Si el usuario cancela el pago o falla la transacción, se muestra la notificación.
< div  class = "col-lg-12" > 
    < h4  class = "error" > Lo sentimos! Su transacción fue cancelada. </ h4 >
    
    < Un  href = " <? Php?  Eco  base_url ( 'productos' );  ?> " > Volver a los productos </ a > 
</ div >

Probar transacción de PayPal

  • Abra la URL del controlador de productos (http://example.com/application_folder/products) en el navegador.
  • Los productos se listarán con el botón Comprar.
  • Haga clic en el botón Comprar. Será redirigido al sitio de PayPal para el pago.
  • Inicie sesión en PayPal con su cuenta personal de Sandbox y complete el pago.
  • Una vez que se haya realizado el pago, será redirigido de nuevo a la página de éxito de pago del sitio web y se mostrarán los detalles de la transacción.

Haga que PayPal Payment Gateway Live

Cuando la prueba de flujo de pago de su aplicación se complete con la cuenta de sandbox, realice la siguiente modificación para que la pasarela de pago de PayPal esté activa. 
Abra el application/config/paypal.phparchivo, especifique el entorno de PayPal y el correo electrónico comercial.
  • Establezca sandbox en FALSE para el entorno en vivo.
    $ config [ 'sandbox' ] =  FALSE ;
  • Especifique su correo electrónico de negocios en vivo de PayPal.
    $ config [ 'business' ] =  'live_paypal@email.com' ;
¡Estás listo! Ahora puede aceptar el pago en línea de los compradores con la cuenta de PayPal.

Acerca de: Programator

Somos Instinto Programador

0 comentarios:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Con tecnología de Blogger.