Integración vía Mercado Pago para aplicaciones móviles
Este modelo permite ofrecer Apple Pay en tu aplicación móvil sin gestionar certificados de pago ni desencriptar tokens en tu servidor. Puedes integrar vía SDK, usando el SDK nativo de Mercado Pago para iOS en tu aplicación para mostrar el botón Apple Pay, o vía API, implementando el flujo en tu backend y enviando desde la aplicación los datos que Apple devuelve. En ambos casos, Mercado Pago se encarga de la validación con Apple y devuelve un token listo para crear el pago.
sequenceDiagram
participant C as Comprador
participant A as App (iOS)
participant Apple as Apple
participant MP as Mercado Pago
A->>A: Comprobar disponibilidad (Apple Pay + tarjetas)
C->>A: Tocar botón Apple Pay
A->>Apple: Solicitud de pago (Touch ID/Face ID)
Apple-->>A: Token de pago de Apple
A->>MP: Crear token (SDK o API)
MP-->>A: Token de Mercado Pago
A->>A: Enviar token al backend
A->>MP: Crear pago (token + datos)
MP-->>A: Respuesta del pago
En esta integración utilizas el SDK nativo de Mercado Pago para iOS en tu aplicación. El SDK convierte el token de Apple en un card token de Mercado Pago; tu backend recibe ese token y crea el pago. Sigue los pasos a continuación para integrar.
Configura el Payment Processing Certificate en el Portal Apple Developer. Este certificado se utiliza para desencriptar los datos de pago que Apple envía a tu aplicación.
- En el Portal Apple Developer, ve a Certificates, Identifiers & Profiles > Identifiers, selecciona tu Merchant ID y configura el Payment Processing Certificate. Para el paso a paso completo, consulta Obtener los certificados de Apple Developer.
- Adjunta el archivo
.csrque genera Mercado Pago para tu integración y completa el flujo. - Descarga el certificado firmado y envíalo a Mercado Pago mediante un POST al endpoint certificates/certificate/uploadAPI. Consulta Obtener los certificados de Apple Developer para el paso a paso completo.
Utiliza el SDK nativo de Mercado Pago para integrar medios de pago en aplicaciones iOS. A continuación, te mostramos cómo realizar la instalación y la inicialización del SDK.
Instalar SDK
Consulta a continuación el paso a paso para instalar el SDK en tu proyecto Swift.
- En Swift Package Manager, haz clic en Archivo > Añadir paquetes.
- Pega la URL del repositorio:
https://github.com/mercadopago/sdk-ios. - Selecciona la versión deseada del SDK.
- Haz clic en Añadir paquete para completar la instalación.
Agregar dependencias
Importa las dependencias del SDK en tu proyecto ejecutando el siguiente código:
swift
import CoreMethods
Inicializar SDK
Después de instalar el SDK y agregar las dependencias a tu proyecto, inicializa el SDK al inicio del ciclo de vida de la aplicación. Esto garantiza que todas las configuraciones esenciales estén definidas antes de cualquier operación de pago.
Para garantizar el correcto funcionamiento, realiza una llamada a initialize() antes de utilizar cualquier otra funcionalidad del SDK. Para inicializar la biblioteca de Mercado Pago, es necesario utilizar tus credencialesClaves de acceso únicas que utilizamos para identificar una integración en tu cuenta, vinculadas a tu aplicación. Para más información, accede al enlace abajo.Credenciales, vinculadas a la aplicaciónEntidad registrada en Mercado Pago que actúa como un identificador para gestionar tus integraciones. Para más información, accede al enlace abajo.Detalles de la aplicación creada.
En esta etapa, deberás usar tu Public Key de pruebasClave pública de la aplicación creada en Mercado Pago, usada en el frontend. Puedes acceder a ella en Tus integraciones > Detalles de la aplicación > Pruebas > Credenciales de prueba..

