[DEPRECATED] Consulta de Lotes vía API¶
Esta es una consulta a través de Content Provider que permite que otras aplicaciones consulten información sobre los lotes, lo que permite realizar filtros exclusivos y obtener diferentes datos de lotes según el objeto devuelto (ver Cierre de lotes).
Integración con la aplicación de pago a través de Content Provider¶
Solo se permitirá listar los pagos realizados por la aplicación que está realizando la consulta.
Declare este permiso en el archivo AndroidManifest.xml de su aplicación para obtener acceso al Content Provider.
<uses-permission android:name="br.com.phoebus.android.payments.provider.READ_PERMISSION"/>
content://br.com.phoebus.android.payments.provider/periodBatch content://br.com.phoebus.android.payments.provider/batchNumber content://br.com.phoebus.android.payments.provider/currentBatch
URI (Uniform Resource Identifier) para información de lote.
Para realizar la solicitud de consulta por período entre fechas es necesario agregar esta dependencia.
implementation 'com.jakewharton.threetenabp:threetenabp:1.0.3'
Filtros¶
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
batchFilter |
BatchFilter |
Sí | Informa qué tipo de filtro de lotes se solicita. |
startDate |
Date |
No | Filtra lotes cuya fecha es mayor o igual al valor pasado, requerido cuando BatchFilter.PERIOD_BATCH. |
finishDate |
Date |
No | Filtra lotes cuya fecha es menor o igual al valor pasado, requerido cuando BatchFilter.PERIOD_BATCH. |
batchNumber |
Long |
No | Filtrar lotes por número específico, campo obligatorio cuando BatchFilter.BATCH_NUMBER. |
BatchFilter¶
| Nombre | Descripción |
|---|---|
CURRENT_BATCH |
Lote actual. |
LAST_CLOSED_BATCH |
Último lote cerrado. |
BATCH_NUMBER |
Número de lote específico. |
PERIOD_BATCH |
Lote por fecha y hora de inicio y fecha y hora de finalización. |
Retorno¶
El objeto de respuesta es el List<SettlementCallbackV2> (ver Cierre de lote).
Info
Para facilitar el uso, se encuentran disponibles clases de acceso al proveedor:
BatchProviderRequestBatchProviderApiBatchContract
Ejemplo¶
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.jakewharton.threetenabp.AndroidThreeTen;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
import br.com.phoebus.android.payments.api.ApplicationInfo;
import br.com.phoebus.android.payments.api.Credentials;
import br.com.phoebus.android.payments.api.Payment;
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.PaymentStatus;
import br.com.phoebus.android.payments.api.provider.PaymentContract;
import br.com.phoebus.android.payments.api.provider.PaymentProviderApi;
import br.com.phoebus.android.payments.api.provider.PaymentProviderRequest;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button bt_start;
private PaymentClient paymentClient;
public static final String TEST_APPLICATION_ID = "0";
public static final String TEST_SECRET_TOKEN = "000000000000000000000000";
public static final String TAG = "TAG_DEMO";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_start = (Button) this.findViewById(R.id.button);
bt_start.setOnClickListener(this);
paymentClient = new PaymentClient();
AndroidThreeTen.init(getApplication());
}
@Override
public void onClick(View view) {
doExecute();
}
public void doExecute() {
//establecer las credenciales
Credentials credentials = new Credentials();
credentials.setApplicationId(TEST_APPLICATION_ID);
credentials.setSecretToken(TEST_SECRET_TOKEN);
ApplicationInfo applicationInfo = new ApplicationInfo();
applicationInfo.setCredentials(credentials);
applicationInfo.setSoftwareVersion("1.0");
//creando un objeto de solicitud para el batch content provider
BatchProviderRequest request = createRequest(applicationInfo);
//seleccionando propiedades devueltas
String[] columns = new String[]{
BatchContract.column.batchData
};
try {
//solicitando la lista de lotes
request.setColumns(columns);
List<SettleRequestResponseV2> batchList = BatchProviderApi.create(this).findAll(request);
//********* Otra forma de consultar ******************************************
// Cursor cursor = getApplicationContext().getContentResolver().query(request.getUriBuilder().build(), columns, null, null, null);
// List<SettleRequestResponseV2> batchList = SettleRequestResponseV2.fromCursor(cursor);
//***************************************************************************************
Toast.makeText(this, batchList.size()+"", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
Log.e(TAG, e.getMessage(), e);
}
}
private BatchProviderRequest createRequest(ApplicationInfo appInfo) {
BatchProviderRequest batchRequest = new BatchProviderRequest();
batchRequest.setApplicationInfo(appInfo);
//filtrado por período
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
batchRequest.setBatchFilter(BatchFilter.PERIOD_BATCH);
Date dateStart = isoFormat.parse("2020-04-06T00:00:00.000");
Date dateFinish =isoFormat.parse("2020-04-06T23:59:59.000");
batchRequest.setStartDate(dateStart);
batchRequest.setFinishDate(dateFinish);
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
Log.e(TAG, e.getMessage(), e);
}
return batchRequest;
}
}