Framework Ionic
Para comenzar a operar localmente con Redelcom utilizando una App Ionic, sigue los pasos aquí debajo.
Instalar y configurar plugins
Para poder establecer la comunicación con el sistema RDCPass, deberás instalar los plugins como se muestra a continuación.
ionic
AppVersion => (https://ionicframework.com/docs/native/app-version) WebIntent => (https://ionicframework.com/docs/native/web-intent)
Una vez instalados, deberás iniciar la configuración añadiéndolos al app.modules.ts
como un servicio dentro del arreglo de providers del @NgModule({…})
:
ionic
import { WebIntent } from '@ionic-native/web-intent/ngx'; import { AppVersion } from '@ionic-native/app-version/ngx'; … providers: [ WebIntent, AppVersion ], …
Finaliza la configuración del entorno agregando la dependencia al constructor de la clase:
ionic
import { Component } from '@angular/core'; import { WebIntent, Intent } from '@ionic-native/web-intent/ngx'; import { AppVersion } from '@ionic-native/app-version/ngx'; … constructor( private intent: WebIntent , private app: AppVersion ) {…}
Enviar y recibir intent desde una App nativa en Android
Para procesar pagos, deberás primero implementar el método que te permitirá enviar un intent a una App nativa en Android:
ionic
startActivity(pay): void { this.app.getPackageName().then(async (value) => { const options = { action: this.intent.ACTION_SEND, package: value.toString(), extras: { packageName: value.toString(), className: `${value.toString()}.MainActivity`, monto: `${pay}` }, component: { package: 'redelcom.cl.rdcpass', class: 'redelcom.cl.rdcpass.MainActivity' }, }; this.intent.startActivity(options) .then((onSucces) => { this.getIntent(); }, (onError) => { console.log('error', onError); }); } ); }
Para poder obtener la respuesta a ese intent, implementa el siguiente método:
ionic
getIntent() { this.intent.getIntent().then(async (intentRDCPass: any) => { if (intentRDCPass.extras && intentRDCPass.action == this.intent.ACTION_SEND) { this.data = JSON.parse(intentRDCPass.extras['android.intent.extra.TEXT']); this.statusPay = this.data.ESTADO; // ARMAR UN OBJETO CON LOS DATOS DE RESPUESTA QUE SE REQUIERAN. let objWithData = { estado: this.data.ESTADO, total: this.data.TOTAL, propina: this.data.PROPINA, medio_pago: this.data.MEDIO_PAGO, codaut: this.data.CODAUT, fecha_hora: this.data['FECHA&HORA'], mensaje_visor: this.data.MENSAJE_VISOR, }; if (this.data.ESTADO == 'APROBADO') { // ACCIÓN PARA EL CASO APROBADO.... } else { // ACCIÓN PARA EL CASO RECHAZADO.... } } else { setTimeout(() => { this.getIntent(); }, 1000); } }); }
Por último, agrega el intent-filter (Activity) al AndroidManifest.xml
de la app compilada:
ionic
<intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/*" /> </intent-filter>
¡Y listo! Ya puedes comenzar a operar con Redelcom desde tu app Ionic.