PHP code example of cotopaco / laravel-factus-sdk

1. Go to this page and download the library: Download cotopaco/laravel-factus-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

cotopaco / laravel-factus-sdk example snippets


$factus = app(Cotopaco\Factus\Factus::class);
$response = $factus->invoice()->createAndValidate($invoice);
$response->rawData; // Respuesta de factus en un array asociativo.
$response->getCufe(); // Cufe de la factura

use Cotopaco\Factus\DTO\Customer;
use Cotopaco\Factus\DTO\Invoice;
use Cotopaco\Factus\DTO\InvoiceItem;
use Cotopaco\Factus\Factus;

/* Instanciamos Singleton */
$factus = app(Factus::class);

/* Instanciamos un Customer */
$customer = new Customer(
    identificationDocumentId: 3,
    identification: "123456789",
    legalOrganizationId: 1,
    tributeId: 18, 
    dv: 0,
    company: 'Empresa Test',
    tradeName: 'Test Trade',
    names: 'Cliente de Prueba',
    address: 'Calle 123 #45-67',
    email: '[email protected]',
    phone: '3001234567',
    municipalityId: 1
);

/* Instanciamos un item */
$item = new InvoiceItem(
    codeReference: 'PROD-001',
    name: 'Producto de Prueba',
    quantity: 2,
    discountRate: 0.0,
    price: 100000.0,
    taxRate: 19.0,
    unitMeasureId: 70,
    standardCodeId: 1,
    isExclude: 0,
    tributeId: 1
);

/* Instanciamos una factura con el customer y los items */
$invoice = new Invoice(
    items: [$item],
    customer: $customer,
    referenceCode: 'TEST-111',
    sendEmail: false
);

/* Realizamos peticion y obtenemos respuesta */
$response = $factus->invoice()->createAndValidate($invoice);
$response->rawData; // Body de la respuesta de Factus en un array asociativo.
$response->getCufe() // Cufe de la factura
$response->statusCode // Status code de la respuesta


use Cotopaco\Factus\Factus;

/* Instanciamos Singleton */
$factus = app(Factus::class);

$response = $factus->invoice()->list(); // Realizar peticion

$response->getInvoices(); // Data de las facturas

$response->rawData // Obtener body de la respuesta de FACTUS


/* Peticion con filtros */
$params = [
    'page' => 2, // Pagina a solicitar
    'status' => 1, // estado de las facturas
];
$response = $factus->invoice()->list($params);

use Cotopaco\Factus\Factus;

/* Instanciamos Singleton */
$factus = app(Factus::class);

$response = $factus->invoice()->show('ETP990000493'); // Realizamos solicitud
$response->customer // Obtener cliente de la factura
$response->rawData //  Obtener body de la respuesta de FACTUS


use Cotopaco\Factus\Factus;

/* Instanciamos Singleton */
$factus = app(Factus::class);

$response = $factus->invoice()->downloadPdf('ETP990000493'); // Realizamos solicitud
$response->getPdfDownloadResponse(); // Retorna respuesta para descargar el PDF.
/* Otros metodos utiles */
$response->getFileName();
$response->getPdfBase64();
$response->getPdfBinary();


use Cotopaco\Factus\Factus;

/* Instanciamos Singleton */
$factus = app(Factus::class);

$response = $factus->invoice()->delete('ETP990000493'); // Realizamos solicitud
$response->isDeleted(); // Retorna true si es eliminada validando el mensaje recibido de la API.
$response->rawData // Respuesta del body de la API FACTUS.


return [
    'base_url' => env('FACTUS_BASE_URL', 'https://api.factus.com.co'),
    'sandbox_base_url' => env('FACTUS_SANDBOX_BASE_URL', 'https://api-sandbox.factus.com.co'),
    'client' => [
        'id' => env('FACTUS_CLIENT_ID'),
        'secret' => env('FACTUS_CLIENT_SECRET')
    ],
    'username' => env('FACTUS_USERNAME'),
    'password' => env('FACTUS_PASSWORD'),
    'production' => env('FACTUS_PRODUCTION', false)
];
bash
php artisan vendor:publish --tag="laravel-factus-sdk-config"