Uso
Usar en una aplicación
El método de inicialización de la libreria debe llamarse en el hilo principal.
import LBFraudSDKiOS
...
// Reemplace apikey con la clave API generada deseada.
let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
// Por defecto nuestro SDK apunta al entorno de producción.
// En caso de que desee apuntar a un entorno diferente:
// let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", environment: Environment.Testing)
//public enum Environment: String {
// case Production
// case Testing
// case Development
//}
//Llame a Ironchip Location Based Antifraud para analizar la transacción
let data: [String: Any] = [
"concept": "Book august",
"amount": 60,
"operation": "booking"
]
let transactionID = "random_identifier_generated"; // Identificador de la transacción para los resultados de fraude
let userId = "john.doe@gmail.com" // ID de usuario
//TransactionID (obligatorio, único): solicitud de identificador de transacción para resultados de fraude
//ID de usuario (obligatorio): identificador de usuario
//ExtraData (opcional): información extra para análisis
// SendTransaction se puede proporcionar con 2 devoluciones de llamada, una se ejecuta cuando finaliza la transacción
// y el otro se llama en caso de que haya ocurrido un error durante el proceso de transacción.
ironchipLBFraud.sendTransaction(transactionId: transactionID, userId: userId, extraData: extraData, finish: {
// Agregue aquí cualquier código que desee que se ejecute una vez finalizada la transacción.
}, onError: { err in
// Añade aquí cualquier código que quieras ejecutar en caso de error
// durante la transacción.
// ejemplo:
//if(err is TransactionError) {
// let transactionError = err as! TransactionError
// print(transactionError.traceability_id)
// print(transactionError.message)
// print(transactionError.http_code)
// print(transactionError.code)
//} else {
// print("NetworkError: ", err)
//}
}
)
Example
import LBFraudSDKiOS
import Foundation
import CommonCrypto
// Reemplaza apikey con la clave API generada deseada.
let ironchipLBFraud = LBFraudSDKiOS.init(apikey: "XXXXXX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
// Función para realizar el inicio de sesión y llamar a la transacción si es exitosa
func login(username: String, password: String) {
Task {
let loginSuccessful = await performLogin(username: username, password: password)
if loginSuccessful {
// Si el inicio de sesión es exitoso, llama a sendTransaction con los parámetros necesarios
let transactionID = generateRandomTransactionID(length: 10) // Genera un ID de transacción único
let anonymizedUserID = anonymizeUserID(username) // ID de usuario anonimizado
let extraData: [String: Any] = [
"amount": 30, // Usa una cantidad apropiada
"operation": "login" // Especifica la operación
]
// Llama a sendTransaction después de un inicio de sesión exitoso
await sendTransactionAfterLogin(transactionID: transactionID, anonymizedUserID: anonymizedUserID, extraData: extraData)
} else {
// Manejar el fallo del inicio de sesión
}
}
}
// Función de inicio de sesión simulado asíncrono
func performLogin(username: String, password: String) async -> Bool {
await Task.sleep(2 * 1_000_000_000)
return true
}
// Función para enviar la transacción después del inicio de sesión exitoso
func sendTransactionAfterLogin(transactionID: String, anonymizedUserID: String, extraData: [String: Any]) async {
// Envía la transacción
ironchipLBFraud.sendTransaction(transactionId: transactionID, userId: anonymizedUserID, extraData: extraData, finish: {
// Agrega aquí cualquier código que quieras ejecutar después de que la transacción haya terminado.
}, onError: { err in
// Agrega aquí cualquier código que quieras ejecutar en caso de un error durante la transacción.
})
}
// Función para generar un ID de transacción
func generateRandomTransactionID(length: Int) -> String {
let characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var randomID = ""
for _ in 0..<length {
if let randomCharacter = characters.randomElement() {
randomID.append(randomCharacter)
}
}
return randomID
}
// Función para recortar, convertir a minúsculas y hashear el userId
func anonymizeUserID(_ userId: String) -> String {
let trimmedLowercaseUserID = userId.trimmingCharacters(in: .whitespacesAndNewlines).lowercased()
return sha256Hash(trimmedLowercaseUserID)
}
// Función para realizar hashing usando SHA-256
func sha256Hash(_ input: String) -> String {
let inputData = Data(input.utf8)
var hash = [UInt8](repeating: 0, count: Int(CC_SHA256_DIGEST_LENGTH))
inputData.withUnsafeBytes {
_ = CC_SHA256($0.baseAddress, CC_LONG(inputData.count), &hash)
}
return hash.map { String(format: "%02x", $0) }.joined()
}
Updated: October 17, 2024