Overview

Set the PrimerDelegate in order to receive different callbacks from Primer SDK.

primerDidCompleteCheckoutWithData

SWIFT
primerDidCompleteCheckoutWithData(_:additionalInfo:)

This method will be called with the when the payment has been completed, returning the payment’s data.

⚠️ This method won’t be called when you are using manual payment handling, or the vault manager.

Parameters

Example

SWIFT
// 👇 Add this
import PrimerSDK

// 👇 Conform to PrimerDelegate
class MyViewController: UIViewController, PrimerDelegate {

	// ...

    // 👇 Add this
	func primerDidCompleteCheckoutWithData(_ data: PrimerCheckoutData) {
        // Do something with the payment's data
    }
}

primerDidTokenizePaymentMethod

SWIFT
func primerDidTokenizePaymentMethod(_:decisionHandler:)

This method will be called with the when the payment method has been tokenized, returning the payment method’s tokenization data. Use the token to create a payment on your backend. Make sure that you call the decisionHandler once your operation has been completed.

⚠️ This method will be called only on the manual flow, or when vaulting.

Parameters

Example

SWIFT
// 👇 Add this
import PrimerSDK

// 👇 Conform to PrimerDelegate
class MyViewController: UIViewController, PrimerDelegate {

	// ...

    // 👇 Add this
	func primerDidTokenizePaymentMethod(_ paymentMethodTokenData: PrimerPaymentMethodTokenData, decisionHandler: @escaping (PrimerResumeDecision) -> Void) {
        // Create your payment
        createPayment(with: paymentMethodTokenData.token) { res, err in
            if let err = err {
                // 👇 Call the decisionHandler to show the error screen with your custom error message
                decisionHandler(.fail(withErrorMessage: "Oh no, something went wrong creating the payment..."))

            } else if let res = res {
                if let newClientToken = res.requiredAction?.clientToken {
                    // 👇 Call the decisionHandler with the new client token to continue the flow
                    decisionHandler(.continueWithNewClientToken(requiredAction.clientToken))
                } else {
                    // 👇 Call the decisionHandler to show the success screen
                    decisionHandler(.succeed())
                }
            }
        }
    }
}

primerDidResumeWith

SWIFT
func primerDidResumeWith(_:decisionHandler:)

This method will be called providing a resumeToken so you can resume the payment.

⚠️ This method will be called only on the manual flow when the payment is in a .PENDING state..

Parameters

Example

SWIFT
// 👇 Add this
import PrimerSDK

// 👇 Conform to PrimerDelegate
class MyViewController: UIViewController, PrimerDelegate {

	// ...

    // 👇 Add this
	func primerDidResumeWith(_ resumeToken: String, decisionHandler: @escaping (PrimerResumeDecision) -> Void)
        // Resume your payment
        resumePayment(with: resumeToken) { res, err in
            if let err = err {
                // 👇 Call the decisionHandler to show the error screen with your custom error message
                decisionHandler(.fail(withErrorMessage: "Oh no, something went wrong creating the payment..."))

            } else if let res = res {
                if let newClientToken = res.requiredAction?.clientToken {
                    // 👇 Call the decisionHandler with the new client token to continue the flow
                    decisionHandler(.continueWithNewClientToken(requiredAction.clientToken))
                } else {
                    // 👇 Call the decisionHandler to show the success screen
                    decisionHandler(.succeed())
                }
            }
        }
    }
}

primerClientSessionWillUpdate

This method will be called to notify you that the client session will be updated, e.g. a surcharge needs to be applied when a payment method has been chosen.

SWIFT
func primerClientSessionWillUpdate()

primerClientSessionDidUpdate

SWIFT
func primerClientSessionDidUpdate(_ clientSession: PrimerClientSession)

This method will be called to notify you that the client session has been updated, e.g. surcharge has been applied when a payment method has been chosen.

Parameters

primerWillCreatePaymentWithData

This method will be called with just before the payment gets created, and lets you decide whether you want to proceed with the payment creation.

⚠️ This method will be called only when checking out using the auto flow.

SWIFT
func primerWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void)

Parameters

Example

SWIFT
// 👇 Add this
import PrimerSDK

// 👇 Conform to PrimerDelegate
class MyViewController: UIViewController, PrimerDelegate {

	// ...

    // 👇 Add this
	func primerWillCreatePaymentWithData(_ data: PrimerCheckoutPaymentMethodData, decisionHandler: @escaping (PrimerPaymentCreationDecision) -> Void)

    }
}

primerDidEnterResumePendingWithPaymentAdditionalInfo

SWIFT
func primerDidEnterResumePendingWithPaymentAdditionalInfo(_ additionalInfo: PrimerCheckoutAdditionalInfo?)

This method will be called when the payment cannot get settled at this time, and will get settled in the future (e.g. a voucher)

primerDidFailWithError

SWIFT
func primerDidFailWithError(_ error: Error, data: PrimerCheckoutData?, decisionHandler: @escaping ((PrimerErrorDecision) -> Void))

This method will be called when an error occurs. It may return PrimerCheckoutData if the occurs after the payment creation. Make sure you call the decisionHandler to finalize the flow.

Parameters

Example

SWIFT
// 👇 Add this
import PrimerSDK

// 👇 Conform to PrimerDelegate
class MyViewController: UIViewController, PrimerDelegate {

	// ...

    // 👇 Add this
	func primerDidFailWithError(_ error: Error, data: PrimerCheckoutData?, decisionHandler: @escaping ((PrimerErrorDecision) -> Void)) {

    }
}

primerDidDismiss

This method will be called to notify you that the Primer SDK has been dismissed.

SWIFT
func primerDidDismiss()