O SDK nativo do Mercado Pago fornece uma solução robusta e segura para a integração de cartÔes, assegurando total conformidade com as normas PCI.
Para integrar o SDK do Mercado Pago ao seu projeto Android, siga as etapas descritas na documentação do SDK Nativo.
Configurar campos seguros
Os campos seguros sĂŁo componentes desenvolvidos para garantir a privacidade e a proteção dos dados sensĂveis digitados pelo comprador. Em total conformidade com os padrĂ”es PCIConjunto de regras de segurança que buscam proteger os dados dos cartĂ”es de pagamento contra fraudes e vazamentos de dados., esses campos asseguram que o aplicativo nunca tenha acesso direto Ă s informaçÔes inseridas, que sĂŁo transmitidas com segurança apenas para a criação de tokens e transaçÔes.
Os dados digitados nos campos seguros nunca ficam disponĂveis para a aplicação integradora. Eles sĂŁo encaminhados em segurança apenas para a criação de tokens e transaçÔes.
Na tabela abaixo, vocĂȘ encontrarĂĄ o detalhamento dos componentes disponĂveis. Para mais informaçÔes sobre a configuração, consulte a referĂȘncia correspondente a cada um deles no GitHub.
Campo seguro para digitar o código de segurança (CVV).
Core Methods
Os Core Methods são essenciais para a construção de um fluxo de checkout integrado ao Mercado Pago. Eles utilizam informaçÔes capturadas pelos campos seguros e viabilizam a execução das principais operaçÔes de pagamento.
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
// Se deve usar o bin retornado do CardNumberTextFieldEvent.OnBinChanged
val result = coreMethods.getPaymentMethods(bin = bin)
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
// Se deve usar o bin retornado do CardNumberTextFieldEvent.OnBinChanged
val result = coreMethods.getInstallments(
bin = bin,
amount = BigDecimal("100.00")
)
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
Utilize as informaçÔes do Installment para exibir ao comprador todos os detalhes do valor e do parcelamento da compra, antes da finalização do pagamento.
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
// Se deve usar o bin retornado do CardNumberTextFieldEvent.OnBinChanged
// Se deve usar o paymentMethodId retornado da request de PaymentMethods
val result = coreMethods.getCardIssuers(
bin = bin,
paymentMethodId = paymentMethodId,
)
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
val result = coreMethods.getIdentificationTypes()
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
val result = coreMethods.generateCardToken(
cardNumberState = cardNumberPCIFieldState,
expirationDateState = expirationDatePCIFieldState,
securityCodeState = securityCodePCIFieldState,
buyerIdentification = BuyerIdentification(
name = "APRO",
number = "12345678909",
type = "CPF"
)
)
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
val coreMethods = MercadoPagoSDK.getInstance().coreMethods
coroutineScope {
val result = coreMethods.generateCardToken(
cardId = cardId,
expirationDateState = expirationDatePCIFieldState,
securityCodeState = securityCodePCIFieldState,
buyerIdentification = BuyerIdentification(
name = "APRO",
number = "12345678909",
type = "CPF"
)
)
when (result) {
is Result.Success -> {
// Sucesso da chamada
print("Sucesso de request: ${result.data}")
}
is Result.Error -> {
when (result.error) {
is ResultError.Request -> {
// Erro da chamada do tipo request
print("Erro de request: ${result.error}")
}
is ResultError.Validation -> {
// Erro da chamada do tipo validation
print("Erro de validação: ${result.error}")
}
}
}
}
}
Veja na tabela abaixo as descriçÔes dos parùmetros que possuem alguma particularidade importante de ser destacada:
Atributo
Tipo
Descrição
Obrigatoriedade
Authorization
Header
Faz referĂȘncia Ă sua chave privada, o Access Token.
ObrigatĂłrio
X-Idempotency-Key
Header
Chave de idempotĂȘncia. Essa chave garante que cada solicitação seja processada apenas uma vez, evitando duplicidades. Use um valor exclusivo no header da requisição, como um UUID V4 ou uma string aleatĂłria.
Custo do produto. Para Chile, deve ser um nĂșmero inteiro.
ObrigatĂłrio
installments
Body.String
NĂșmero de parcelas selecionado.
ObrigatĂłrio
payment_method_id
Body.String
Indica o identificador do meio de pagamento selecionado para efetuar o pagamento. Obtenha todos os meios de pagamento disponĂveis enviando um GET ao endpoint /v1/payment_methods da API.
ObrigatĂłrio
payer.email
Body.String
Email associado ao pagador.
ObrigatĂłrio
Para conhecer em detalhe todos os parĂąmetros enviados nesta requisição, consulte a ReferĂȘncia de API.
Exemplos e referĂȘncias
Para aprofundar o entendimento sobre a implementação e utilização do SDK, consulte o repositório no GitHub.