bFiskur puede decirte cuales son las diferencias entre lo que tiene el SAT y tus sistemas. Para poder determinar las diferencias es necesario que cargues la información existente en tus sistemas de tus comprobantes fiscales, como por ejemplo la lista de facturas emitidas a bFiskur, al tener nosotros esta información podremos decirte de inmediato cuales son dichas diferencias.


Para mejorar la eficiencia y la actualización de tu información contable, te proponemos conectar tu sistema ERP a bFiskur a través de un Web Service. Esta solución te permitirá que bFiskur obtenga datos de tus comprobantes fiscales de manera más rápida y automatizada y aunque existen otros métodos de interconexión este método es el preferido por su sencillez y eficiencia.


Conectando tu ERP a bFiskur mediante un Web Service podrás:

  • Actualizar tus datos: Disfruta de información siempre actualizada.
  • Automatizar la carga de información: Simplifica tus operaciones y reduce el margen de error.
  • Aumentar la eficiencia: Dedica menos tiempo a tareas repetitivas y concéntrate en lo que realmente importa.
  • Tienes el control. Tu determinas que información es la que se hará llegar a bFiskur y la frecuencia de sincronización.

¿Cómo funciona?    

  1. bFiskur te envía una solicitud: A través de un token seguro (JWT), bFiskur te pedirá los datos que necesita.
  2. Tu sistema responde: Tu Web Service buscará la información en tu ERP y la enviará a bFiskur en un formato estándar (CSV).
  3. bFiskur procesa la información: Los datos recibidos serán procesados y almacenados de manera segura en nuestra plataforma.

Para crear el Web Service necesitarás

  • Recibir y entender los tokens JWT: Utilizaremos un algoritmo específico (HS256) y una clave secreta que te proporcionaremos.
  • Consultar tu base de datos: Debes diseñar una consulta para obtener los datos solicitados por bFiskur.
  • Generar un archivo CSV: Los datos deben estar organizados en un formato específico que te proporcionaremos.


¿Cómo configurar la integración?

  1. Crea el Web Service: Desarrolla el servicio siguiendo las especificaciones técnicas que te hemos proporcionado.
  2. Configura bFiskur: Ingresa la dirección de tu Web Service y la clave secreta en tu panel de control de bFiskur.


¿Por qué elegir esta opción? 

  • Mayor seguridad: Utilizamos tokens JWT para garantizar la confidencialidad de tus datos.
  • Flexibilidad: Puedes personalizar la integración para adaptarla a tus necesidades específicas.
  • Soporte técnico: Nuestro equipo te brindará todo el apoyo necesario durante el proceso de implementación.


La implementación de este servicio facilitará la obtención de datos de comprobantes fiscales de manera más dinámica y a demanda.


Especificaciones Técnicas


1. Recepción y desencriptación del token: El Web Service debe ser capaz de recibir un token JWT enviado por bFiskur®︎  mediante una solicitud POST. La desencriptación del token se realizará utilizando el algoritmo HS256 y una palabra clave predefinida por ti. La información a extraer incluirá el RFC, la fecha inicial y final, así como otros datos relevantes (ID, tiempo de expiración, etc.). 


2. Estructura del token: El token JWT tendrá la siguiente estructura, considerando las claves del arreglo:

3. Consulta a la base de datos del ERP: Utilizando los datos obtenidos del token, el Web Service deberá generar una consulta a la base de datos del ERP para recuperar la información correspondiente al tipo de documento solicitado (emitidos, recibido, pago clientes, pago proveedores o nómina)


4. Generación de archivo CSV: La información recuperada de la base de datos se organizará en un archivo CSV, utilizando el carácter "|" como separador. Las cabeceras del archivo CSV deberán seguir un nombre y orden específico, conforme a los siguientes layouts:

Las cabeceras y el orden de las columnas en el archivo CSV deben ajustarse a estas especificaciones.  


 5. Entrega del archivo CSV: El Web Service deberá devolver como respuesta un archivo CSV que contendrá los datos solicitados. Este archivo será utilizado por bFiskur®︎ para su posterior carga en nuestra base de datos.


Configurando el llamado del Web Service en bFiskur

Una vez que hayas hecho el desarrollo, deberás configurar el llamado al Web Service desarrollado por ti en la aplicación de bFiskur. Para hacer esto dirígete a la configuración de empresas, edita la empresa para cual quieres añadir el llamado del web service. En el panel de configuración de tu empresa o RFC en la plataforma, deberás ingresar los enlaces del Web Service y definir la clave secreta que será utilizada para encriptar los tokens JWT. Esta clave será necesaria para el proceso de decodificación de la información enviada desde bFiskur®︎.  


Deberás llenar los siguientes campos


 

  • Dias a cargar. Es la cantidad de días de información que bFiskur le solicitará de manera automática a tu web service. Este parámetro sirve como parámetro para calcular la fecha de inicio y final que se le enviará como parámetro a tu web service. Tu web service deberá tomar en cuenta estos campos fecha para extraer información.
  • Clave para Token. Tu palabra secreta a usar como token en el llamado al web service.
  • Portal Pagos Proveedores. Es la dirección URL de tu Web Service a llamar para obtener datos de pagos proveedores. Este deberá devolver los datos de acuerdo al layout de pagos proveedores, ya sea ERP o contabilidad 
  • Portal Nomina. Es la dirección URL de tu Web Service a llamar para obtener datos de Nómina. Este deberá devolver los datos de acuerdo al layout de nomina, ya sea ERP o contabilidad 
  • Portal Pagos Clientes. Es la dirección URL de tu Web Service a llamar para obtener datos de pagos clientes. Este deberá devolver los datos de acuerdo al layout de pagos clientes, ya sea ERP o contabilidad 
  • Portal Recibidos. Es la dirección URL de tu Web Service a llamar para obtener datos de CFDIs Recibido. Este deberá devolver los datos de acuerdo al layout de CFDI recibidos, ya sea ERP o contabilidad. 
  • Portal Emitidos. Es la dirección URL de tu Web Service a llamar para obtener datos de CFDI Emitidos. Este deberá devolver los datos de acuerdo al layout de CFDI emitidos, ya sea ERP o contabilidad. 

 

Ejemplos de código


A continuación, se proporcionan ejemplos de código en PHP para cada punto mencionado en las especificaciones:


Recepción y desencriptación del token:

 

<?php
// Se recibe el token JWT enviado por el sistema
$token = file_get_contents('php://input');

// Palabra clave para desencriptar el token
$clave_secreta = 'tu_clave_secreta';

// Desencriptación del token usando la librería Firebase JWT

require 'vendor/autoload.php';
use Firebase\JWT\JWT;

try {
    $decoded = JWT::decode($token, new Key($clave_secreta, 'HS256'));
    $rfc = $decoded->data->rfc;
    $fecha_ini = $decoded->data->fechaIni;
    $fecha_fin = $decoded->data->fechaFin;
    // Aquí puedes utilizar $rfc, $fecha_ini, $fecha_fin y otros datos según tus necesidades
} catch (Exception $e) {
    echo 'Error: ', $e->getMessage();
}
?>


 

Nota: En este ejemplo se hace uso de la librería JWT. Puedes instalarlo en PHP con el siguiente comando: composer require firebase/php-jwt. En este enlace podrás ver lo necesario para instalar la librería según el lenguaje en el que esté programando. https://jwt.io/libraries

 

Estructura del token:

El token JWT a enviar al Web Service deberá tener la siguiente estructura:   

Consulta a la Base de Datos del ERP:

A continuación encontrarás un fragmento de código que te muestra como puedes consultar la base de datos de tu sistema para extraer la información.


try{

$serverName = "SERVER_NAME";
$connectionOptions = array(
  "Database" => "DATABASE_NAME",
  "Uid" => "DATABASE_USER",
  "PWD" => "DATABASE_PASSWORD"
);

// Conexión a la base de datos del ERP
$conn = sqlsrv_connect($serverName, $connectionOptions);
if (!$conn)
  die("Error de conexión. Inténtelo de nuevo".sqlsrv_errors());
}catch(PDOException $ex){
  $conn = null;
  die("Error de conexión. Inténtelo de nuevo ".$ex);
}

$data = [];
$rfc = $token->data->rfc;
$fechaIni = $token->data->fechaIni;
$fechaFin = $token->data->fechaFin;

// Construir y ejecutar la consulta según los datos del token
$sql = "SELECT * FROM TablaCFDI WHERE RFC=? AND Fecha BETWEEN ? AND ?";
$stmt = sqlsrv_prepare($conn, $sql, array($rfc, $fechaIni, $fechaFin));
$flag = sqlsrv_execute($stmt);
if ($flag) {
  while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
    $data[] = $row; // Procesar cada fila de resultados
}


Generación del CSV

Para generar el archivo CSV puedes usar el siguiente código de ejemplo:

    

$headers = [
'RFC Compañía',
'Cliente Key',
'Cliente',
//Resto de campos
//consulta los nombres de los encabezados según corresponda su layout 
];

for ($i=0; $i < count($headers); $i++)
  $headers[$i] = utf8_decode($headers[$i]);

$output = fopen('php://output', 'w');
fwrite($output, implode('|', $headers) . "\n");
for ($i = 0; $i < count($data); $i++)
  fwrite($output, implode('|', $data[$i]) . "\n");
fclose($output);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="archivo.csv"');
Content-Disposition: attachment; filename="archivo.csv"');