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)

Campo

Tipo

Descripción

presentingVC

UIViewController

Este campo debe contener el valor self.

amount

Double

Monto total de la venta con propina incluida.

deviceName

String

Nombre 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.

promotion

Promotion

Este 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).

tip

Double

Monto de la propina.

delegate

UIViewController

Este campo debe contener el valor self.

location

CLLocationCoordinate2D?

En este campo puedes agregar un objeto CLLocationCoordinate2D el cual contenga una coordenada de dónde se realiza la transacción.

reference

String?

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ón

Descripció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.

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
                                                                                  
}

Campo

Tipo

Descripción

startDate

String

Fecha inicial con formato yyyy-MM-dd.

endDate

String

Fecha 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
            
}

Campo

Tipo

Descripción

transactionId

String

Identificador 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)
    }
 }

Campo

Tipo

Descripción

storeId

String

El identificador de la tienda.

orderId

String

El 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.


Did this page help you?