Reimpresión por Folio para una integración COM

⚠️

Esta funcionalidad actualmente es obligatoria de implementar en su punto de venta, ya que ayudará a ser un mecanismo de defensa ante contingencias que impidan recibir la respuesta y procedan a recuperarla con esta funcionalidad.

🚧

Esta funcionalidad solo está disponible con:

  • .NET Framework.
  • Smart PinPad 2.0 o superior.
  • DLL 1.6.0 en adelante.

Nota: Para Visual Basic 6 o Visual FoxPro esta funcionalidad no está disponible, debido a limitaciones de los lenguajes que solo permiten utilizar la DLL 1.2.0.

La reimpresión por folio tiene 2 finalidades:

  • Imprimir una copia en papel de transacciones aprobadas y transacciones declinadas (excepto reversos), devolviendo además la respuesta en formato JSON como duplicado de la venta original.
  • Utilizarlo como un medio de consulta para recuperar el estatus de transacciones perdidas, ya sean aprobadas, declinadas, canceladas, reversadas o pendientes por reversar.
📘

Esta funcionalidad es similar a la reimpresión por orderId, pero con mayor alcance, ya que no solo permite reimprimir o recuperar transacciones aprobadas, sino también declinadas, canceladas y reversadas.

Requisitos para la reimpresión por folio en 2026

  • Contar con la última versión de la librería, versión 1.6.0: Descargar librería
  • Tener instalada la Smart PinPad Dev 2.6.0.1.p.p para pruebas, o la Smart PinPad 2.6 para producción.
  • Para recuperar la respuesta de una venta por medio del folio, es indispensable haber enviado este campo previamente en la transacción de venta inicial.

Campos utilizados para la reimpresión

Nombre campoDescripciónTipo de dato
folioIdNúmero identificador de transacción que puede ser enviado en la solicitud de venta y que debe ser un valor único interno del sistema punto de venta del comercio. Al enviarlo en la reimpresión puede ayudar a obtener transacciones aprobadas, declinadas, canceladas, reversadas y pendientes por reversar.String (Máximo hasta 250 caracteres)
orderIdIdentificador único de transacción con NetPay. Se genera en una venta exitosa y puede ser utilizado posteriormente en reimpresión de transacciones aprobadas y para la operativa de cancelación de una venta.String (Máximo hasta 250 caracteres)

Envío del folio en la venta original

Para que la reimpresión por folio funcione correctamente, el campo folioId debe enviarse desde la transacción de venta inicial. A continuación se muestra un ejemplo de una venta enviando el folio:

connectorPAX.SetAmount(Convert.ToDouble(textBox1.Text));
if (CAMPOTIP == "")
{
    connectorPAX.SetTip(0.0);
}
else
{
    connectorPAX.SetTip(Convert.ToDouble(textBox5.Text));
}
connectorPAX.SetFolio(textBox2.Text); // Se envía el folio en la venta
connectorPAX.SetMSI(Convert.ToInt32(msiValue));
connectorPAX.setDisablePrintAnimation(checkBox1.Checked);
connectorPAX.sendData(); // Se envía la venta a la terminal
🚧

Es importante tomar en cuenta que la venta previa debió haberse generado con el folio del sistema punto de venta del comercio.

Implementación de reimpresión por folio (sendPrint)

A partir de la versión Smart PinPad 2.0 en adelante y la DLL 1.6.0, es posible consultar una mayor variedad de estatus de una transacción. Contando con estas dos condiciones, se puede ejecutar el método sendPrint(), pasando como parámetro el folio de la venta para consultar el estatus. A continuación se muestra un ejemplo de cómo ejecutar la reimpresión por folio en otro proceso interno del sistema punto de venta del comercio:

private void button2_Click(object sender, EventArgs e)
{
    connectorPAX.SetCustomeCOMM("COM9"); // Para la DLL 1.6.0 es necesario especificar el puerto COM.
    if (folioId.Text != "")
    {
        button2.Enabled = false;
        button3.Enabled = false;
        timer2.Enabled = true;
        timer1.Enabled = true;
        connectorPAX.setDisablePrintAnimation(checkBox1.Checked);
        string result = connectorPAX.sendPrint("", folioId.Text);

        textBox4.Text = result;
    }
}
❗️

