Implementación de PayPal en codeigniter

imagen principal Fecha de publicación: 03/11/2014

Habilitar la pasarela de pagos en PayPal en codeigniter hoy en día es muy sencillo. Para nuestro propósito utilizaremos la librería CI-Merchant. Desde esta página explica muy bien los requisitos necesarios para el funcionamiento y los pasos a realizar para su implementación. El problema es que no está del todo mascado (tuve problemas en su día), con lo que os voy a facilitar una serie de pasos mediante los cuales podréis realizar la implementación sin ningún tipo de problema.

1) Descarga de la librería

Lo primero de todo será descargar la librería. Para ello nos vamos a la página CI-Merchant y lo descargamos. (Para descargarlo sólo tenéis que entrar en la página y pulsar el botón Download ZIP)

2) Instalación en nuestro proyecto

En el fichero que nos hemos descargado veréis una carpeta llamada libraries. Pues bien, tenemos que copiar el contenido que hay dentro de esta carpeta a nuestra carpeta libraries (application/libraries)

3) Parámetros de PayPal

Creamos un nuevo fichero en la carpeta libraries que le llamamos lgeneral e introducimos los parámetros de PayPal de nuestra cuenta.

application/libraries/lgeneral.php

<?php if (!defined('BASEPATH')) exit('No permitir el acceso directo al script');
class Lgeneral{
    private $paypal_settings = array(
        'username' => 'cuentapaypal.es',
        'password' => 'XXXXXXXXXXXXXXX',
        'signature' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        'test_mode' => true);
    
    public function paypal_settings() {
        return $this->paypal_settings;
    }
}
?>

Estos parámetros obviamente los obtendremos de nuestra cuenta de PayPal ya sea la cuenta que estemos utilizando para pruebas como la cuenta real.

Si no sabéis de donde obtener estos parámetros seguid este procedimiento:

  1. Entrad en PayPal con vuestra cuenta
  2. Pulsad el link Perfil
  3. Ahora pulsad la opción Opciones de Venta
  4. Ahora escoged de la lista Acceso a API
  5. En este punto, si ya tenéis solicitada las credenciales API sólo tenéis que pulsar en Ver firma de API y obtendréis los datos que debéis poner en los parámetros de la cuenta. Si no la hubierais solicitado tendríais que solicitar las credenciales API para permitir que vuestra cuenta pueda realizar operaciones de compra-ventas

4) Conexión con PayPal

Bien, ahora tenemos que crear una función en nuestro controlador desde la cual iniciaremos la compra. Llamaremos a esta función comprar.
A esta función la acompañaremos con otra que será la que tenga los datos de la compra y la llamaremos paypal_params.

application/controllers/nombre_de_tu_controlador.php

public function comprar() {
    $this->load->library('merchant');
    $this->load->library('lgeneral');
    $this->merchant->load('paypal_express');
    $settings = $this->merchant->default_settings();
    $settings = $this->lgeneral->paypal_settings();
    $this->merchant->initialize($settings);
    $params = $this->paypal_params();
    $response = $this->merchant->purchase($params);
}

private function paypal_params() {
    $this->load->helper('url');
    $params = array(
        'amount' => 10.54, //El importe total de la compra
        'currency' => 'EUR',
        'return_url' => site_url() . ' nombre_de_tu_controlador /correcto', //Si la compra es un éxito nos derivará a esta página
        'description' => 'Compra de artículos de prueba', //La descripción del producto
        'cancel_url' => site_url() . 'nombre_de_tu_controlador /incorrecto'); //Si la compra falla nos derivará a esta página
}

Los datos que debemos introducir son los que se encuentran en color naranja en la función paypal_params:

Amount: el importe total de la compra
Description: La descripción del producto
Return_url: La página donde nos derivará si el proceso de pago es correcto
Cancel_url: La página donde nos derivará si el proceso de paga falla o se cancela

5) Finalización de la compra y generación del pedido

Como hemos expuesto en el punto anterior, una vez que el proceso de compra haya resultado correcto PayPal nos remitirá a la return_url que le hayamos indicado. En nuestro caso le hemos dicho que nos remita a la función correcto. Esta función es donde se genera el pedido y se finaliza la compra.

application/controllers/nombre_de_tu_controlador.php

public function correcto() {
    $this->load->library('merchant');
    $this->load->library('lgeneral');

    $this->merchant->load('paypal_express');
    $settings = $this->lgeneral->paypal_settings();
    $this->merchant->initialize($settings);
    $params = $this->paypal_params();
    $response = $this->merchant->purchase_return($params);
    if ($response->success()) {
        $paypal = $response->reference();

        //Aquí generaremos el pedido
    } else {
        $this->incorrecto();
    }
}

A tener en cuenta que la variable paypal nos devolverá el código que ha asignado Paypal a la compra. Es preferible grabar este código con el pedido que generemos , obviamente.

6) Cancelación o fallo en el proceso de compra

Por último tenemos que hacer una función por si falla o se cancela el proceso de compra. A esta función le llamaremos incorrecto y allí pondréis el mensaje que creáis conveniente.

application/controllers/nombre_de_tu_controlador.php

public function incorrecto(){
    echo "Lo sentimos mucho, el proceso de compra ha fallado";
}

Si te gusta este artículo compártelo en las redes sociales

Comentarios

Sergio

06/06/2016 - 20:33:46

2 respuestas

He seguido todo, incluso tuve un poco de jaleo con una función lang(), pero llega a una parte que le deberia de llegar un array y no le llega nada (NULL), asi que no vale para nada todo esto

David

16/10/2015 - 10:17:59

Responder

Genial!!!. Muchas gracias me ha servido mucho.
Publicar un comentario

Introduzca un comentario

Nombre:
Comentario:
Introduce los números
de la imagen de arriba
Introducir

Si te gusta o te es útil esta página puedes hacer una donación para permitir su mantenimiento