Integração via Mercado Pago para aplicações móveis
Este modelo permite oferecer Apple Pay na sua aplicação móvel sem gerenciar certificados de pagamento nem descriptografar tokens no seu servidor. Você pode integrar via SDK, usando o SDK nativo do Mercado Pago para iOS na sua aplicação para exibir o botão Apple Pay, ou via API, implementando o fluxo no seu backend e enviando da aplicação os dados que a Apple devolve. Em ambos os casos, o Mercado Pago faz a validação com a Apple e devolve um token pronto para criar o pagamento.
sequenceDiagram
participant C as Comprador
participant A as App (iOS)
participant Apple as Apple
participant MP as Mercado Pago
A->>A: Verificar disponibilidade (Apple Pay + cartões)
C->>A: Tocar no botão Apple Pay
A->>Apple: Solicitação de pagamento (Touch ID/Face ID)
Apple-->>A: Token de pagamento da Apple
A->>MP: Criar token (SDK ou API)
MP-->>A: Token do Mercado Pago
A->>A: Enviar token ao backend
A->>MP: Criar pagamento (token + dados)
MP-->>A: Resposta do pagamento
Nesta integração você utiliza o SDK nativo do Mercado Pago para iOS na sua aplicação. O SDK converte o token da Apple em um card token do Mercado Pago; seu backend recebe esse token e cria o pagamento. Siga os passos a seguir para integrar.
Use o SDK nativo do Mercado Pago para integrar meios de pagamento em aplicações iOS. A seguir, mostramos como fazer a instalação e a inicialização do SDK.
Instalar o SDK
Consulte o passo a passo para instalar o SDK no seu projeto Swift.
- No Swift Package Manager, clique em File > Add Package Dependencies.
- Cole a URL do repositório:
https://github.com/mercadopago/sdk-ios. - Selecione a versão desejada do SDK.
- Clique em Add Package para concluir a instalação.
Adicionar dependências
Importe as dependências do SDK no seu projeto executando o código a seguir:
plain
import CoreMethods
Inicializar o SDK
Depois de instalar o SDK e adicionar as dependências ao seu projeto, inicialize o SDK no início do ciclo de vida da aplicação. Isso garante que todas as configurações essenciais estejam definidas antes de qualquer operação de pagamento.
Para garantir o funcionamento correto, faça uma chamada a initialize() antes de usar qualquer outra funcionalidade do SDK. Para inicializar a biblioteca do Mercado Pago, é necessário usar suas credenciaisChaves de acesso únicas que usamos para identificar uma integração na sua conta, vinculadas à sua aplicação. Para mais informações, acesse o link abaixo.Credenciais, vinculadas à aplicaçãoEntidade registrada no Mercado Pago que atua como identificador para gerenciar suas integrações. Para mais informações, acesse o link abaixo.Detalhes da aplicação criada.
Nesta etapa, você deve usar sua Public Key de testesChave pública da aplicação criada no Mercado Pago, usada no frontend. Você pode acessá-la em Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste..

Copie a Public Key de testesChave pública da aplicação criada no Mercado Pago, usada no frontend. Você pode acessá-la em Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste. e inclua-a no código a seguir. O processo de inicialização varia conforme a tecnologia usada, seja UIKit ou SwiftUI.
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: // Insira o país da sua chave 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: "<Insira o país da sua chave pública>",
locale: "pt-BR"
)
MercadoPagoSDK.shared.initialize(configuration)
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Os parâmetros de inicialização estão listados na tabela a seguir.
| Parâmetro | Tipo | Descrição | Obrigatoriedade |
public_key | String | Public Key de testesChave pública da aplicação criada no Mercado Pago, usada no frontend. Você pode acessá-la em Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste.: usada no frontend para acessar as informações. | Obrigatório |
locale | String | Identificador de locale (idioma e país). Por padrão, é usado o locale do sistema. | Opcional |
country | Country | Enum que identifica o país em que os Core Methods serão processados. Use o código do país correspondente à sua Public Key de testesChave pública da aplicação criada no Mercado Pago. Você pode acessá-la em Suas integrações > Detalhes da aplicação > Testes > Credenciais de teste.. Consulte a documentação para verificar o código do seu país. | Obrigatório |
Para habilitar o Apple Pay na sua aplicação, configure as capacidades necessárias no XcodeAmbiente de desenvolvimento integrado (IDE) da Apple para criar aplicações para iOS, iPadOS, macOS, watchOS e tvOS.:
- No Xcode, selecione o arquivo do projeto no Project Navigator e o Target principal da aplicação.
- Vá à aba Signing & Capabilities e clique em + Capability.
- Na busca, digite "Apple Pay" e adicione a capacidade.
- Na seção Apple Pay, selecione o Merchant ID que você criou no Portal Apple Developer. Se não aparecer, atualize a lista usando o ícone de seta circular.

