Melhore a aprovação de seus pagamentos
Ao realizar um pagamento online, a transação passa por uma análise criteriosa para minimizar riscos de fraude e garantir que o processamento ocorra sem erros.
Nesta documentação você encontrará informações sobre o que leva um pagamento a ser recusado e algumas recomendações para evitar que isso aconteça.
Por que um pagamento é recusado?
Um pagamento pode ser recusado por um erro com o meio de pagamento ou porque não preenche os requisitos de segurança necessários. Por exemplo, se o cartão não tiver saldo suficiente ou se houver uma movimentação não usual da conta.
Motivos de recusa
A recusa de pagamentos é uma realidade no mundo das vendas online e pode acontecer por diversas razões: preenchimento incorreto das informações por parte do cliente, tentativa de fraude, problema na comunicação entre adquirentes e subadquirentes, entre muitas outras questões.
Você pode encontrar as informações e checar o estado de um pagamento via API, através do método Obter pagamento. O campo status
indica se o pagamento foi ou não aprovado, enquanto o campo status_detail
traz mais detalhes, incluindo os motivos de recusa.
Erros de preenchimento pelo comprador
Este é um dos principais motivos para que um pagamento seja recusado. Muitas vezes o comprador pode errar na hora de preencher seus dados, principalmente os de endereço, CPF e números do cartão.
Nestes casos o campo status_detail
poderá retornar: cc_rejected_bad_filled_date
, cc_rejected_bad_filled_other
, cc_rejected_bad_filled_security_code
Pagamentos recusados pelo banco
Ao realizar um pagamento com cartão de crédito ou débito, por exemplo, o banco emissor pode recusar a cobrança por diferentes motivos como a data de validade expirada, saldo ou limite insuficientes, cartão desabilitado ou bloqueado para compras online.
Nestes casos o campo status_detail
poderá retornar: cc_rejected_call_for_authorize
, cc_rejected_card_disabled
, cc_rejected_duplicated_payment
, cc_rejected_insufficient_amount
Prevenção contra fraudes
Ao realizar um pagamento, uma série de verificações é feita tanto pelo banco quanto pelo Mercado Pago, e caso nosso sistema antifraudes detecte algum tipo de movimentação incomum ou que caracterize algum tipo de golpe ou fraude, ele é bloqueado.
Nestes casos o campo status_detail
poderá retornar: cc_rejected_blacklist
, cc_rejected_high_risk
Recomendações para melhorar sua aprovação
Para evitar que um pagamento legítimo seja recusado por não atender as validações de segurança, é necessário incluir todas as informações possíveis na hora de realizar a operação e também se atentar a alguns requisitos de segurança, como nosso Código de Segurança e o Device ID.
Detalhar todas as informações sobre o pagamento
Para otimizar a validação de segurança dos pagamentos e melhorar as aprovações, é importante fazer o envio do máximo de dados sobre o comprador e do item.
Se atente a todos os atributos disponíveis ao criar um pagamento usando o método Criar pagamento.
Configurar as preferências
Você pode adaptar a integração do Checkout Pro ao seu modelo de negócio configurando atributos de preferência, que auxiliam na melhoria das aprovações.
Veja mais detalhes acessando a documentação de configurações de preferência do Checkout Pro.
Melhorar a experiência do usuário
Muitas vezes o comprador pode errar na hora de preencher seus dados no checkout. Por isso, vale a pena revisar cada passo, interações e até design, para checar se tudo está claro como deveria. Faça as alterações necessárias para impedir qualquer confusão ou problema.
Auxilie os seus clientes com seus pagamentos recusados
É importante que você explique aos seus clientes o motivo de recusa do pagamento e que ação pode realizar para solucioná-lo. Seus clientes terão todas as informações necessárias para pagar sem problemas.
Por exemplo, se um pagamento for recusado por fundos insuficientes, poderá recomendar a eles que tentem novamente com outro meio de pagamento para completar a operação.
Adicionar o código de segurança
Adicione o código de segurança do Mercado Pago na sua página, substituindo o valor de view
pelo nome da seção na qual deseja adicioná-lo (Ex.: home, search, item).
html
<script src="https://www.mercadopago.com/v2/security.js" view="home"></script>
Utilizar informações do device ID na web
O Device ID é uma informação importante para garantir uma melhor segurança e, consequentemente, uma melhor taxa de aprovação de pagamentos. Ele representa um identificador único para cada dispositivo do comprador no momento da compra.
Caso um comprador frequente faça uma compra a partir de um dispositivo diferente do habitual, isso pode representar um comportamento fraudulento e nos indicar que essa transação não deve ser efetivada.
Para usá-lo na Web é preciso seguir os passos abaixo:
1. Adicione o script de segurança do Mercado Pago
Para implementar a geração do device ID em seu site, adicione o seguinte código na sua página de Checkout:
html
<script src="https://www.mercadopago.com/v2/security.js" view="checkout"></script>
2. Obtendo o device ID
Uma vez que você tenha adicionado o código de segurança do Mercado Pago em seu site, uma variável global de javascript é criada automaticamente com o nome MP_DEVICE_SESSION_ID
, cujo valor é o device ID.
- Se você preferir atribuí-lo a outra variável, indique o nome adicionando o atributo output ao script de segurança, como no exemplo a seguir:
html
<script src="https://www.mercadopago.com/v2/security.js" view="checkout" output="deviceId"></script>
- Você também pode criar sua própria variável, bastando adicionar uma tag HTML no seu site com o identificado
id="deviceID"
, como no exemplo abaixo.
html
<input type="hidden" id="deviceId">
3. Utilizando o Device ID
Uma vez que você tenha o valor de Device ID, é preciso que você o envie aos nossos servidores ao criar um pagamento. Para isso, basta acrescentar o seguinte cabeçalho (header) à requisição:
http
X-meli-session-id: device_id
Utilizar Device ID em aplicações móveis
Se você possui uma aplicação móvel nativa, pode capturar a informação do dispositivo com nosso SDK e enviar no momento de criar o token. Siga estas etapas:
1. Adicione a dependência
use_frameworks!
pod ‘MercadoPagoDevicesSDK’
Você precisa adicionar o repositório e a dependência no arquivo build.gradle.
repositories {
maven {
url "https://artifacts.mercadolibre.com/repository/android-releases"
}
}
dependencies {
implementation 'com.mercadolibre.android.device:sdk:3.0.5'
}
2. Inicialize o módulo
Recomendamos realizar a inicialização no envento didFinishLaunchingWithOptions do AppDelegate.
import MercadoPagoDevicesSDK
...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
MercadoPagoDevicesSDK.shared.execute()
...
}
Recomendamos realizar a inicialização no envento didFinishLaunchingWithOptions do AppDelegate.
@import ‘MercadoPagoDevicesSDK’;
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[[MercadoPagoDevicesSDK shared] execute];
...
}
Recomendamos realizar a inicialização na classe MainApplication.
import com.mercadolibre.android.device.sdk.DeviceSDK;
DeviceSDK.getInstance().execute(this);
3. Capture a informação
Execute alguma das funções abaixo para obter a informação no formato que precisar.
MercadoPagoDevicesSDK.shared.getInfo() // Devolve um objeto Device que é Codificável
MercadoPagoDevicesSDK.shared.getInfoAsJson() // Devolve um objeto em JSON
MercadoPagoDevicesSDK.shared.getInfoAsJsonString() // Devolve o JSON em formato de String
MercadoPagoDevicesSDK.shared.getInfoAsDictionary() // Devolve um objeto Dictionary<String,Any>
[[[MercadoPagoDevicesSDK] shared] getInfoAsJson] // Devolve um objeto em JSON
[[[MercadoPagoDevicesSDK] shared] getInfoAsJsonString] // Devolve o JSON em formato de String
[[[MercadoPagoDevicesSDK] shared] getInfoAsDictionary] // Deolve um objeto Dictionary<String,Any>
Device device = DeviceSDK.getInstance().getInfo() // Devolve um objeto Device, que é serializável
Map deviceMap = DeviceSDK.getInstance().getInfoAsMap() // Devolve um Map<String, Object>
String jsonString = DeviceSDK.getInstance().getInfoAsJsonString() // Devolve uma String no formato JSON
4. Envie a informação
Por último, envie a informação obtida no campo device
ao criar o card_token
.
plain
{
...,
"device":{
"fingerprint":{
"os":"iOS",
"system_version":"8.3",
"ram":18446744071562067968,
"disk_space":498876809216,
"model":"MacBookPro9,2",
"free_disk_space":328918237184,
"vendor_ids":[
{
"name":"vendor_id",
"value":"C2508642-79CF-44E4-A205-284A4F4DE04C"
},
{
"name":"uuid",
"value":"AB28738B-8DC2-4EC2-B514-3ACF330482B6"
}
],
"vendor_specific_attributes":{
"feature_flash":false,
"can_make_phone_calls":false,
"can_send_sms":false,
"video_camera_available":true,
"cpu_count":4,
"simulator":true,
"device_languaje":"en",
"device_idiom":"Phone",
"platform":"x86_64",
"device_name":"iPhone Simulator",
"device_family":4,
"retina_display_capable":true,
"feature_camera":false,
"device_model":"iPhone Simulator",
"feature_front_camera":false
},
"resolution":"375x667"
}
}
Adicionar o seguinte código no arquivo Podfile.