Para que la búsqueda por folio se realice correctamente, se recomienda enviar el orderId vacío. Si se envían ambos parámetros con valores al mismo tiempo, el servicio dará prioridad al orderId, lo cual puede impedir recibir la respuesta deseada.

Recibiendo la respuesta de una venta y de una reimpresión.

A continuación se muestra un ejemplo de cómo recibir la respuesta de esta operación, a partir de los métodos ReceiveData() y getResponse():

private void getResponseData()
{
    connectorPAX.ReceiveData();
    if (connectorPAX.getResponse() != null)
    { 
        responseTextbox.Text = JsonConvert.SerializeObject(connectorPAX.getResponse());
        timer1.Enabled = false;
    }
}

El objeto de respuesta se recibe en formato JSON. A continuación se muestra un ejemplo de la respuesta de una venta aprobada que trae su propia respuesta y una reimpresión de esa venta:

{
  "data": {
    "affiliation": "7286147",
    "amount": "159.85",
    "applicationLabel": "null",
    "arqc": "6EAEB1A634241A44",
    "aid": "A0000000041010",
    "authCode": "222222",
    "bankName": "NU MEXICO FINANCIERA",
    "bin": "",
    "cardExpDate": "06/30",
    "cardType": "C",
    "cardNumber": "9453",
    "cardTypeName": "MASTERCARD",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "00",
    "folioNumber": "2-5645-1777567065362",
    "hasPin": false,
    "hexSign": "null",
    "isQPS": 0,
    "isReprint": true,
    "message": "Transaccion Valida",
    "moduleCharge": "292",
    "moduleLote": "2",
    "customerName": "null",
    "terminalId": "2841260371",
    "orderId": "260430103756-2841260371",
    "preAuth": "0",
    "preStatus": 0,
    "promotion": "0",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rePrintMark": "MASTER",
    "reprintModule": "C",
    "rrnNumber": "043010375634",
    "storeId": "9194",
    "storeName": "CICAP",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "ABR. 30, 26 10:38:25",
    "tipAmount": "20.85",
    "tipLessAmount": "139",
    "transDate": "2026-04-30 10:37:56.0",
    "transType": "A",
    "transactionCertificate": "6EAEB1A634241A44",
    "transactionId": "ED4AE88E-C087-F8E6-9FA2-E3495A7674A1",
    "cashbackFee": "0",
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}
{
  "data": {
    "affiliation": "7286147",
    "amount": "159.85",
    "applicationLabel": "null",
    "arqc": "6EAEB1A634241A44",
    "aid": "A0000000041010",
    "authCode": "222222",
    "bankName": "NU MEXICO FINANCIERA",
    "bin": "",
    "cardExpDate": "06/30",
    "cardType": "C",
    "cardNumber": "9453",
    "cardTypeName": "MASTERCARD",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "00",
    "folioNumber": "2-5645-1777567065362",
    "hasPin": false,
    "hexSign": "null",
    "isQPS": 0,
    "isReprint": true,
    "message": "Transaccion Valida",
    "moduleCharge": "292",
    "moduleLote": "2",
    "customerName": "null",
    "terminalId": "2841260371",
    "orderId": "260430103756-2841260371",
    "preAuth": "0",
    "preStatus": 0,
    "promotion": "0",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rePrintMark": "MASTER",
    "reprintModule": "C",
    "rrnNumber": "043010375634",
    "storeId": "9194",
    "storeName": "CICAP",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "ABR. 30, 26 10:38:25",
    "tipAmount": "20.85",
    "tipLessAmount": "139",
    "transDate": "2026-04-30 10:37:56.0",
    "transType": "A",
    "transactionCertificate": "6EAEB1A634241A44",
    "transactionId": "ED4AE88E-C087-F8E6-9FA2-E3495A7674A1",
    "cashbackFee": "0",
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}
📘

Diferencia entre una venta y una reimpresión

El campo isReprint indica si la respuesta corresponde a una venta o a una reimpresión:

  • isReprint: false → La respuesta corresponde al proceso original de una venta. En este caso, reprintModule viene diferente, ya que este campo solo se determina al ejecutar una reimpresión.
  • isReprint: true → La respuesta corresponde a una reimpresión por folio. En este caso, debe validarse el campo reprintModule para conocer el estatus final de la transacción.

Conocer el estatus de una transacción a partir de una reimpresión por folio

Para valorar el estatus de una transacción a partir de la respuesta de una reimpresión por folio, el campo que debe validarse es reprintModule. A continuación se detallan los valores posibles y su significado:

⚠️

Es de vital importancia no basarse únicamente en el campo responseCode para validar el resultado de una reimpresión, ya que al tratarse de una operación de tipo consulta, este campo devolverá un valor genérico que no refleja el estatus real de la transacción.

De igual forma, el campo transType no debe utilizarse como diferenciador en una reimpresión, ya que siempre regresará el valor A, independientemente del estatus real de la transacción. El campo reprintModule es el único campo confiable, ya que indica si la transacción fue aprobada, declinada, cancelada o reversada.

reprintModuleSignificadoCampo messageDescripción
CTransacción aprobadaTransaccion ValidaConfirma que la transacción se encuentra aprobada.
VTransacción canceladaTransaccion ValidaIndica que la transacción fue cancelada exitosamente. El mismo mensaje se usa para ventas aprobadas; para diferenciar ambos casos debe validarse siempre el campo reprintModule.
DTransacción declinadaTransaccion DeclinadaLa transacción fue declinada por una regla de fraude o por el emisor.
RVTransacción reversadaTransacción ReversadaLa transacción fue reversada exitosamente y, por lo tanto, no debe considerarse como exitosa.
PRVTransacción pendiente de reversoTransacción pendiente por reversarTransacción programada para ser reversada en una siguiente transacción.

Excepciones

  • Al utilizar un folioId repetido, la reimpresión mostrará la última transacción realizada con el folio ingresado.
  • Al ingresar un folioId no existente, la terminal mostrará un mensaje de "No se encontraron datos".
  • Al consultar una transacción que presentó error de conexión durante la venta original, la respuesta de la reimpresión por folioId indicará, en el campo message, una transacción pendiente de reverso.

Reimpresión por folio de transacciones aprobadas

A continuación se muestra la respuesta que se obtiene al realizar una reimpresión por folio de una transacción aprobada. El campo reprintModule muestra el valor C:

{
  "data": {
    "affiliation": "7286147",
    "amount": "159.85",
    "applicationLabel": "null",
    "arqc": "6EAEB1A634241A44",
    "aid": "A0000000041010",
    "authCode": "222222",
    "bankName": "NU MEXICO FINANCIERA",
    "bin": "",
    "cardExpDate": "06/30",
    "cardType": "C",
    "cardNumber": "9453",
    "cardTypeName": "MASTERCARD",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "00",
    "folioNumber": "2-5645-1777567065362",
    "hasPin": false,
    "hexSign": "null",
    "isQPS": 0,
    "isReprint": true,
    "message": "Transaccion Valida",
    "moduleCharge": "292",
    "moduleLote": "2",
    "customerName": "null",
    "terminalId": "2841260371",
    "orderId": "260430103756-2841260371",
    "preAuth": "0",
    "preStatus": 0,
    "promotion": "0",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rePrintMark": "MASTER",
    "reprintModule": "C",
    "rrnNumber": "043010375634",
    "storeId": "9194",
    "storeName": "CICAP",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "ABR. 30, 26 10:38:25",
    "tipAmount": "20.85",
    "tipLessAmount": "139",
    "transDate": "2026-04-30 10:37:56.0",
    "transType": "A",
    "transactionCertificate": "6EAEB1A634241A44",
    "transactionId": "ED4AE88E-C087-F8E6-9FA2-E3495A7674A1",
    "cashbackFee": "0",
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}

Reimpresión por folio de cancelaciones

A continuación se muestra la respuesta que se obtiene al realizar una reimpresión por folio de una cancelación exitosa. El campo reprintModule muestra el valor V, que indica que la transacción fue cancelada:

{
  "data": {
    "affiliation": "7286147",
    "amount": "160",
    "applicationLabel": "null",
    "arqc": "8BD396EDEE3C1118",
    "aid": "A0000000041010",
    "authCode": "222222",
    "bankName": "NU MEXICO FINANCIERA",
    "bin": "",
    "cardExpDate": "06/30",
    "cardType": "C",
    "cardNumber": "9453",
    "cardTypeName": "MASTERCARD",
    "cashbackFee": "0",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "00",
    "folioNumber": "2-5631-1777482670950",
    "hexSign": "null",
    "isQPS": 0,
    "isReprint": true,
    "message": "Transaccion Valida",
    "moduleCharge": "269",
    "moduleLote": "2",
    "customerName": "null",
    "terminalId": "2841260371",
    "orderId": "260429111118-2841260371",
    "preAuth": "0",
    "preStatus": 0,
    "promotion": "0",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rePrintMark": "MASTER",
    "reprintModule": "V",
    "rrnNumber": "042911111875",
    "storeId": "9194",
    "storeName": "CICAP",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "ABR. 29, 26 11:11:48",
    "tipAmount": "0",
    "tipLessAmount": "0",
    "transDate": "2026-04-29 11:11:18.0",
    "transType": "A",
    "transactionCertificate": "8BD396EDEE3C1118",
    "transactionId": "4267CF8B-FEA5-F96F-21A0-DDCAFE4E8056",
    "hasPin": false,
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}

Reimpresión por folio de transacciones declinadas

El estatus D en el campo reprintModule de una reimpresión por folio indica que la transacción fue declinada. El campo message también lo confirma.

{
  "data": {
    "affiliation": "7286147",
    "amount": "15600",
    "bankName": "SANTANDER",
    "cardType": "D",
    "cardNumber": "7934",
    "cardTypeName": "MASTERCARD",
    "cityName": "APODACA,NUEVO LEON",
    "responseCode": "05",
    "folioNumber": "transaccion-declinada",
    "isReprint": true,
    "message": "Transaccion Declinada",
    "moduleCharge": "5",
    "moduleLote": "1",
    "terminalId": "2840224321",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rrnNumber": "null",
    "storeId": "550011",
    "streetName": "CHV",
    "ticketDate": "JUL. 07, 26 16:58:37",
    "transType": "A",
    "transactionId": "6217516F-C93C-6D62-9AFD-899610D10A0C",
    "storeName": "Chevron",
    "reprintModule": "D",
    "applicationLabel": "Debit MasterCard",
    "customerName": "DEBITO UNIVERSIDADES     /",
    "preAuth": "0",
    "transDate": "2026-07-07 15:58:40.0",
    "authCode": "null",
    "tipLessAmount": "0",
    "tipAmount": "0",
    "aid": "A0000000041010",
    "arqc": "ACC94719F099DDDC",
    "cardExpDate": "10/23",
    "orderId": "",
    "promotion": "0",
    "rePrintMark": "MASTER",
    "hexSign": "null",
    "transactionCertificate": "ACC94719F099DDDC",
    "preStatus": 0,
    "isQPS": 0,
    "hasPin": false,
    "cashbackFee": "0"
  },
  "idReport": 1,
  "applyCashback": false
}

Reimpresión por folio de transacciones reversadas

El estatus RV en el campo reprintModule de una reimpresión por folio indica que la transacción ha sido reversada. La mayoría de las veces, la terminal realiza el reverso automático siempre y cuando tenga conexión a internet durante la interrupción o corte de comunicación.

{
  "data": {
    "affiliation": "7286147",
    "amount": "115",
    "bankName": "BBVA",
    "bin": "",
    "cardType": "C",
    "cardNumber": "3827",
    "cardTypeName": "VISA",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "05",
    "folioNumber": "2-5650-1781118562363",
    "isReprint": true,
    "message": "Transacción Reversada",
    "moduleCharge": "353",
    "moduleLote": "2",
    "terminalId": "2841260371",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rrnNumber": "null",
    "storeId": "9194",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "JUN. 10, 26 13:10:11",
    "transType": "A",
    "transactionId": "423DBCB1-61E9-BE0C-ACE8-1A7A56C7372C",
    "storeName": "CICAP",
    "reprintModule": "RV",
    "applicationLabel": "null",
    "customerName": "null",
    "preAuth": "0",
    "transDate": "2026-06-10 13:09:49.0",
    "authCode": "222222",
    "tipLessAmount": "0",
    "tipAmount": "0",
    "aid": "A0000000031010",
    "arqc": "607BB6C289B7C328",
    "cardExpDate": "10/30",
    "orderId": "",
    "promotion": "0",
    "rePrintMark": "VISA",
    "hexSign": "null",
    "transactionCertificate": "607BB6C289B7C328",
    "preStatus": 0,
    "isQPS": 0,
    "hasPin": false,
    "cashbackFee": "0",
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}

Reimpresión por folio de transacciones pendientes por reversar

El estatus PRV en el campo reprintModule de una reimpresión por folio indica que la transacción está pendiente por reversar, lo que significa que se reversará en una siguiente transacción. El detalle está especificado en el campo message.

{
  "data": {
    "affiliation": "7286147",
    "amount": "115",
    "bankName": "BBVA",
    "bin": "",
    "cardType": "C",
    "cardNumber": "3827",
    "cardTypeName": "VISA",
    "cityName": "Guadalupe,NUEVO LEON",
    "responseCode": "05",
    "folioNumber": "2-5651-1781119392104",
    "isReprint": true,
    "message": "Transacción pendiente por reversar",
    "moduleCharge": "354",
    "moduleLote": "2",
    "terminalId": "2841260371",
    "rePrintDate": "2.6.0.1.p.p_20260304",
    "rrnNumber": "null",
    "storeId": "9194",
    "streetName": "AVE PABLO LIVAS 7200",
    "ticketDate": "JUN. 10, 26 13:23:49",
    "transType": "A",
    "transactionId": "612A2DCC-A046-C005-867B-0DA6E72BA9E0",
    "storeName": "CICAP",
    "reprintModule": "PRV",
    "applicationLabel": "null",
    "customerName": "null",
    "preAuth": "0",
    "transDate": "2026-06-10 13:23:27.0",
    "authCode": "222222",
    "tipLessAmount": "0",
    "tipAmount": "0",
    "aid": "A0000000031010",
    "arqc": "3AF7225647B2B9AD",
    "cardExpDate": "10/30",
    "orderId": "",
    "promotion": "0",
    "rePrintMark": "VISA",
    "hexSign": "null",
    "transactionCertificate": "3AF7225647B2B9AD",
    "preStatus": 0,
    "isQPS": 0,
    "hasPin": false,
    "cashbackFee": "0",
    "cardOrigin": null
  },
  "idReport": 1,
  "applyCashback": false
}
🚧

Esta información es válida únicamente para las reimpresiones por folio.

  • Durante el proceso de una venta (no reimpresión), el campo reprintModule permanece nulo o con diferentes valores por lo que únicamente deberán validar su valor en la reimpresión por folio.
  • En la reimpresión por orderId esta información no aplica, ya que únicamente puede reimprimir transacciones aprobadas.
  • Estos estatus solo vienen al reimprimir por folio y ayudan a brindar más detalle. Por parte de NetPay se solicita que al ser ejecutada la reimpresión por folio actualicen estos estatus en su base de datos.
  • También NetPay solicita actualmente que todos los mensajes sean mostrados en su interfaz de su sistema punto de venta y de forma dínamica, es decir, imprimir lo que NetPay les proporciona en el campo Message junto con las validaciones de los campos previamente comentados (isReprint, reprintModule, entre otros).
❗️

Todo cambio que afecte la integración o la implementación de nuevas funcionalidades de NetPay debe certificarse con el equipo de integraciones, con el fin de validar su correcta implementación y reducir al mínimo las incidencias en producción.



Did this page help you?