Recomendaciones para mejorar la aprobaciĂłn de pagos
Para evitar que un pago legĂtimo sea rechazado por no cumplir con las validaciones de seguridad, es necesario incluir el mĂĄximo de informaciĂłn posible a la hora de realizar la operaciĂłn, asĂ como que tu checkout cuente con su interfaz optimizada.
Puedes ver en detalle nuestras recomendaciones para mejorar tu aprobaciĂłn a continuaciĂłn.
ObtĂ©n y envĂa el Device ID
El Device ID es una informaciĂłn importante para lograr una mejor seguridad y, en consecuencia, una mejor tasa de aprobaciĂłn de pagos. Representa un identificador Ășnico para el dispositivo de cada comprador en el momento de la compra.
Si un comprador frecuente hace una compra desde un dispositivo diferente al habitual, esto podrĂa representar un comportamiento atĂpico. Aunque puede no ser necesariamente un fraude, el Device ID nos ayuda a refinar la evaluaciĂłn y evitar el rechazo de pagos legĂtimos.
Puedes agregar el cĂłdigo de seguridad de Mercado Pago a tu sitio reemplazando el valor de view
con el nombre de la secciĂłn de tu web en la que deseas agregarlo. Si bien lo mĂĄs importante es hacerlo en la pĂĄgina del checkout, tambiĂ©n puedes hacerlo en otras pĂĄginas, tales como home, search o Ătem, ya que ayuda a enriquecer la informaciĂłn recolectada.
html
<script src="https://www.mercadopago.com/v2/security.js" view="home"></script>
Uso del Device ID en la web
Para usar el Device ID en la web y prevenir posibles compras fraudulentas, debes seguir los siguientes pasos:
1. Agrega nuestro cĂłdigo de seguridad
Para implementar la generaciĂłn del Device ID en tu sitio, agrega el siguiente cĂłdigo a tu pĂĄgina de Checkout:
html
<script src="https://www.mercadopago.com/v2/security.js" view="checkout"></script>
2. Obtén el device ID
Una vez que hayas agregado el cĂłdigo de seguridad de Mercado Pago a tu sitio, automĂĄticamente se crea una variable JavaScript global con el nombre MP_DEVICE_SESSION_ID
, cuyo valor es el ID del dispositivo.
Si prefieres asignarlo a otra variable, indica el nombre agregando el atributo output
al script de seguridad, como en el siguiente ejemplo:
html
<script src="https://www.mercadopago.com/v2/security.js" view="checkout" output="deviceId"></script>
También puedes crear tu propia variable agregando una etiqueta HTML a tu sitio con el identificador id="deviceID"
, como en el siguiente ejemplo:
html
<input type="hidden" id="deviceId">
3. Uso del device ID
Una vez que tengas el valor del Device ID, debes enviarlo a nuestros servidores al crear un pago. Para hacer esto, agrega el siguiente encabezado (header) a la solicitud:
html
X-meli-session-id: device_id
Implementa el Device ID en tu aplicaciĂłn mĂłvil nativa
Si tienes una aplicaciĂłn nativa, puedes capturar la informaciĂłn del dispositivo con nuestro SDK y enviarla al momento de crear el token. Sigue estos pasos:
1. Agrega la dependencia
use_frameworks!
pod âMercadoPagoDevicesSDKâ
Necesitas agregar el repositorio y la dependencia en el archivo build.gradle.
repositories {
maven {
url "https://artifacts.mercadolibre.com/repository/android-releases"
}
}
dependencies {
implementation 'com.mercadolibre.android.device:sdk:4.0.1'
}
2. Inicializa el mĂłdulo
Te recomendamos iniciarlo en el evento didFinishLaunchingWithOptions del AppDelegate.
import MercadoPagoDevicesSDK
...
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
...
MercadoPagoDevicesSDK.shared.execute()
...
}
Te recomendamos iniciarlo en el evento didFinishLaunchingWithOptions del AppDelegate.
@import âMercadoPagoDevicesSDKâ;
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
...
[[MercadoPagoDevicesSDK shared] execute];
...
}
Te recomendamos iniciarlo en la clase MainApplication.
import com.mercadolibre.android.device.sdk.DeviceSDK;
DeviceSDK.getInstance().execute(this);
3. Captura la informaciĂłn
Ejecuta alguna de estas funciones para obtener la informaciĂłn en el formato que prefieras.
MercadoPagoDevicesSDK.shared.getInfo() // devuelve un objeto Device que es Codable
MercadoPagoDevicesSDK.shared.getInfoAsJson() // devuelve un objeto Data de la librerĂa de JSON
MercadoPagoDevicesSDK.shared.getInfoAsJsonString() // devuelve el json en formato de String
MercadoPagoDevicesSDK.shared.getInfoAsDictionary() // devuelve un Dictionary<String,Any>
[[[MercadoPagoDevicesSDK] shared] getInfoAsJson] // devuelve un objeto Data de la librerĂa JSON
[[[MercadoPagoDevicesSDK] shared] getInfoAsJsonString] // devuelve el json en formato de String
[[[MercadoPagoDevicesSDK] shared] getInfoAsDictionary] // devuelve un Dictionary<String,Any>
Device device = DeviceSDK.getInstance().getInfo() // devuelve un objeto Device, serializable
Map deviceMap = DeviceSDK.getInstance().getInfoAsMap() // devuelve un Map<String, Object>
String jsonString = DeviceSDK.getInstance().getInfoAsJsonString() // devuelve un String de tipo Json
4. EnvĂa la informaciĂłn
Por Ășltimo, envĂa la informaciĂłn en el campo device
al crear el 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"
}
}
Detalla toda la informaciĂłn sobre el pago
Para optimizar la validaciĂłn de la seguridad de los pagos y mejorar sus aprobaciones, es valioso enviar la mayor cantidad posible de datos del comprador y del Ătem.
Puedes ver todos los atributos disponibles al crear un pago usando el método Crear pago. Presta especial atención a los atributos del nodo adicional_inf
, particularmente a:
- Datos del comprador,
- Datos del producto,
- Datos del envĂo.
Existen tambiĂ©n campos extra que pueden ser enviados dependiendo del ramo de actividades o industria de tu tienda. Puedes encontrar mĂĄs detalles sobre cada ramo y los datos del comprador y del envĂo que recomendamos incluir en cada uno de ellos aquĂ.
Mejora la experiencia del usuario
A menudo, el comprador puede cometer un error al completar sus datos en el checkout, asĂ que vale la pena revisar cada paso, posibles interacciones, e incluso el diseño, para comprobar que todo estĂ© tan claro como deberĂa ser.
En caso de que optes por crear tu front-end desde cero, puedes encontrar consejos para hacerlo de forma eficiente aquĂ. Si un pago resultara rechazado, es importante tambiĂ©n que expliques a tus clientes el motivo y quĂ© medidas pueden tomar para solucionarlo. De esta forma, tendrĂĄn toda la informaciĂłn que necesitan para pagar sin problemas. Puedes encontrar recomendaciones de mensajes para los principales motivos de rechazo aquĂ. Si, en cambio, quieres garantizar una interfaz optimizada, puedes utilizar los componentes visuales de Checkout Bricks, asĂ como aprovechar el componente visual ya listo con los mejores mensajes del Status Screen Brick.
Agrega el siguiente cĂłdigo en el archivo Podfile.