Inicializar Pay-me SDK iOS
A continuación, se detallan los pasos para inicializar el SDK.
Es necesario los datos del paso Parámetros de Entrada y Salida de Pay-me SDK iOS y la Key brindada por Pay-me.
Importar el SDK
Nos ubicamos en la parte superior de la clase que se encargará de invocar al SDK. En este punto, se debe importar el SDK para que sus métodos y entidades puedan ser reconocidas.
import Payme
Invocar al SDK
Se invoca el SDK con los datos de entrada.
La función authorizeTransaction de la clase PaymeClient es el encargado de inicializar el proceso de autorización, esta función recibe los siguientes parámetros:
controller: Es el controller donde iniciará la invocación del SDK.
usePresent: el valor true indica que se usará un presentController para invocar el controlador principal del SDK, caso contrario se usará pushViewController.
paymeRequest: El objeto de entrada que contiene toda la información de la transacción
setEnvironment: Esta función nos permitirá seleccionar el ambiente:
Development
Production
let paymePersonData = PaymePersonData(
firstName: "Levis Antonio",
lastName: "Silvestre Maylle",
email: "levis.silvestre@alignet.com",
addrLine1: "Av casimiro Ulloa 333",
addrLine2: "Av casimiro Ulloa 333",
countryCode: "PE",
countryNumber: "604",
zip: "18",
city: "Lima",
state: "Lima",
mobilePhone: "51-958435685"
)
var reserved = [String:String]()
reserved["reserved1"] = "1"
reserved["reserved2"] = "1"
reserved["reserved3"] = "3"
let paymeRequest = PaymeRequest(
merchant: PaymeMerchantData(
operation: PaymeOperationData(
operationNumber: "000001",
operationDescription: "Televisor",
amount: "10.55",
currency: PaymeCurrencyData(
code: "604",
symbol: "S/"
)
),
addrMatch: true,
billing: paymePersonData,
shipping: paymePersonData
),
feature: PaymeFeatureData(
reserved: reserved,
wallet: PaymeWalletData(enable: true, userID: "COMMERCE_USER"),
installments: PaymeInstallmentsData(enable: true),
authentication: PaymeAuthenticationData(tdsChallengeInd: "01")
),
setting: PaymeSettingData(
locale: "es_PE",
brands: ["VISA","MSCD","AMEX","DINC"]
)
)
let paymeClient = PaymeClient(delegate: self, key: "COMMERCE_KEY")
paymeClient.setEnvironment(environment: PaymeEnviroment.production)
paymeClient.authorizeTransaction(controller: self.navigationController!, usePresent: false, paymeRequest: paymeRequest)
Se agrega el Delegate para los métodos a utilizar que es el PaymeClientDelegate
El Objeto PaymeInternalAction retornará por el SDK notificaciones por cada acción interna:
Tarjeta Habiente le da al botón pagar
Se inicia y terminar el proceso RBA
Se inicia y termina el proceso 3DS
Se inicia la autorización con el componente Charges
El objeto PaymeResponse retornará por el SDK la respuesta final, una vez finalizado todo el proceso.
extension MainController: PaymeClientDelegate {
func onNotificate(action: PaymeInternalAction) {
print("========================================= INTERNAL ACTION SDK =======================================")
switch action {
case .PRESS_PAY_BUTTON: print("El usuario presionó el boton pagar exitosamente.")
case .START_SCORING: print("Inicia el proceso de evaluación de riesgo.")
case .END_SCORING: print("Termina el proceso de evaluación de riesgo.")
case .START_TDS: print("Inicia el proceso de autenticación.")
case .END_TDS: print("Termina el proceso de autenticación.")
case .START_AUTHORIZATION: print("Se inicia la autorización.")
default: print("Action no reconocida.")
}
print("========================================= INTERNAL ACTION SDK =======================================")
}
func onRespondsPayme(response: PaymeResponse) {
print("========================================= PAYMENT_RESPONSE =======================================")
print("success: ", response.success)
print("messageCode: ", response.resultCode ?? "-")
print("message: ", response.resultMessage ?? "-")
print("detail: ", response.resultDetail ?? "-")
if let payment = response.payment {
print("payment.accepted: ", payment.accepted)
print("payment.operationNumber: ", payment.operationNumber ?? "-")
print("payment.date: ", payment.operationDate ?? "-")
print("payment.authorizationCode: ", payment.authorizationCode ?? "-")
}
print("========================================= PAYMENT_RESPONSE =======================================")
}
}