import UIKit
import CoreMethods
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
let configuration = MercadoPagoSDK.Configuration(
publicKey: "YOUR-PUBLIC-KEY",
country: // Ingresa el país de tu clave pública
)
MercadoPagoSDK.shared.initialize(configuration)
return true
}
}
import SwiftUI
import CoreMethods
@main
struct YourApp: App {
init() {
let configuration = MercadoPagoSDK.Configuration(
publicKey: "<YOUR-PUBLIC-KEY>",
country: "<Ingresa el país de tu clave pública>",
locale: "es-AR"
)
MercadoPagoSDK.shared.initialize(configuration)
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Los parámetros de inicialización están listados en la siguiente tabla.
| Parámetro | Tipo | Descripción | Obligatoriedad |
public_key | String | Public Key de pruebasClave pública de la aplicación creada en Mercado Pago, usada en el frontend. Puedes acceder a ella en Tus integraciones > Detalles de la aplicación > Pruebas > Credenciales de prueba.. | Obligatorio |
locale | String | Identificador de locale (idioma y país). Por defecto, se utiliza el locale del sistema. | Opcional |
country | Country | Enum que identifica el país en el que se procesarán los Core Methods. Utiliza el código del país correspondiente a tu Public Key de pruebasClave pública de la aplicación creada en Mercado Pago. Puedes acceder a ella en Tus integraciones > Detalles de la aplicación > Pruebas > Credenciales de prueba.. Consulta la documentación para verificar el código correspondiente a tu país. | Obligatorio |
Para habilitar Apple Pay en tu aplicación, configura las capacidades necesarias en XcodeEntorno de desarrollo integrado (IDE) de Apple para crear aplicaciones para iOS, iPadOS, macOS, watchOS y tvOS.:
- En Xcode, selecciona el archivo del proyecto en el Project Navigator y el Target principal de la aplicación.
- Ve a la pestaña Signing & Capabilities y haz clic en + Capability.
- En el buscador, escribe "Apple Pay" y añade la capacidad.
- En la sección Apple Pay, selecciona el Merchant ID que creaste en el Portal Apple Developer. Si no aparece, actualiza la lista utilizando el ícono de flecha circular.

Antes de mostrar el botón de Apple Pay, es necesario comprobar que el dispositivo del usuario sea compatible y que tenga al menos una tarjeta configurada en la aplicación Wallet. Ejecuta el siguiente código para realizar la comprobación y, luego, mostrar el botón.
swift
import MPApplePay import PassKit import UIKit class YourCheckoutViewController: UIViewController { let applePayButton: PKPaymentButton = PKPaymentButton(paymentButtonType: .plain, paymentButtonStyle: .black) let mpApplePay: MPApplePay = .init() override func viewDidLoad() { super.viewDidLoad() applePayButton.isHidden = !MPApplePay.canMakePayments() applePayButton.addTarget(self, action: #selector(handleApplePayButton), for: .touchUpInside) } }
Personalización del botón
Puedes cambiar el tipo y el estilo del botón en el inicializador PKPaymentButton(paymentButtonType:paymentButtonStyle:). Para más opciones de aspecto y de la interfaz de Apple Pay, consulta la documentación oficial de Apple.
En el método que se ejecuta al tocar el botón de Apple Pay, crea la solicitud de pago con los datos de la transacción, configura los ítems del resumen y presenta la hoja de Apple PayPantalla modal que Apple muestra al comprador con el resumen del pago, la tarjeta seleccionada y la solicitud de autorización con Touch ID o Face ID.. Consulta los elementos a completar en la tabla que se muestra a continuación.
@objc
func handleApplePayButton() {
let request = MPApplePay.paymentRequest(
withMerchantIdentifier: "merchant.tu-identificador",
currency: "BRL"
)
let item = PKPaymentSummaryItem(
label: "Nombre del producto",
amount: NSDecimalNumber(value: 10),
type: .final
)
let totalItem = PKPaymentSummaryItem(
label: "TU TIENDA",
amount: NSDecimalNumber(value: 10),
type: .final
)
request.paymentSummaryItems = [item, totalItem]
let paymentController = PKPaymentAuthorizationController(paymentRequest: request)
paymentController.delegate = self
paymentController.present()
}
| Elemento | Tipo | Descripción | Obligatoriedad |
withMerchantIdentifier | String | Merchant ID que configuraste en el Portal Apple Developer. Debe coincidir con el de tu aplicación. | Obligatorio |
currency | String | Código de moneda de la transacción, por ejemplo BRL o ARS. | Obligatorio |
PKPaymentSummaryItem | Object | Cada ítem del resumen que ve el comprador: label (nombre del producto o del comercio), amount (monto) y type (por ejemplo .final). | Obligatorio |
paymentSummaryItems | Array | Lista de ítems del resumen. El último ítem de la lista debe ser el total de la compra; su label suele ser el nombre de tu comercio. | Obligatorio |
PKPaymentAuthorizationController | Object | Controlador de Apple que muestra la hoja de pago. Se crea con la solicitud, se asigna el delegate para recibir el resultado y se presenta con present(). | Obligatorio |
Implementa el método PKPaymentAuthorizationControllerDelegate para recibir el token de Apple, convertirlo en card token con el SDK y enviarlo a tu backend.
extension YourCheckoutViewController: PKPaymentAuthorizationControllerDelegate {
func paymentAuthorizationController(
_ controller: PKPaymentAuthorizationController,
didAuthorizePayment payment: PKPayment,
handler completion: @escaping (PKPaymentAuthorizationResult) -> Void
) {
Task {
do {
let response = try await mpApplePay.createToken(
payment.token
)
// envie pro seu backend o token para realizar pagamento
await sendYourBackend(response.token)
completion(
PKPaymentAuthorizationResult(
status: .success,
errors: nil
)
)
} catch {
completion(
PKPaymentAuthorizationResult(
status: .failure,
errors: [error]
)
)
}
}
}
func paymentAuthorizationControllerDidFinish(
_ controller: PKPaymentAuthorizationController
) {
controller.dismiss()
}
}
| Elemento | Tipo | Descripción | Obligatoriedad |
paymentAuthorizationController(_:didAuthorizePayment:handler:) | Método | Método del delegate que Apple llama cuando el comprador autoriza el pago. Recibes controller, payment (con el token de Apple) y completion para notificar el resultado. | Obligatorio |
payment.token | Object | Token de pago que Apple entrega en payment. Se envía a mpApplePay.createToken(payment.token). | Obligatorio |
mpApplePay.createToken(payment.token) | Método | Convierte el token de Apple en card token de Mercado Pago. Devuelve un objeto con response.token. | Obligatorio |
response.token | String | Card token de Mercado Pago. Envíalo a tu backend con sendToBackend(response.token) para crear el pago. | Obligatorio |
completion(PKPaymentAuthorizationResult(status:errors:)) | Callback | Parámetro de finalización que Apple te entrega en el delegate: es el callback que debes invocar con .success y errors: nil si hubo éxito, o con .failure y errors: [error] si hubo un error. Esto permite a Apple cerrar la hoja con el estado correcto. | Obligatorio |
paymentAuthorizationControllerDidFinish(_:) | Método | Método que Apple llama al cerrar la hoja. Cierra el controlador con controller.dismiss(). | Obligatorio |
Puedes simular distintos resultados de pago en desarrollo pasando el parámetro status al crear el token:
let response = try await mpApplePay.createToken(
payment.token,
status: "APRO"
)
Valor status | Escenario de pago |
APRO | Pago aprobado |
OTHE | Rechazado por error general |
CONT | Pendiente de pago |
CALL | Rechazado con validación para autorizar |
FUND | Rechazado por importe insuficiente |
SECU | Rechazado por código de seguridad inválido |
EXPI | Rechazado por fecha de vencimiento |
FORM | Rechazado por error de formulario |
CARD | Rechazado por falta de card_number |
INST | Rechazado por cuotas inválidas |
DUPL | Rechazado por pago duplicado |
LOCK | Rechazado por tarjeta deshabilitada |
CTNA | Rechazado por tipo de tarjeta no permitida |
ATTE | Rechazado por intentos excedidos del PIN |
BLAC | Rechazado por estar en lista negra |
UNSU | No soportado |
TEST | Usado para aplicar regla de montos |
