Para este proyecto se integro como método de cobro con tarjeta presente el SDK de NetPay mini, a continuación dejo la documentación oficial: , la cual se siguió para integrar el SDK.
A continuación menciono los pasos:
1. Agregando Jitpack
Agrega la url ¨https://jitpack.io¨ dentro del bloque repositorios (repositories) en tu archivo build.gradle ubicado en la raíz de tu proyecto.
Implementación:
maven { url 'https://jitpack.io' }
2. Importando el SDK de MINI para Android
Dentro del archivo build.gradle en el módulo de la aplicación (module:app) importa la. librería dentro del bloque de dependencias (dependencies).
Implementación:
implementation "com.gitlab.netpaymx.netpay-sdks:mini:1.1.2@aar"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
implementation "com.squareup.okhttp3:okhttp:4.9.3"
implementation "com.squareup.retrofit2:converter-moshi:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.okhttp3:logging-interceptor:4.9.2"
implementation "com.github.gcacace:signature-pad:1.3.1"
implementation "com.squareup.moshi:moshi:1.12.0"
3. Concediendo los permisos requeridos
Configura el archivo AndroidManifest.xml para conceder a la aplicación los permisos requeridos.
Implementation:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
4. Implementando las interfaces
Crea una actividad (activity) que implemente las siguientes interfaces: ITransactionListener, IReportsListener y sus métodos correspondientes.
Implementación
class KotlinActivity : AppCompatActivity(), ITransactionListener, IReportsListener, IPasswordListener { override fun selectedAppAction(apps: List<String>, action: (Int) -> Unit) { TODO("Not yet implemented") } override fun valuesToProcessing(values: (total: Double, tip: Double, reference: String, promotion: String) -> Unit) { TODO("Not yet implemented") } override fun transactionsResult(message: String, processed: Boolean) { TODO("Not yet implemented") } override fun posTransactionEnumResult(result: NpTransactionEnum) { TODO("Not yet implemented") } override fun reverseResult(message: String, processed: Boolean) { TODO("Not yet implemented") } override fun refundResult(message: String, processed: Boolean) { TODO("Not yet implemented") } override fun errorResult(npErrorEnum: NpErrorEnum) { TODO("Not yet implemented") } override fun provideSignaturePathResult(intent: Intent) { TODO("Not yet implemented") } override fun startingPaymentProcessing() { TODO("Not yet implemented") } override fun imageResult(processed: Boolean, image: String?, message: String?) { TODO("Not yet implemented") } override fun changePassword( isSuccess: Boolean, messageError: String?, result: RecoverPasswordResponse? ) { TODO("Not yet implemented") } override fun reportSalesByDateAndUserResult( processed: Boolean, message: String?, reportSales: List<ResponseSale>? ) { TODO("Not yet implemented") } override fun reportSaleDetailsResult(response: ResponseSaleDetail?, success: Boolean) { TODO("Not yet implemented") } }
Con esto ya se tendria completo la integración y solo faltaría la lógica del sdk el cual se puede seguir en la siguiente liga: , al igual les dejo el codigo de ejemplo que se utilizo para hacer la implementación .