Método InitPayment

A partir da versão 1.7.0, estaremos disponibilizando duas opções de initPayment, com parâmetros de sobrecarga diferentes, portanto, leia com atenção e escolha a que mais e adequa a sua implementação. Abaixo, segue a descrição detalhada de cada uma delas:

Método InitPayment(onComplete)

Método chamado para transacionar o pagamento, no qual ira receber o callback(onComplete) somente quando pressionado sobre o botão “Ver comprovante" da tela de sucesso.

Em caso erro, será recebido o callback depois do fechamento da tela de error.

Exemplo:

Task {
    await TapOnPhoneWP.shared.initPayment(
        view: self,
        config: config,
        data: tapPaymentData,
        onStart: { vc in
            // ponto recomendado para iniciar loader customizado
        },
        onLoadComplete: {
            // ponto para dispensar o loader customizado
        },
        onComplete: { result in
            switch result {
            case .success(let transaction):
                // transaction é TapPaymentTransaction
            case .failure(let error):
                break
            }
        },
        counterTimeInSeconds: nil
    )
}

Descrição dos parâmetros:

CampoDescrição
view (UIViewController)View atual usada como contexto para exibição das telas necessárias.
config (TapConfig)Config com os dados de configuração. O mesmo informado na inicialização.
data (TapPaymentData)Os dados de pagamento, retornados pela jornada de telas de pagamento ou preenchido com o resultado da suas próprias telas.
onStart (((UIViewController) async -> Void)?)Evento chamado quando inicializa o método initPayment. Caso esteja utilizando uma animação de load customizada, este é o momento recomendado para inicia-la.
onLoadComplete (() -> Void)Evento chamado quando o loader customizado deve ser dispensado.
onComplete (((Result<TapPaymentTransaction, Error>) -> Void)?)Método chamado quando o pagamento completa todos os seus processos, podendo ser success ou failure em caso de algum problema. Em caso de sucesso, entrega um TapPaymentTransaction. Consulte a seção Modelo de retorno TapPaymentTransaction e a página Tratamento de erros.
counterTimeInSeconds (Int?)Tempo, em segundos, de contagem/timeout exibido na tela de aproximação do cartão. Opcional, default nil.

Método InitPayment (onPaymentSuccess, onPaymentError)

Método chamado para transacionar o pagamento, no qual ira receber o onPaymentSuccess logo após a animação da bandeira. Em caso erro, será recebido o callback depois do fechamento da tela de error.

Exemplo:

Task {
    await TapOnPhoneWP.shared.initPayment(
        view: self,
        config: config,
        data: tapPaymentData,
        onStart: { vc in
            // ponto recomendado para iniciar loader customizado
        },
        onLoadComplete: {},
        onPaymentSuccess: { (transaction: TapPaymentTransaction) in
            // ver modelo TapPaymentTransaction abaixo
        },
        onPaymentError: { error in
            // tratar erro
        },
        counterTimeInSeconds: nil
    )
}

Descrição dos parâmetros:

CampoDescrição
view (UIViewController)View atual usada como contexto para exibição das telas necessárias.
config (TapConfig)Config com os dados de configuração. O mesmo informado na inicialização.
data (TapPaymentData)Os dados de pagamento, retornados pela jornada de telas de pagamento ou preenchido com o resultado da suas próprias telas.
onStart (((UIViewController) async -> Void)?)Evento chamado quando inicializa o método initPayment. Caso esteja utilizando uma animação de load customizada, este é o momento recomendado para inicia-la.
onLoadComplete (() -> Void)Evento chamado quando o loader customizado deve ser dispensado.
onPaymentSuccess: ((TapPaymentTransaction) -> Void)?Método chamado quando o pagamento é completado com sucesso, logo após a animação da bandeira. Entrega um TapPaymentTransaction.
onPaymentError: ((Error) -> Void)?Método chamado quando ocorre uma falha durante o pagamento. Consulte a página Tratamento de erros.
counterTimeInSeconds (Int?)Se for nil, o botão de progresso fica desabilitado.

Modelo PaymentData

public struct PaymentData: Equatable {
    public init() {
        price = 0.0
        installments = 1
    }
    public var price: Decimal
    public var installments: Int
    public var paymentMethod: PaymentMethod?
    public var showNewSaleButton: Bool = true
}

Novo campo: showNewSaleButton — controla a exibição do botão "Nova venda" no comprovante.

Modelo de retorno TapPaymentTransaction

Em caso de sucesso, os callbacks onComplete e onPaymentSuccess entregam um objeto TapPaymentTransaction. Não há inicializador público memberwise para nenhum dos tipos abaixo: apenas o SDK constrói e entrega as instâncias, e o app integrador só as recebe e lê.

public struct TapPaymentTransaction {
    public var amount: Double?
    public var aid: String?
    public var brand: String?
    public var cardNumber: String? // número mascarado, não é o PAN completo
    public var date: Date?
    public var transactionDate: String?
    public var transactionType: String?
    public var status: Int?
    public var installments: Int?
    public var dynamicBankDataModel: TapDynamicBankData?
}

public struct TapDynamicBankData {
    public var issuerScriptResults: String?
    public var paymentId: String?
    public var cpfcnpj: String? // documento do comerciante
    public var receiptInfoModel: TapReceiptInfo?
}

public struct TapReceiptInfo {
    public var merchantName: String?
    public var merchantAddress: String?
    public var merchantCity: String?
    public var merchantState: String?
    public var nsu: String?
    public var date: String?
    public var cardNumber: String?
    public var brand: String?
    public var transactionType: String?
    public var authorizationCode: String?
    public var value: Double?
    public var installments: Int?
    public var paymentDateTime: String?
}

Did this page help you?