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)
})
}
}
Updated over 2 years ago