Integración con CyberSource
Los siguientes pasos solo deben seguirse si se ha solicitado la activación de la funcionalidad de detección de fraude de Cybersource a través de Izipay. De lo contrario, seguir estos pasos solo aumentará el tamaño de la aplicación sin obtener ninguna ventaja. Por el contrario si se ha pedido que se active la funcionalidad de detección de fraude de Cybersource estos pasos son obligatorios, de no llevarlos a cabo se pueden dar casos de denegación de pago por parte de cybersource por falta de datos.
Paso 1
Para integrar las librerías de Cybersource en tu proyecto iOS, sigue estos pasos técnicos:
- Agrega las 3 librerías de Cybersource al proyecto de la app. Arrastra los archivos .xcframework al proyecto.
- En la configuración del comercio, en la pestaña "General", ve al apartado "Frameworks, Libraries, Embedded content" (el nombre del apartado puede variar según la versión de Xcode).
- Cambia el flag "Embed" de las librerías a "Embed & Sign".
Estos pasos asegurarán que las librerías de Cybersource sean correctamente incorporadas en tu proyecto iOS.
Paso 2
Para integrar el SDK de Izipay en la pantalla desde la cual se llama, agrega las siguientes líneas de código en la parte superior del archivo del controlador:
import IzipayPayButtonSDK
import RLTMXProfiling
import RLTMProfilingConnections
class ViewController: UIViewController {
//...
}
Esto asegurará que el SDK de Izipay esté correctamente importado en el controlador de la pantalla, permitiéndote utilizar sus funciones y características en ese contexto específico.
Paso 3
Agrega una variable global al controlador utilizado en el paso anterior de la siguiente manera:
var profile : RLTMXProfiling? = RLTMXProfiling.sharedInstance()
Al declarar la variable izipayInstance
como una instancia de IzipaySDK
, podrás acceder a las funcionalidades proporcionadas por el SDK en todo el ámbito de ese controlador. Esto te permitirá utilizar métodos y propiedades del SDK según sea necesario en tu implementación.
Luego, agrega el siguiente método(función):
private func doProfileRequest(forUser userScoring : String, with id : String) {
let customAttributes : [String : String] = [RLTMXSessionID: "\(userScoring)\(id)"]
if let safeProfile = self.profile {
let _: RLTMXProfileHandle =
safeProfile.profileDevice(profileOptions:customAttributes, callbackBlock:{(result:
[AnyHashable : Any]?) -> Void in
let results:NSDictionary! = result! as NSDictionary
let status:RLTMXStatusCode =
RLTMXStatusCode(rawValue:(results.value(forKey: RLTMXProfileStatus) as!
NSNumber).intValue)!
_ = results.value(forKey: RLTMXSessionID) as! String
if status == RLTMXStatusCode.RLTMXStatusCodeOk {
// No errors, profiling succeeded!
}
})
}
}
Paso 4
Finalmente, agregar el siguiente código como implementación del método executeProfiling:
func executeProfiling(_ params: IzipayPayButtonSDK.ScoringParams) {
let profilingConnections : RLTMXProfilingConnections = RLTMXProfilingConnections.init()
profilingConnections.connectionTimeout = TimeInterval(params.timeout);
profilingConnections.connectionRetryCount = Int32(params.intents);
profile = RLTMXProfiling.sharedInstance()
profile?.configure(configData:[
RLTMXOrgID : params.userOrg ?? "",
RLTMXFingerprintServer : params.defaultServer ?? "",
RLTMXProfileTimeout : profilingConnections.connectionTimeout,
RLTMXProfilingConnectionsInstance: profilingConnections,
])
self.doProfileRequest(forUser: params.userScoring ?? "", with: params.randomFp ?? "")
}