Requisitos previos
- Habilitar Mercado Pago en el Admin de DEUNA.
- Tener una orden generada.
Configuración paso a paso
1. Habilitar Mercado Pago
Para procesar pagos con Mercado Pago mediante el Payment Widget de DEUNA:
- Accede al Admin de DEUNA.
- Sigue la guía de integración de Mercado Pago para habilitar este método de pago.
2. Crear una orden
Antes de mostrar el widget, necesitas generar un token de orden:
- Consulta la documentación de creación de órdenes.
- Obtén el order token necesario para inicializar el widget.
3. Implementación del Payment Widget
Ahora muestra el Payment Widget pasando la configuración de Mercado Pago en el parámetro paymentMethods
deunaSDK.initPaymentWidget(
orderToken: "<DEUNA order token>",
callbacks: PaymentWidgetCallbacks(
onSuccess: { order in
// Closes the DEUNA widget. The closure passed to the close function
// ensures your code executes after the user manually dismisses
// the SafariViewController
self.deunaSDK.close {
// YOUR CODE HERE
// Navigate to another screen or show success dialog
}
},
onError: { error in
if error.type == .paymentError {
// YOUR CODE HERE
// Handle payment error case
}
},
),
paymentMethods: [
[
"paymentMethod": "wallet",
"processors": ["mercadopago_wallet"]
]
]
)
import DeunaSDK
import SwiftUI
struct YourView: View {
let deunaSDK: DeunaSDK
var body: some View {
VStack {
DeunaWidget(
deunaSDK: deunaSDK,
configuration: PaymentWidgetConfiguration(
orderToken: "YOUR_ORDER_TOKEN",
callbacks: PaymentWidgetCallbacks(
onSuccess: { order in
// Explicitly release widget resources when no longer needed
// to prevent memory leaks and ensure proper cleanup.
// The closure ensures your code executes after the user
// manually dismisses the SafariViewController
deunaSDK.dispose {
// YOUR CODE HERE
// Handle successful payment (navigation, alerts, etc.)
}
},
onError: { error in
if error.type == .paymentError {
// YOUR CODE HERE
// Handle payment error case (show alert, retry, etc.)
}
}
),
paymentMethods: [
[
"paymentMethod": "wallet",
"processors": ["mercadopago_wallet"]
]
]
)
)
}
}
}
Consideraciones importantes para iOS
⚠️ Restricciones de Mercado Pago en iOS:
- Por requisitos de seguridad de Mercado Pago, se debe usar un SafariViewController para cargar su página de pagos.
- El cierre del SafariViewController debe ser manual por parte del usuario.
- La función close() del SDK no cerrará automáticamente el controlador.
✅ Mejor práctica:
self.deunaSDK.close { // Este código se ejecutará después de que el usuario // cierre manualmente el SafariViewController // Ideal para: // - Navegar a pantalla de confirmación // - Mostrar alerta de éxito // - Actualizar estado de la orden }