[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:
BatchProviderRequestBatchProviderApiBatchContract
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;
}
}