NetPay iOS SDK

Los pasos, para integrar tu aplicación de Custom Checkout iOS con el SDK de NetPay, se detallan a continuación:

1. Requerimientos.

  • Netpay API public key.
  • iOS 8 o un target de implementación superior.
  • Xcode 10.0 o superior (Xcode 11 recomendado)
  • Swift 5.0 o superior (Swift 5.1)

2. Instalación.

  • Arrastra el archivo NetPaySDK.framework al proyecto a desarrollar.
  • Selecciona la opción para que se guarde el archivo NetPaySDK.framework en el proyecto.
  • Ve a General->Frameworks, Libraries, and Embedded Content y asegúrate de que se encuentre el archivo NetPaySDK.framework con la opción Embed & Sign.
  • Haz set de la llave privada en el siguiente campo:
private let publicKey = ""

3. Construcción de formulario de cobro.

NetPay iOS SDK proporciona formularios de interfaz de usuario fáciles de usar tanto para tokenizar una tarjeta de crédito como para crear una fuente de pago que se pueda integrar fácilmente en su aplicación.

3.1 Uso de formulario de tarjeta.

Para usar el controlador en su aplicación, modifique su controlador de vista con las siguientes adiciones:

-Asignar llave pública (public key)

private let publicKey = "pk_netpay_kSjXddOJMPuxfqEsEICyIOKUs"
private let testMode = true

-Inicializar al cliente

override func viewDidLoad() {
        super.viewDidLoad()

        let client = Client(publicKey: publicKey, testMode: testMode)
        client.capabilityDataWithCompletionHandler { (result) in
            if case .success(let capability) = result {
                self.capability = capability
            }
        }
    }

-Asignar el identificador

override func shouldPerformSegue(withIdentifier identifier: String, sender: Any?) -> Bool {
        if identifier == "PresentCreditFormWithModal" ||
            identifier == "ShowCreditForm" {
            return currentCodePathMode == .storyboard
        }

        return true
    }

-Asignar la llave pública y testMode al controlador del formulario de pago

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        super.prepare(for: segue, sender: sender)

        if segue.identifier == "PresentCreditFormWithModal",
            let creditCardFormNavigationController = segue.destination as? UINavigationController,
            let creditCardFormController = creditCardFormNavigationController.topViewController as? CreditCardFormViewController {
            creditCardFormController.publicKey = publicKey
            creditCardFormController.testMode = testMode
            creditCardFormController.handleErrors = true
            creditCardFormController.delegate = self
        } else if segue.identifier == "ShowCreditForm",
            let creditCardFormController = segue.destination as? CreditCardFormViewController {
            creditCardFormController.publicKey = publicKey
            creditCardFormController.testMode = testMode
            creditCardFormController.handleErrors = true
            creditCardFormController.delegate = self
        }
    }

-Crear modal de formulario

Public
import UIKit
import NetPaySDK
    @IBAction func showModalCreditCardForm(_ sender: Any) {
        guard currentCodePathMode == .code else {
            return
        }
        let creditCardFormController = CreditCardFormViewController.makeCreditCardFormViewController(withPublicKey: publicKey)
        creditCardFormController.handleErrors = true
        creditCardFormController.delegate = self
        let navigationController = UINavigationController(rootViewController: creditCardFormController)
        present(navigationController, animated: true, completion: nil)
    }

-Crear formulario push

import UIKit
import NetPaySDK
    @IBAction func showCreditCardForm(_ sender: UIButton) {
        guard currentCodePathMode == .code else {
            return
        }
        let creditCardFormController = CreditCardFormViewController.makeCreditCardFormViewController(withPublicKey: publicKey)
        creditCardFormController.handleErrors = true
        creditCardFormController.delegate = self
        show(creditCardFormController, sender: self)
    }

-Delegate para View Controller del formulario de tarjeta

extension ViewController: CreditCardFormViewControllerDelegate {
    func creditCardFormViewControllerDidCancel(_ controller: CreditCardFormViewController) {
        dismissForm()
    }
    //Success
    func creditCardFormViewController(_ controller: CreditCardFormViewController, didSucceedWithToken token: Token) {
        dismissForm(completion: {
            let alertController = UIAlertController(
                title: "Token Creado",
                message: "El token: \(token.token) fué creado satisfactoriamente. Por favor envía el token a tu back-end para realizar el checkout.",
                preferredStyle: .alert
            )
            let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
            alertController.addAction(okAction)
            self.present(alertController, animated: true, completion: nil)
        })
    }
    //Error
    func creditCardFormViewController(_ controller: CreditCardFormViewController, didFailWithError error: Error) {
        dismissForm(completion: {
            let alertController = UIAlertController(
                title: "Error",
                message: error.localizedDescription,
                preferredStyle: .alert
            )
            let okAction = UIAlertAction(title: "OK", style: .cancel, handler: nil)
            alertController.addAction(okAction)
            self.present(alertController, animated: true, completion: nil)
        })
    }
}