Antes de exibir o botão do Apple Pay, é necessário verificar se o dispositivo do usuário é compatível e se tem pelo menos um cartão configurado na aplicação Wallet. Para isso, execute o código a seguir.
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)
}
}
Personalização do botão
Você pode alterar o tipo e o estilo do botão no inicializador PKPaymentButton(paymentButtonType:paymentButtonStyle:). Para mais opções de aparência e da interface do Apple Pay, consulte a documentação oficial da Apple.
No método executado ao tocar no botão do Apple Pay, crie a solicitação de pagamento com os dados da transação, configure os itens do resumo e apresente a tela do Apple PayTela modal que a Apple exibe ao comprador com o resumo do pagamento, o cartão selecionado e a solicitação de autorização com Touch ID ou Face ID.. Consulte os elementos a preencher na tabela a seguir.
@objc
func handleApplePayButton() {
let request = MPApplePay.paymentRequest(
withMerchantIdentifier: "merchant.seu-identificador",
currency: "BRL"
)
let item = PKPaymentSummaryItem(
label: "Nome do produto",
amount: NSDecimalNumber(value: 10),
type: .final
)
let totalItem = PKPaymentSummaryItem(
label: "SUA LOJA",
amount: NSDecimalNumber(value: 10),
type: .final
)
request.paymentSummaryItems = [item, totalItem]
let paymentController = PKPaymentAuthorizationController(paymentRequest: request)
paymentController.delegate = self
paymentController.present()
}
| Elemento | Tipo | Descrição | Obrigatoriedade |
withMerchantIdentifier | String | Merchant ID que você configurou no Portal Apple Developer. Deve coincidir com o da sua aplicação. | Obrigatório |
currency | String | Código da moeda da transação, por exemplo BRL ou ARS. | Obrigatório |
PKPaymentSummaryItem | Object | Cada item do resumo que o comprador vê: label (nome do produto ou do comércio), amount (valor) e type (por exemplo .final). | Obrigatório |
paymentSummaryItems | Array | Lista de itens do resumo. O último deve ser o total da compra; o label costuma ser o nome da sua loja. | Obrigatório |
PKPaymentAuthorizationController | Object | Controlador da Apple que exibe a tela de pagamento. É criado com a solicitação, o delegate é atribuído para receber o resultado e é apresentado com present(). | Obrigatório |
Implemente o método PKPaymentAuthorizationControllerDelegate para receber o token da Apple, convertê-lo em card token com o SDK e enviá-lo ao seu 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 ao seu backend o token para realizar o 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 | Descrição | Obrigatoriedade |
paymentAuthorizationController(_:didAuthorizePayment:handler:) | Método | Método do delegate que a Apple chama quando o comprador autoriza o pagamento. Você recebe controller, payment (com o token da Apple) e completion para notificar o resultado. | Obrigatório |
payment.token | Object | Token de pagamento que a Apple entrega em payment. É enviado a mpApplePay.createToken(payment.token). | Obrigatório |
mpApplePay.createToken(payment.token) | Método | Converte o token da Apple em card token do Mercado Pago. Devolve um objeto com response.token. | Obrigatório |
response.token | String | Card token do Mercado Pago. Envie-o ao seu backend com sendToBackend(response.token) para criar o pagamento. | Obrigatório |
completion(PKPaymentAuthorizationResult(status:errors:)) | Callback | Parâmetro de finalização que a Apple entrega no delegate: é o callback que você deve invocar com .success e errors: nil em caso de sucesso, ou com .failure e errors: [error] em caso de erro. Isso permite que a Apple feche a tela com o estado correto. | Obrigatório |
paymentAuthorizationControllerDidFinish(_:) | Método | Método que a Apple chama ao fechar a tela. Fecha o controlador com controller.dismiss(). | Obrigatório |
Você pode simular diferentes resultados de pagamento em desenvolvimento passando o parâmetro status ao criar o token:
let response = try await mpApplePay.createToken(
payment.token,
status: "APRO"
)
Valor status | Cenário de pagamento |
APRO | Pagamento aprovado |
OTHE | Rejeitado por erro geral |
CONT | Pendente de pagamento |
CALL | Rejeitado com validação para autorizar |
FUND | Rejeitado por valor insuficiente |
SECU | Rejeitado por código de segurança inválido |
EXPI | Rejeitado por data de vencimento |
FORM | Rejeitado por erro de formulário |
CARD | Rejeitado por falta de card_number |
INST | Rejeitado por parcelas inválidas |
DUPL | Rejeitado por pagamento duplicado |
LOCK | Rejeitado por cartão desabilitado |
CTNA | Rejeitado por tipo de cartão não permitido |
ATTE | Rejeitado por tentativas excedidas do PIN |
BLAC | Rejeitado por estar na lista negra |
UNSU | Não suportado |
TEST | Usado para aplicar regra de valores |
