Skip to main content
Skip table of contents

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.

SWIFT
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

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

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

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.