Utilizar SDK

1. Inicia Sesión

Para comenzar abre el archivo AppDelegate.swift e importa el SDK.

Implementación:

import NetPayMiniSDK

Agrega tus credenciales en la función didFinishLaunchingWithOptions.

Implementación:

NPService().initialize(user: “//usuario”: password: “//contraseña”)

2. Genera una transacción

Para comenzar deberás importar NetPayMiniSDK en el controlador donde requieres transaccionar.

Implementación:

import NetPayMiniSDK

Crea una variable que contenga una instancia de NPService, de preferencia con un alcance (scope) global.

Implementación:

lazy var service: NPService! = {
  return NPService()
}()

Para transaccionar algunos campos son obligatorios y otros opcionales.

Implementación:

service.transaction(presentingVC: self,
                    amount: 1.0,
                    deviceName: "NETPAY8012400115",
                    location: CLLocationCoordinate2D(latitude: 25.6495641, longitude: -100.3255365),
                    promotion: .noPromotion,
                    tip: 0.0,
                    reference: "referencia",
                    enableSignature: true,
                    delegate: self)
CampoTipoDescripción
presentingVCUIViewControllerEste campo debe contener el valor self.
amountDoubleMonto total de la venta con propina incluida.
deviceNameStringNombre de tu lector Mini. Para llenar este campo primero debes obtener los últimos 10 dígitos del número serial de tu lector Mini y concatenar al inicio la palabra NETPAY. Ejemplo: Si tu lector tiene el número serial 27000210118012400115 el campo debería llenarse como NETPAY8012400115.
promotionPromotionEste campo indica si la venta lleva meses sin intereses. Las opciones son sin promoción (.noPromotion), 6 meses (.sixMonths), 9 meses (.nineMonths), 12 meses (.twelveMonths), 18 meses (.eighteenMonths).
tipDoubleMonto de la propina.
delegate UIViewControllerEste campo debe contener el valor self.
locationCLLocationCoordinate2D?En este campo puedes agregar un objeto CLLocationCoordinate2D el cual contenga una coordenada de dónde se realiza la transacción.
referenceString?En este campo puedes agregar un texto que contenga una referencia a la venta.

Se debe conformar al protocolo TransactionDelegate en el controlador correspondiente.

Implementación:

extension ViewController: TransactionDelegate {
    
    func didBeginConnectingDevice() {
        print("didBeginConnectingDevice")
    }
    
    func connectingBluetooth() {
        print("connectingBluetooth")
    }
    
    func bluetoothNotFound() {
        print("bluetoothNotFound")
    }
    
    func bluetoothIsOff() {
        print("bluetoothIsOff")
    }
    
    func insertSwipeApproachCard() {
        print("insertSwipeApproachCard")
    }
    
    func readingCardChip() {
        print("readingCardChip")
    }
    
    func deviceError(error: DeviceError) {
        print("deviceError: ", error)
    }
    
    func transactionError(message: String) {
        print("TransactionError: ", message)
    }
    
    func sendingTransaction() {
        print("sendingTransaction")
    }
    
    func didCompleteTransaction(transactionId: String) {
        print("didCompleteTransaction: ", transactionId)
        
        self.transactionId = transactionId
    }
    
}
FunciónDescripción
didBeginConnectingDevice()Comienza proceso de vinculación del dispositivo con el lector.
bluetoothNotFound()El dispositivo no detecta el Bluetooth del lector. Verifica que el lector esté encendido.
bluetoothIsOff()El Bluetooth del dispositivo se encuentra apagado.
insertSwipeApporachCard()Inserta, Desliza o Acerca la tarjeta al lector.
readingCardChip()Leyendo el chip de la tarjeta.
deciveError(error: DeviceError)Se presenta un error en el lector al intentar leer la tarjeta. Este método regresa un error de tipo DeviceError indicando el problema.
transactionError(error: String)Se presenta un error en el lector al intentar leer la tarjeta. Este método regresa un error de tipo DeviceError indicando el problema.
sendingTransaction()La transacción se está enviando al servidor.
didCompleteTransaction(transactionId: String)La transacción se
completó con éxito. Este método regresa un transactionId de tipo String.

En el caso en que la tarjeta no solicita firma electrónica, NetPayMiniSDK mostrará un controlador con el cual el cliente deberá firmar.

792

3. Cancela la transacción en proceso

Para cancelar la transacción que se está procesando utiliza la función cancelTransaction.

Implementación:

service.cancelTransaction()

Esto cancelará la ejecución de la lectura de tarjeta. Es importante mencionar que una vez que se llegue al estatus de sendingTransaction() la transacción no podrá cancelarse.

4. Cancela una venta

Para cancelar una venta es necesario contar previamente con el transactionId de la venta a cancelar.

Implementación:

service.refund(transactionId: transactionId) { success, errorMessage in
            
	if success {
                
  	print("Se canceló la venta")
                
  } else {
                
  	print(errorMessage ?? "No se recibió error")
                
  }
            
}

Si se completa exitosamente la transacción se cancelará. No se podrá cancelar la venta si ya transcurrió un día después de realizar la transacción.

5. Consulta un reporte de ventas

Para consultar la ventas realizadas hay que proporcionar un rango de fechas.

Implementación:

service.reportSalesByDateAndUser(startDate: "2020-09-02", endDate: "2020-09-17") { sales, message in
                                                                                  
}
CampoTipoDescripción
startDateStringFecha inicial con formato yyyy-MM-dd.
endDateStringFecha final con formato yyyy-MM-dd.

Esto regresa un arreglo con toda la información de las ventas realizadas dentro del rango de fechas.

Respuesta

6. Consulta el detalle de una venta

El detalle de venta sirve para obtener más información de la venta y es necesario contar con un transactionId.

Implementación:

service.reportSalesDetail(transactionId: "F3EEEBA3-8DBC-8F9A-F8B7-F40EF4CC04BC")  { sales, message in
            
}
CampoTipoDescripción
transactionIdStringIdentificador de la transacción a consultar.

Esto regresa toda la información de la venta realizada.

7. Consulta el voucher de una venta

Para consultar el voucher de una venta es necesario contar con el orderId.

Implementación:

service.getImageVoucher(storeId: "51022", orderId: "5102220200915125842324") { imageBase64 in
  	if let decodedData = Data(base64Encoded: imageBase64!, options: .ignoreUnknownCharacters) {
  		self.imageView.image = UIImage(data: decodedData)
 	}
 }
CampoTipoDescripción
storeIdStringEl identificador de la tienda.
orderIdStringEl identificador de la orden obtenido en el detalle de la venta.

Esto regresa un base64 con la imagen del voucher de una venta .

Compatibilidad

NetPayMiniSDK es un Framework desarrollado en Swift 5 para dispositivos móviles Ios. Es compatible con OS mayor o igual a 10.0.