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
SWIFT

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)
SWIFT

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 =======================================")
    }
}
SWIFT

Continuar a Mensajes de errores de Payme SDK ➡️