Ir para o conteúdo

[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 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:

  • BatchProviderRequest
  • BatchProviderApi
  • BatchContract
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;
    }


}