Primeros pasos
Asegúrate de tener la Demo App instalada en el dispositivo SmartPOS del Kit de Desarrollo. Esta app puede servir como referencia en la integración.
Para usar el SDK, sigue estos pasos:
- Agrega la biblioteca del Kit de Desarrollo en el directorio app/libs.
- Incluye la dependencia para la biblioteca en el archivo .gradle del módulo en el que se usará el SDK. Así:
gradle
dependencies {
....
implementation files("libs/nativesdk-0.1.0.aar")
...
}
La configuración correcta de metadata en el archivo AndroidManifest.xml es crucial para garantizar el funcionamiento óptimo y la integración completa de nuestro SDK en tu aplicación. La metadata permite definir configuraciones esenciales y personalizadas que el SDK necesita para operar adecuadamente, adaptándose a las necesidades específicas de cada aplicación y su entorno de uso. Para ello, configure las siguientes información:
- CLIENT_ID: para identificar las transacciones de los integradores, indica la credencial Client ID que fue asignada a la aplicación creada en el Panel del desarrollador.
xml
<application ...> <meta-data android:name="com.mercadolibre.android.sdk.CLIENT_ID" android:value="123456789L" /> <!-- Otras configuraciones de la aplicación --> </application>
- OAUTH_ENABLED: utiliza el campo
OAUTH_ENABLED
para activar el protocolo de autorización OAuth, que es necesario cuando los dispositivos se utilizarán con cuentas diferentes a la del desarrollador de la aplicación. Este campo es opcional y, si no se agrega en la metadata, se considerará el valor predeterminadofalse
.
xml
<application ...> <meta-data android:name="com.mercadolibre.android.sdk.OAUTH_ENABLED" android:value="true" /> <!-- Otras configuraciones de la aplicación --> </application>
Aún en el archivo AndroidManifest.xml, define la actividad principal que se establecerá como launcher de la app. Agrega los siguientes
intent-filter
:
xml
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
- Crea la clase heredada de la clase Application de Android e ingresa la configuración del SDK:
class MainApplication : Application() {
override fun onCreate() {
super.onCreate()
val config = MPConfigBuilder(this, "123456789")
.withBluetoothConfig()
.withBluetoothUIConfig()
.build()
MPManager.initialize(this, config)
}
}
public class MainApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
MPConfig config = new MPConfigBuilder(this, "123456789")
.withBluetoothConfig()
.withBluetoothUIConfig()
.build();
MPManager.INSTANCE.initialize(this, config);
}
}
- Empieza a usar el SDK para procesar pagos:
val paymentFlow = MPManager.paymentFlow
val uriSuccess = paymentFlow.buildCallbackUri(
"mercadopago://launcher_native_app",
"success",
hashMapOf("attr" to "123"),
"demo_app"
)
val uriError = paymentFlow.buildCallbackUri(
"mercadopago://launcher_native_app",
"error",
hashMapOf("attr" to "456"),
"demo_app"
)
paymentFlow.launchPaymentFlowActivity(
amount,
description,
uriSuccess,
uriError,
context,
lastPaymentMethodSelected
) { response ->
response.doIfError { error ->
error.message?.let { errorMessage -> setLayoutError(errorMessage) }
}
}
PaymentFlow paymentFlow = MPManager.INSTANCE.getPaymentFlow();
HashMap<String, String> metadata = new HashMap<>();
Uri uriSuccess = paymentFlow.buildCallbackUri(
"mercadopago://launcher_native_app",
"success",
metadata,
"demo_app"
);
Uri uriError = paymentFlow.buildCallbackUri(
"mercadopago://launcher_native_app",
"error",
metadata,
"demo_app"
);
Function1<MPResponse, Unit> callback = (MPResponse response) -> {
return;
};
paymentFlow.launchPaymentFlowActivity(
"1",
"My Payment Description",
uriSuccess,
uriError,
getApplicationContext(),
"credit",
callback
);