Ir para o conteúdo

[DEPRECATED] Consulta de Lotes via API

Esta é uma consulta via Content Provider que possibilita que outros aplicativos possam consultar informações sobre os lotes, sendo possível realizar filtros exclusivos e obter diversos dados dos lotes conforme objeto de retorno (vide Fechamento de lote).

Integração com Aplicação de Pagamentos via Content Provider

Só será permitido listar pagamentos feitos pela própria aplicação que está realizando a consulta.

Declare essa permissão no AndroidManifest.xml do seu Aplicativo para ter acesso ao 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 obtenção de informações de lote.

Para realizar o request da consulta por período entre datas, é necessário adicionar essa dependência:

implementation 'com.jakewharton.threetenabp:threetenabp:1.0.3'

Filtros

Nome Tipo Obrigatório Descrição
batchFilter BatchFilter Sim Informa qual o tipo de filtro de lote é solicitado.
startDate Date Não Filtra os lotes cuja data seja maior ou igual ao valor passado, necessário quando BatchFilter.PERIOD_BATCH.
finishDate Date Não Filtra os lotes cuja data seja menor ou igual ao valor passado, necessário quando BatchFilter.PERIOD_BATCH.
batchNumber Long Não Filtra os lotes por número específico, campo necessário quando BatchFilter.BATCH_NUMBER.

BatchFilter

Nome Descrição
CURRENT_BATCH Lote atual.
LAST_CLOSED_BATCH Último lote fechado.
BATCH_NUMBER Número do lote específico.
PERIOD_BATCH Lote por data e hora inicial e data/hora final.

Retorno

O objeto de resposta é o List<SettlementCallbackV2> (vide Fechamento de lote).

Info

Para facilitar o uso, são disponibilizadas classes de acesso ao provider:

  • BatchProviderRequest
  • BatchProviderApi
  • BatchContract
Exemplo
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() {
        //definindo as credenciais
        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");

        //criando objeto de request para o batch content provider
        BatchProviderRequest request = createRequest(applicationInfo);

        //selecionando propriedades retornadas
        String[] columns = new String[]{
                BatchContract.column.batchData
        };

        try {
            //solicitando a lista de lotes
            request.setColumns(columns);
            List<SettleRequestResponseV2> batchList = BatchProviderApi.create(this).findAll(request);
            //********* Outra forma de realizar a consulta ******************************************
            // 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);

        //filtrando 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;
    }


}