Getnet DocsGetnet Docs

Slim Pack: Integración C

La integración de Get Central en un entorno .NET se realiza a través de Platform Invocation Services (P/Invoke), lo que permite que el código C# administrado llame a la biblioteca nativa de Get Central. Esta guía explica cómo configurar tu proyecto, declarar las funciones nativas y ejecutar una operación de pago básica utilizando el modelo de integración Slim Pack.

Esta guía se aplica a Slim Pack.

Requisitos

Antes de comenzar, asegúrate de tener:

  • dllTpvpcLatente.dll disponible en tiempo de ejecución
  • Todas las dependencias nativas requeridas presentes en el mismo directorio
  • Visual Studio u otro IDE compatible con .NET
  • Plataforma de Destino del proyecto establecida en x86 (la biblioteca es de 32 bits)

Si no se compila o ejecuta en modo x86, se producirá una BadImageFormatException.

Proceso de integración C-Sharp

El proceso de integración consiste en mapear las funciones de la biblioteca nativa e invocarlas desde el código administrado. No se envía XML como solicitud; los parámetros se pasan posicionalmente, y el XML se devuelve como respuesta.

Paso 1: Declarar funciones nativas

Las funciones nativas se declaran utilizando el atributo DllImport. La biblioteca expone un conjunto fijo de puntos de entrada que deben mapearse exactamente.

Inicialización de la Biblioteca

Las siguientes funciones se utilizan para inicializar la biblioteca:

ParámetroTipoDescripción
cComerciostringNúmero de comercio. Este dato es facilitado por la entidad.
cTerminalstringNúmero de terminal. Este dato es facilitado por la entidad.
cClaveFirmastringClave de firma del comercio. Este dato es facilitado por la entidad.
cConfPuertostringConfiguración de puerto. Déjalo en blanco para usar la configuración local.
cVersionstringVersión del protocolo: 5.1, 6.1 u 8.1. Déjalo en blanco para usar la configurada.
[DllImport("dllTpvpcLatente.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern int fnDllIniTpvpcLatente(
    string cComercio,
    string cTerminal,
    string cClaveFirma,
    string cConfPuerto,
    string cVersion
);

Ejecución de Pago

Las siguientes funciones se utilizan para ejecutar una operación de pago:

ParámetroTipoDescripción
cImportestringImporte de la transacción en formato XXXXXXXXX.XX.
cFacturastringReferencia de compra. Este valor lo puede especificar el comercio.
cTipoOperstringTipo de operación. Para pagos estándar, use PAGO.
cXMLRespStringBuilderBuffer que recibe la respuesta XML.
iTamMaxRespintTamaño máximo del buffer de respuesta.
[DllImport("dllTpvpcLatente.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public static extern int fnDllOperPinPad(
    string cImporte,
    string cFactura,
    string cTipoOper,
    StringBuilder cXMLResp,
    int iTamMaxResp
);

Finalización de la Biblioteca

Las siguientes funciones se utilizan para finalizar la biblioteca:

ParámetroTipoDescripción
——Esta función no recibe parámetros.
[DllImport("dllTpvpcLatente.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int fnDllParaTpvpcLatente();

Paso 2: Inicializar la biblioteca

Antes de ejecutar cualquier transacción, la biblioteca debe inicializarse una vez por ciclo de vida de la aplicación.

int result = fnDllIniTpvpcLatente(
    "99999999",
    "00000001",
    "CLAVE123456",
    "",
    ""
);

if (result != 0)
{
    // Initialization failed. Do not proceed.
}

Un valor de retorno de 0 indica una inicialización exitosa.

Paso 3: Ejecutar una operación de pago

Una vez inicializada, se puede ejecutar un pago estándar con tarjeta presente utilizando cTipoOper = "PAGO".

StringBuilder xmlResponse = new StringBuilder(8192);

int result = fnDllOperPinPad(
    "1.00",
    "TEST0001",
    "PAGO",
    xmlResponse,
    xmlResponse.Capacity
);

Cuando la función devuelve el control, el buffer de respuesta XML se rellena con el resultado de la transacción.

Paso 4: Procesar la respuesta

El valor de retorno entero indica solo el estado de la ejecución técnica. El resultado financiero debe determinarse analizando la respuesta XML.

Una transacción se autoriza solo si la respuesta contiene:

<estado>F</estado>
<resultado>Autorizada</resultado>

Cualquier otra combinación debe tratarse como una transacción denegada.

Paso 5: Finalizar la biblioteca

Cuando la aplicación ya no necesite realizar operaciones, la biblioteca debe finalizarse para liberar los recursos del sistema.

fnDllParaTpvpcLatente();

Próximos pasos

Después de completar la integración en C#, puede continuar con implementaciones adicionales: