IRONSOFTWAREHOME
VIDEOS

Transición de Código de barras4NETa IronBarcode

Curtis Chau
Curtis Chau
Updated: 3 de mayo de 2026

Esta guía de migración explica cómo eliminar una dependencia de Código de barras4NETy reemplazarla por IronBarcode, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores .NET que realicen esta transición. Código de barras4NETllegó al final de su ciclo de vida sin un anuncio formal: se dejaron de vender nuevas licencias, nunca se publicó ningún paquete NuGet y la biblioteca se ejecuta exclusivamente en .NET Framework. Esta guía es práctica y específica: abarca cómo eliminar la referencia a la DLL, instalar IronBarcode a través de NuGet y convertir el código de generación. También abarca las funciones de lectura y de PDF que estarán disponibles después de la migración, las cuales no estaban disponibles en absoluto a través de Barcode4NET.

¿Por qué migrar desde Barcode4NET?

Los equipos que migran desde Código de barras4NETinforman de estos desencadenantes constantes:

No hay nuevas licencias disponibles: Las licencias de Código de barras4NETya no se venden a través de ComponentSource ni de ningún otro canal. Si un desarrollador se une a un equipo que utiliza Barcode4NET, no existe ningún mecanismo para comprarle una licencia. Un contratista que se incorpore al proyecto o un segundo desarrollador que necesite trabajar en las funciones de código de barras no puede obtener una licencia legal bajo los términos del producto original.

No hay paquete NuGet : Esto no es un inconveniente menor, sino una incompatibilidad fundamental con los flujos de trabajo modernos de .NET . Todo desarrollador que clone el repositorio debe saber dónde se encuentra la DLL. Las canalizaciones de CI/CD deben configurarse manualmente para localizarlo. El comando dotnet restore no hace nada para resolverlo. La DLL se integra en el control de versiones o se mantiene en un repositorio de artefactos privado, lo que requiere un mantenimiento manual continuo en ambos casos.

Sin compatibilidad con .NET 5, 6, 7, 8 o 9: Código de barras4NETestá dirigido exclusivamente a .NET Framework . Cuando una organización actualiza su framework objetivo a net8.0, la compilación falla porque la biblioteca se compiló contra ensamblados de .NET Framework que ya no se referencian. No habrá ningún parche. Si el equipo necesita migrar a .NET moderno por motivos de rendimiento, para la implementación en Linux o Docker, o para obtener soporte a largo plazo de Microsoft, Código de barras4NETsupone un obstáculo insalvable.

Sin parches de seguridad: La biblioteca se encuentra congelada en el estado en que estaba cuando se detuvo su desarrollo. Cualquier problema de seguridad descubierto desde entonces permanece sin resolverse. No hay un sistema de seguimiento de incidencias, ni un responsable de mantenimiento con quien contactar, ni un proceso de respuesta del proveedor.

Sin correcciones de errores: si aparece un problema de representación con una variante de simbología en particular o un caso límite en las dimensiones del código de barras, no hay una solución. La biblioteca no se actualizará.

El problema fundamental

El momento más común para descubrir un problema es cuando un desarrollador actualiza el marco de trabajo de destino durante un proyecto de modernización de .NET . La compilación falla porque la DLL de Código de barras4NETse compiló con ensamblados de .NET Framework que ya no están disponibles en la nueva plataforma de destino. El problema no reside en la API de generación en sí, sino en la dependencia subyacente que impide el avance.

// Código de barras4NET— locked to .NET Framework, no NuGet package
// Requires manual DLL reference in every .csproj:
// <Reference Include="Barcode4NET">
//   <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
// </Reference>
using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.Code128;
barcode.Data = "ITEM-12345";
barcode.Width = 300;
barcode.Height = 100;
Bitmap barcodeImage = barcode.GenerateBarcode();
barcodeImage.Save(outputPath, ImageFormat.Png);
C#
// IronBarcode — NuGet package, .NET Framework 4.6.2 through .NET 9
// dotnet add package IronBarcode
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .SaveAsPng(outputPath);

IronBarcode vs Barcode4NET: Comparación de características

CaracterísticaCódigo de barras4NETIronBarcode
Paquete NuGetNo — solo DLL manualSí (IronBarcode)
Compatibilidad con .NET FrameworkSí (solo para .NET Framework )Sí (.NET Framework 4.6.2+)
Compatibilidad con .NET Core / .NET 5+NoSí (.NET 5, 6, 7, 8, 9)
Compatibilidad con Linux/macOSNo
Soporte para DockerNo
Azure / AWS LambdaNo
Generación de códigos de barras
Lectura/escaneo de códigos de barrasNoSí (BarcodeReader.Read())
Lectura de códigos de barras PDFNoSí (nativo, sin biblioteca adicional)
Código QR con logotipoNoSí (AddBrandLogo())
API fluida y encadenableNo
Mantenimiento activoNo (fin de vida útil)
Nuevas licencias disponiblesNoSí — Lite $999, Plus $1,499, Pro $2,999, Unlimited $4,799
parches de seguridadNo
Integración de la canalización CI/CDPasos para copiar manualmente una DLLEstándar dotnet restore

Inicio rápido: Migración de Código de barras4NETa IronBarcode

La migración puede comenzar inmediatamente con estos pasos básicos.

Paso 1: Sustituir el paquete NuGet

Barcode4NET nunca se distribuyó como un paquete NuGet, por lo que no hay comando dotnet remove package. Retíralo manualmente.

Elimine la DLL del control de versiones y prepare la eliminación:

git rm -r ThirdParty/Barcode4NET/
SHELL

Elimina el elemento <Reference> de cada archivo .csproj. Busca en toda la solución para encontrar cada archivo que necesite una actualización:

grep -rl "Barcode4NET" --include="*.csproj" .
SHELL

Elimina este elemento de cada archivo .csproj que lo contenga:

<Reference Include="Barcode4NET">
  <HintPath>..\ThirdParty\Barcode4NET\Barcode4NET.dll</HintPath>
</Reference>
XML

Luego instala IronBarcode:

dotnet add package IronBarcode
SHELL

Ese único comando añade IronBarcode y resuelve todas las dependencias. Sin gestión de DLL, sin almacenamiento de artefactos, sin pasos de copia manual.

Paso 2: Actualizar los espacios de nombres

Reemplaza la antigua directiva using en la parte superior de cada archivo que usaba Barcode4NET:

// Before
using Barcode4NET;

// After
using IronBarCode;

Paso 3: Inicializar licencia

Agrega la inicialización de licencia al inicio de la aplicación — en Program.cs, Startup.cs, o donde sea que tu aplicación inicie:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Ejemplos de migración de código

Generación básica de etiquetas

El patrón más común de Barcode4NET: crea un objeto, establece propiedades, llama a GenerateBarcode() para recibir un Bitmap, luego guárdalo.

Enfoque de Barcode4NET:

using Barcode4NET;
using System.Drawing;
using System.Drawing.Imaging;

public void SaveLabel(string sku, string outputPath)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = sku;
    barcode.Width = 400;
    barcode.Height = 120;
    Bitmap barcodeImage = barcode.GenerateBarcode();
    barcodeImage.Save(outputPath, ImageFormat.Png);
}

Enfoque de IronBarcode :

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public void SaveLabel(string sku, string outputPath)
{
    BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .SaveAsPng(outputPath);
}

El bloque de configuración de propiedades se reduce a una única cadena fluida. La llamada .ResizeTo() reemplaza las asignaciones de propiedades Width y Height. .SaveAsPng() reemplaza tanto GenerateBarcode() como la llamada barcodeImage.Save() separada. Para conocer opciones de generación adicionales, consulte la documentación de generación de códigos de barras de IronBarcode .

Visualización de PictureBox en WinForms

Si tu código de Código de barras4NETasigna directamente el valor de retorno Bitmap a un control PictureBox o similar, cargarás una matriz de bytes a través de un MemoryStream en su lugar.

Enfoque de Barcode4NET:

using Barcode4NET;
using System.Drawing;

private void RefreshBarcodeDisplay(string data)
{
    var barcode = new Barcode4NET.Barcode();
    barcode.Symbology = Symbology.Code128;
    barcode.Data = data;
    barcode.Width = 300;
    barcode.Height = 100;
    pictureBox1.Image = barcode.GenerateBarcode();
}

Enfoque de IronBarcode :

using IronBarCode;
using System.Drawing;
using System.IO;

private void RefreshBarcodeDisplay(string data)
{
    byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .ToPngBinaryData();

    using var stream = new MemoryStream(pngBytes);
    pictureBox1.Image = Image.FromStream(stream);
}

El paso MemoryStream es la única adición estructural. Todo lo demás es una traducción directa del patrón de asignación de propiedades a la cadena fluida.

