Skip to main content
La función Cobros de Pay-me SDK permite cobrar con los siguientes métodos de pago disponibles:
  • Tarjetas Crédito / Débito
  • Yape
  • Billetera móviles con QR
  • Transferencia Bancaria
  • Cuotéalo
  • PagoEfectivo

Cobros: Inicializar Pay-me SDK iOS

A continuación, se detallan los pasos para inicializar el SDK.
Es necesario los datos del paso Cobros: Parámetros de Entrada y Salida de Pay-me SDK iOS y obtener el Access Token del API de Seguridad.

Importar PaymeSDK

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 UIKit
import Payme

class ViewController: UIViewController {}

Invocar PaymeSDK

El comercio debe interactuar con la clase PaymeClient quien se encargará de iniciar el flujo. La clase se inicia con los siguientes parámetros:
  • delegate: Instancia de una clase que se encargará de implementar los métodos del delegado.
  • merchantCode: Código del comercio entregado por Alignet.
Luego de crear un objeto de la clase PaymeClient, el comercio debe interactuar con dos funciones:
  • setEnvironment: Función que recibe el ambiente donde se hará la autorización.
  • invokeCaptureForm: Función que se encarga de invocar al SDK para que el usuario pueda realizar el pago. Esta función recibe los siguientes parámetros:
    • from: Es el ViewController donde se realizará la invocación del SDK.
    • sessionToken: Token de acceso que se debe obtener cada vez que se requiera invocar al SDK del API de Seguridad.
    • paymeChargesRequest: El objeto de entrada que contiene toda la información de la transacción.
setEnvironment: Este parámetro nos permitirá seleccionar el ambiente:
  • Development
  • Production
let customer = PAYMEAddressData(
  firstName: "Levis Antonio",
  lastName: "Silvestre Maylle",
  email: "levis.silvestre@alignet.com",
  phone: "51-958435685",
  identityDocument: PAYMEIdentityDocument(
    type: "DNI",
    identifier: "72111111",
    country: "PE"
  ),
  addressLine1: "Av casimiro Ulloa 333",
  addressLine2: nil,
  city: "Lima",
  state: "Lima",
  country: "PE"
)

let billingShipping = PAYMEAddressData(
  firstName: "Levis Antonio",
  lastName: "Silvestre Maylle",
  email: "levis.silvestre@alignet.com",
  phone: "51-958435685",
  addressLine1: "Av casimiro Ulloa 333",
  addressLine2: nil,
  city: "Lima",
  state: "Lima",
  country: "PE"
)

var additionalFields = [String:String]()
additionalFields["reserved1"] = "1"
additionalFields["reserved2"] = "1"
additionalFields["reserved3"] = "3"

let paymeChargesRequest = PAYMEChargesRequest(
  transaction: PAYMETransactionData(
    operationNumber: "0000001",
    amount: "1000",
    currency: "604",
    additionalFields: additionalFields,
    customer: customer,
    billing: billingShipping,
    shipping: billingShipping
  ),
  setting: PAYMESettingData(
    locale: "es_PE",
    paymentMethods: ["CARD","YAPE","CUOTEALO"],
    walletUserID: nil
  )
)

let paymeClient = PaymeClient(delegate: self, merchantCode: "MERCHANT_CODE")
paymeClient.setEnvironment(environment: PaymeEnviroment.production)
paymeClient.invokeCaptureForm(from: self.navigationController!, accessToken: "TOKEN_GENERADO_PARA_ESTA_SOLICITUD", paymeChargesRequest: paymeChargesRequest)

Agregar métodos delegates

Para completar la integración, es necesario agregar los métodos del delegado PaymeClientDelegate. El delegado tiene dos funciones que deben ser implementadas por el comercio:
  • onRespondsPayme -> Función que entrega el resultado final.
  • onPaymeEvents -> Función que entrega los eventos ocurridos dentro del SDK. Los eventos que puede entregar son los siguientes:
    • BUILD_FORM(Methods:[String])
    • CHOOSE_PAYMENT_METHOD(Method: String)
    • RETURN_LIST_PAYMENT_METHODS
    • CANCEL_PAYMENT_METHOD(Method: String)
    • PRESS_PAY_BUTTON(Method: String)
    • CLOSE_PAYME
extension MainController: PaymeClientDelegate {
    func onRespondsPayme(response: PAYMEChargesResponse) {}
    func onPaymeEvents(event: PaymeEvent) {}
}