Crear un objeto de Pago

Para integrar la función de pago con Clip, se requiere:

  • Crear un objeto de pago en la aplicación
  • Agregar un botón o elemento gráfico de pago en tu aplicación
30623062

Pantallas del flujo de pago con tarjeta.

Para crear un objeto de pago, implementa la siguiente función dentro del estado de login didLLoginSDKProtocologinSuccess():

let payWrapper = PaymentProcessManager()
     .set(amount: NSDecimalNumber(value: ))
     .set(baseview: )
     .set(tips: )
     .set(contactlessEnabled: )
     .set(delegate: )
     .set(payWithPoints: )
     .set(reference: )
     payWrapper.startPayment()

La siguiente tabla describe los elementos del objeto PaymentProcessManager:

Elemento

Tipo de Dato

Descripción

amount

 NSDecimalNumber

Cantidad de la transacción.

baseView

ViewController

Clase base que presenta las vistas que se utilizan en la aplicación.

tips

Boolean

Permite mostrar la pantalla de selección de propina en el flujo de pago. Se modifica con las propiedades noTip  o enabled .

.noTip

Propinas desactivadas.

.enabled

Propinas activadas. Tiene propiedades adicionales para calcular con o sin centavos.

.roundUp

Redondea la cantidad de propina.

.exact

Propinas exactas con pesos y centavos.

contactlessEnabled

Boolean

Permite recibir pagos contactless en terminales Clip Plus 2.

delegate

Clase

Clase que recibe los errores y status del proceso de la transacción.

payWithPoints

Boolean

Permite recibir pagos con los puntos que otorga el banco al usuario de la tarjeta.

reference

String

Referencia personalizada proporcionada por el cliente.

Longitud: 100 caracteres

Validación: cadena alfanumérica y los siguientes caracteres especiales @ # $ & ( ) _ - , .

Iniciar una transacción

En el listener del botón de pago de tu aplicación, agrega la siguiente función:

.startPayment()

Implementar la clase Delegate

Después de crear un objeto de pago, se requiere implementar un Delegate para poder manejar el estado de éxito o error que resulta de la transacción.

Crea una extensión de la clase PaymentProcessDelegate:

Extension PrincipalViewController: PaymentProcessDelegate{

     func onErrorOcurred(_ error: StatusCode, _ subStatusDetail: SubStatusDetail?){

     }

     func successTransaction(_ payment: Payment) {

     }

}

La siguiente tabla muestra una descripción de las funciones contenidas en la clase PaymentProcessDelegate:

Elemento

Descripción

onErrorOcurred

Regresa un error de tipo StatusCode. Algunos errores incluyen una descripción adicional subStatusDetail .

successTransaction

Regresa un objeto tipo Payment con la información del pago que se realizó.

Esquema del objeto Payment:

ClipTransaction {
   var totalAmount: Decimal
   let cardType: CardType
   let currency: String?
   let paymentDate: Date
   let invoiceNumber: String?
   let last4: String
   let latitude: String?
   let longitude: String?
   let receiptNumber: String
   let installment: Installment?
   let amount: Decimal
   let tip: Decimal?
   let status: TransactionStatus
}

La siguiente tabla incluye una descripción para los parámetros del objeto tipo Payment:

Elemento

Descripción

Tipo de dato

receiptNumber

Identificador único de la transacción

String

amount

Cantidad del pago

Decimal

tip

Cantidad de la propina

Decimal

totalAmount

Cantidad total del pago incluyendo propina

Decimal

cardType

Tipo de tarjeta utilizada para el pago:

CardType  

  • .amex
  • .discover
  • .jcb
  • .mastercard
  • .visa
  • .sivale
  • .edenred
  • .carnet
  • .privateCard
  • .electron
  • .sodexo
  • .unknown

Enum

last4

Últimos cuatro dígitos de la tarjeta utilizada para el pago

String

installment

Indica si el pago se difiere en mensualidades:

Installment

  • .ThreeMonth
  • .SixMonth
  • .NineMonth
  • .TwelveMonth
  • .PayInFull

Enum

merchantInvoiceId

Referencia alfanumérica proporcionada por el vendedor

String

status

Estado de la transacción.

Lista de posibles estados de la transacción:

TransactionStatus

  • .Paid
  • .Refunded
  • .Cancelled
  • .Declined
  • .Error

Enum

currency

Código de divisa para la transacción del pago conforme a ISO 4217

String

paymentDate

Fecha de creación del pago

Date

latitude

Coordenada de latitud para la ubicación de la transacción

String

longitude

Coordenada de longitud para la ubicación de la transacción

String

👍

Mira cómo hacerlo

Consulta la receta con los pasos necesarios para recibir un pago con tarjeta en tu proyecto.