Reimpresión por folio en integración SDK

Requisitos para la reimpresión por folio:

  • Contar con el SDK de NetPay versión 1.1.9
  • Tener instalado la Smart PinPad Dev 2.0_20240729 para pruebas o la Smart PinPad 2.0 para producción.
  • Si desean recuperar la respuesta por medio del folio de una venta, es importante enviar este campo previamente en la transacción de venta inicial.
  • Contar con un folio completamente único tanto en transacciones aprobadas como en declinaciones.

ReprintRequest

Este método tiene el objetivo de buscar el estatus de una transacción mediante el folio que haya sido asignado en la venta.

A partir de la versión de Smart PinPad 2.0 es posible buscar el estado de una transacción, mandando a llamar la reimpresión (ReprintRequest) desde el SDK de NetPay. A continuación se agrega un ejemplo de la llamada hacia el SDK para solicitar reimpresión de ticket por medio del folio:

//se inicializa instancia de SmartApi con el activity actual como //parámmetro
private val smartApi = SmartApiFactory.createSmartApi(this)

fun callReprintByFolio(){
val orderId = orderIdTE.text.toString() //Valor de referencia
val folioId = folio.text.toString()
val sale = ReprintRequest("mx.com.netpay.demosdk", orderId,folioId = folioId)

try {
   	smartApi.doTrans(sale,false,disabledPrint.isChecked)
} catch (e: SmartApiException) {
  	Toast.makeText(this, e.message, Toast.LENGTH_LONG).show()
}

❗️

Para que la funcionalidad proceda a realizar la búsqueda por folio, es importante enviar únicamente el folio como parámetro, ya que, si se envían el orderId y el folio al mismo tiempo, la funcionalidad va dar preferencia al orderId y el proceso deseado de recuperación no concluirá con éxito por lo que pueden dejar vacío el campo orderId y envía únicamente el folio.

Recibiendo respuesta del sdk

Presentamos un ejemplo de cómo pueden recibir la respuesta para esta operación, en este ejemplo se valida en el hook onActivityResult / onActivityCallResult de nuestro activity:

override fun onActivityCallResult(requestCode: Int, resultCode: Int, data: Intent?) {
  when (requestCode) {
    Constants.REPRINT_REQUEST ->  {
       val response = smartApi.onResult(requestCode, resultCode, data) as ReprintResponse
                    
		   if(response.success){
			   //cuando success == true significa que se encontraron
			   //registros de la transacción solicitada

			   if(response.reprintModule == ”C”){
			     //cuando reprintModule == ”C” significa 
           //que se trata de una transacción identificada
           //como completada
         }

			   if(response.reprintModule == ”D”){
			     //cuando reprintModule == ”D” significa 
           //que se trata de una transacción identificada
           //como declinada
         }
        
         if(response.reprintModule == ”RV”){
			     //cuando reprintModule == ”RV” significa 
           //que se trata de una transacción identificada
           //como reversada
         }
           
         if(response.reprintModule == ”PRV”){
			     //cuando reprintModule == ”PRV” significa 
           //que se trata de una transacción identificada
           //como pendiente por reversar
         }
       } else {
			   //cuando success == false significa que no se tienen
			   //registros de esa transacción, esto puede deberse
			   //a que la transacción no existe o que se interrumpió 
  			 //antes de completarse online 
         //P. Ej: cancelación de usuario, red no disponible,etc
      }
	  }
  }
}

❗️

El campo que se debe validar para conocer el estatus de una transacción se llama reprintModule y sobre el cual compartimos los valores que puede contener junto con su significado.

🚧

Para más información sobre problemas de comunicación y/o reversos pueden acceder a esta documentación: Manejo de reversos para integración SDK

RespuestaSignificadoDescripción
reprintModule : C y transtype : ATransacción aprobadaConfirmación de que la transacción se encuentra aprobada, se debe considerar el tipo de transacción transtype A.
reprintModule : C y transtype : VTransacción canceladaEn esta respuesta la transacción se encuentra cancelada en la combinación de campos reprintModule = C y transtype = V.
reprintModule : DTransacción declinadaLa transacción fue declinada por una regla de fraude o por el emisor.
reprintModule : RVTransacción ReversadaLa transacción fue reversada exitosamente, por lo tanto, esta transacción no debe considerarse como exitosa.
reprintModule : PRVTransacción Pendiente de reversoTransacción programada para ser reversada en una siguiente transacción.

Cuando una transacción está reversada en pantalla aparecerá el siguiente mensaje:

❗️

Recordamos que todo cambio que afecte la integración o implementación de funcionalidades nuevas de NetPay deben proceder a certificarse con el equipo de integraciones para validar su correcta implementación y reducir en el menor número posible incidencias en producción.

🚧

Para más información sobre problemas de comunicación y/o reversos pueden acceder a esta documentación: Manejo de reversos para integración SDK