Generación de códigos QR

Enfoque de Barcode4NET:

using Barcode4NET;

var barcode = new Barcode4NET.Barcode();
barcode.Symbology = Symbology.QRCode;
barcode.Data = "https://example.com/product/99";
barcode.Width = 300;
barcode.Height = 300;
Bitmap qrImage = barcode.GenerateBarcode();
qrImage.Save("qr.png", System.Drawing.Imaging.ImageFormat.Png);

Enfoque de IronBarcode :

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com/product/99", 300)
    .SaveAsPng("qr.png");

IronBarcode usa una clase QRCodeWriter dedicada para códigos QR, lo que da acceso a opciones específicas de QR, como el nivel de corrección de errores y la incrustación de logotipos de marca. El segundo parámetro de QRCodeWriter.CreateQrCode() es el tamaño de píxel de la imagen cuadrada.

Agregar lectura de códigos de barras

Barcode4NET no tenía una API de lectura. Si su aplicación procesa documentos escaneados, verifica códigos de barras generados o extrae datos de facturas en formato PDF, esta funcionalidad estará disponible inmediatamente después de la migración sin necesidad de añadir una segunda biblioteca.

Enfoque de Barcode4NET:

// No reading API available in Barcode4NET.
// Required a separate library (e.g., ZXing.Net) to decode barcodes.

Enfoque de IronBarcode :

using IronBarCode;

// Read a barcode from an image file
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Symbology: {result.Format}");
}

// Read all barcodes from a PDF — pages are handled automatically
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

Para leer archivos PDF no se necesita ninguna biblioteca adicional. BarcodeReader.Read() maneja entradas de imagen y PDF de forma nativa. Consulte la documentación de lectura de códigos de barras para conocer las opciones de configuración, incluida la velocidad de lectura y la detección de múltiples códigos de barras.

Actualización del marco de destino

Una vez que se elimina Barcode4NET, la restricción de .NET Framework desaparece con él. Actualiza el elemento TargetFramework en tu .csproj:

Enfoque de Barcode4NET:

<!-- Locked to .NET Framework to support Código de barras4NET-->
<PropertyGroup>
  <TargetFramework>net472</TargetFramework>
</PropertyGroup>
XML

Enfoque de IronBarcode :

<!-- Upgrade freely — IronBarcode supports net8.0 and later -->
<PropertyGroup>
  <TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
XML

IronBarcode es compatible con .NET Framework desde la .NET hasta la 9, por lo que el framework de destino se puede actualizar a la versión que su organización prefiera sin ninguna restricción en cuanto a la biblioteca de códigos de barras.

Controlador ASP.NET Core : Devolución de código de barras como respuesta de imagen.

Si al mismo tiempo está modernizando una aplicación Web Forms, aquí tiene el patrón de ASP.NET Core para devolver una imagen de código de barras desde una acción del controlador:

Enfoque de Barcode4NET:

// Código de barras4NETwas not compatible with ASP.NET Core.
// Web Forms HttpHandler was required for image delivery.
C#

Enfoque de IronBarcode :

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/barcodes")]
public class BarcodesController : ControllerBase
{
    [HttpGet("{data}")]
    public IActionResult Get(string data)
    {
        byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
            .ResizeTo(400, 120)
            .ToPngBinaryData();

        return File(pngBytes, "image/png");
    }
}

.ToPngBinaryData() devuelve un byte[] directamente, que se acopla al resultado File() sin ninguna conversión intermedia.

Referencia de mapeo de la API de Código de barras4NETa IronBarcode

Código de barras4NETIronBarcode
new Barcode4NET.Barcode()BarcodeWriter.CreateBarcode(data, encoding)
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code128 (parámetro para CreateBarcode)
barcode.Data = "ITEM-12345"Primer parámetro de CreateBarcode()
barcode.Width = 300; código de barras.Altura = 100.ResizeTo(300, 100)
barcode.GenerateBarcode() devuelve Bitmap.SaveAsPng(path) / .ToPngBinaryData()
Symbology.QRCodeBarcodeEncoding.QRCode
Symbology.Code39BarcodeEncoding.Code39
Symbology.EAN13BarcodeEncoding.EAN13
Symbology.UPCABarcodeEncoding.UPCA
<Reference Include="Barcode4NET"><PackageReference Include="IronBarcode" />
.NET Framework only.NET Framework 4.6.2 through .NET 9
Sólo generaciónGeneración + lectura (BarcodeReader.Read())
Sin soporte para PDFBarcodeReader.Read("doc.pdf") nativo

Problemas comunes de migración y soluciones

Problema 1: No dotnet remove package para referencias de DLL

Barcode4NET: Dado que Código de barras4NETnunca fue un paquete NuGet , no existe ningún comando del administrador de paquetes para eliminarlo. El elemento <Reference Include="Barcode4NET"> debe ser eliminado manualmente de cada archivo .csproj, y el directorio de DLL debe ser eliminado del control de versiones explícitamente.

Solución: Realice una búsqueda para localizar todos los archivos del proyecto que hacen referencia a la DLL y, a continuación, elimine los elementos manualmente:

grep -rn "Barcode4NET" --include="*.csproj" .
SHELL

No deje la referencia a la DLL junto con la nueva referencia a NuGet ; hacerlo provoca errores de compilación debido a una resolución de tipos ambigua.

Problema 2: Cambio del tipo de retorno de mapa de bits a matriz de bytes

Barcode4NET: GenerateBarcode() returns System.Drawing.Bitmap. El código que asigna el valor de retorno a una variable de tipo Bitmap o lo pasa a cualquier método que espera un Bitmap — como un PictureBox — debe ser actualizado.

Solución: Reemplaza las asignaciones .GenerateBarcode() con .ToPngBinaryData() y carga el arreglo de bytes a través de un MemoryStream en el sitio de la llamada:

byte[] pngBytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .ToPngBinaryData();

using var stream = new MemoryStream(pngBytes);
pictureBox1.Image = Image.FromStream(stream);

Buscar .GenerateBarcode() en toda la solución localizará todos los sitios de llamada que necesitan actualización.

Problema 3: Cambio de espacio de nombres de enumeración de simbología

Barcode4NET: Usa Symbology.Code128, Symbology.QRCode, Symbology.Code39, y valores similares del espacio de nombres Barcode4NET.

Solución: Reemplaza con valores de enumeración BarcodeEncoding. Se conservan todos los nombres comunes; solo cambia el nombre del tipo:

// Before
barcode.Symbology = Symbology.Code128;

// After
BarcodeEncoding.Code128  // passed as parameter to CreateBarcode()

Un reemplazo de búsqueda y reemplazo en toda la solución de Symbology. con BarcodeEncoding. cubre la mayoría de los casos. Revise cada reemplazo para confirmar el contexto.

Problema 4: El ancho y la altura ahora son un método, no propiedades.

Barcode4NET: El tamaño se configuró como dos asignaciones de propiedades separadas: barcode.Width = 300; código de barras.Altura = 100;`

Solución: Usa el método encadenado .ResizeTo(width, height). Esto es lo suficientemente sintácticamente diferente como para que una simple búsqueda y reemplazo no lo detecte — busca .Width = y .Height = en el código relacionado con códigos de barras y actualiza cada ocurrencia:

// Before
barcode.Width = 300;
barcode.Height = 100;

// After — chained on the CreateBarcode call
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .SaveAsPng(outputPath);

Lista de verificación de migración de Barcode4NET

Tareas previas a la migración

Ejecute estas búsquedas en su solución antes de comenzar. Proporcionan una imagen precisa del alcance de la migración:

# Find all Código de barras4NETusages in source files
grep -rn "Barcode4NET" --include="*.cs" .

# Find the using directive
grep -rn "using Barcode4NET" --include="*.cs" .

# Find object creation
grep -rn "new Barcode4NET.Barcode()" --include="*.cs" .

# Find Symbology enum usage
grep -rn "Symbology\." --include="*.cs" .

# Find GenerateBarcode calls
grep -rn "\.GenerateBarcode()" --include="*.cs" .

# Find the DLL reference in project files
grep -rn "Barcode4NET" --include="*.csproj" .

# Find DLL references in build scripts
grep -rn "Barcode4NET" --include="*.yml" .
grep -rn "Barcode4NET" --include="*.yaml" .
grep -rn "ThirdParty/Barcode4NET" .
SHELL

Anote la cantidad de archivos para cada patrón. Documente el código de dibujo basado en coordenadas, los patrones de uso de fuentes y cualquier paso del script de compilación que copie la DLL.

Tareas de actualización de código

  1. Elimina ThirdParty/Barcode4NET/ del control de versiones (git rm -r)
  2. Elimina <Reference Include="Barcode4NET"> de todos los archivos .csproj
  3. Elimine los pasos de copia manual de DLL de los scripts de compilación y los archivos de canalización de CI/CD.
  4. Ejecuta dotnet add package IronBarcode para cada proyecto en la solución
  5. Agrega IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; al inicio de la aplicación
  6. Reemplaza using Barcode4NET; con using IronBarCode; en todos los archivos .cs
  7. Reemplaza bloques de new Barcode4NET.Barcode() con llamadas BarcodeWriter.CreateBarcode()
  8. Reemplaza Symbology.X con BarcodeEncoding.X en todo
  9. Reemplazar barcode.Width = N; barcode.Height = M; with .ResizeTo(N, M)
  10. Reemplaza asignaciones .GenerateBarcode() con .SaveAsPng() o .ToPngBinaryData()
  11. Actualiza asignaciones de control de imagen PictureBox u otro para usar el patrón MemoryStream
  12. Actualiza TargetFramework en archivos .csproj si se actualiza desde net4xx
  13. Ejecuta la compilación completa y corrige cualquier error de compilación restante.

Pruebas posteriores a la migración

  • Compare la salida del código de barras visual con muestras conocidas que funcionan correctamente para confirmar su apariencia.
  • Verifique que el hardware del escáner de códigos de barras pueda leer los códigos de barras generados a partir de todas las simbologías afectadas.
  • Prueba que los valores BarcodeEncoding coincidan con la salida esperada para Code128, Code39, EAN-13, UPC-A y QR Code
  • Verifica que el patrón MemoryStream se muestre correctamente en controles de WinForms donde aplique
  • Confirma que el pipeline CI/CD se completa exitosamente usando solo dotnet restore sin pasos manuales de DLL
  • Prueba la funcionalidad de lectura de código de barras si BarcodeReader.Read() se agregó como parte de la migración

Principales ventajas de migrar a IronBarcode

Se ha restablecido la capacidad de otorgar licencias a nuevos miembros del equipo: IronBarcode es un producto comercial activo con licencias perpetuas disponibles a precios definidos. Los nuevos desarrolladores, contratistas y miembros del equipo pueden obtener la licencia de inmediato. Deja de existir la situación en la que un desarrollador se incorpora a la empresa y no puede trabajar legalmente en código relacionado con códigos de barras.

Gestión estándar de dependencias de NuGet: Después de la migración, dotnet restore maneja todo. Los desarrolladores novatos clonan el repositorio, restauran los paquetes y compilan sin tener ningún conocimiento sobre la ubicación de las DLL, los almacenes de artefactos o los procedimientos de copia manual. Se elimina la fricción que la distribución de DLL de Código de barras4NETgeneraba en cada canalización de CI/CD y flujo de trabajo de incorporación.

Libertad total en cuanto a versiones de .NET : Eliminar la restricción de Código de barras4NETdesbloquea los proyectos de modernización de .NET . El marco de destino se puede actualizar a .NET 8, .NET 9 o versiones futuras sin ninguna limitación en la biblioteca de códigos de barras. La implementación en Linux, la contenerización con Docker y los entornos de ejecución sin servidor en la nube estarán disponibles.

Lectura de código de barras sin una segunda biblioteca: BarcodeReader.Read() decodifica códigos de barras desde imágenes y PDFs de forma nativa. Los equipos que anteriormente combinaban Código de barras4NETpara la generación con ZXing .NET u otra biblioteca para la lectura, ahora pueden consolidarse en una única dependencia mantenida. La lectura de códigos de barras PDF no requiere ninguna biblioteca PDF adicional.

Postura de seguridad y cumplimiento: IronBarcode recibe parches de seguridad periódicos y se realiza un seguimiento comparándolos con las bases de datos CVE actuales. Las auditorías de la lista de materiales del software ya no mostrarán a Código de barras4NETcomo una dependencia comercial obsoleta sin un proceso de respuesta del proveedor. El problema de remediación que Código de barras4NETdetecta en las auditorías de seguridad se resuelve tan pronto como finaliza la migración.

Ritmo de desarrollo activo: IronBarcode publica actualizaciones periódicas que coinciden con las nuevas versiones de .NET . Las actualizaciones de compatibilidad para futuras versiones de .NET se entregan a través del paquete, por lo que la biblioteca no se congelará en el estado en que estaba cuando un proveedor se quedó sin actividad.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta