getCursor()¶
Esse método retorna um Cursor das transações realizadas pelo app que utiliza o SDK a partir um campo (String path) e de uma requisição PaymentProviderRequest.
Método¶
| Assinatura | Descrição |
|---|---|
Cursor getCursor(String path, PaymentProviderRequest request) |
Inicia o processo para obter o Cursor de uma requisição |
Parâmetros¶
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
path |
String |
Sim | Path a ser buscado, tendo como valores possíveis as Strings "" e "nonSynced". |
request |
PaymentProviderRequest |
Sim | Objeto de request para o payment content provider. |
Detalhes do parâmetro path¶
O parâmetro path define o pacote que deverá ser buscado e conta com dois valores disponiveis para busca, sendo o primeiro uma String vazia "" que sinaliza que o método deve buscar todos os resultados disponíveis e o outro valor possível é "nonSynced" que sinaliza para o método que a busca deve ser realizada apenas para transações não sinconizadas com a Paystore.
Retorno¶
O método retorna um cursor da tabela de pagamentos que contém as seguintes colunas.
| Id | Colunas | Tipo | Descrição |
|---|---|---|---|
| 0 | id |
String | Identificador da transação para a aplicação de pagamentos. Esta é a informação a ser usada para a confirmação e desfazimento. |
| 1 | value |
String | Valor do pagamento. Este é o valor que foi aprovado pela adquirente. Deve ser validado sempre na resposta, ainda que tenha sido passado como parâmetro, pois há adquirentes que, para algumas situações, aprovam valores diferentes dos solicitados. |
| 2 | paymentType |
int | Tipo de pagamento (Débito, Crédito, Voucher, etc.), para realizar a conversão ou a identificação correta do valor acesse PaymentType. |
| 3 | installments |
int | Quantidade de parcelas do pagamento. |
| 4 | acquirerId |
String | Adquirente que autorizou o pagamento. |
| 5 | acquirerName |
String | Adquirente que autorizou o pagamento. |
| 6 | acquirerResponseCode |
String | Código de resposta da adquirente. |
| 7 | acquirerResponseDate |
int | Data/hora retornada pela adquirente. |
| 8 | acquirerAuthorizationNumber |
String | Número da autorização fornecido pela adquirente (consta no comprovante do cliente Portador do Cartão). |
| 9 | cardBrand |
String | Bandeira do cartão. |
| 10 | cardBin |
String | BIN do cartão. |
| 11 | cardPanLast4Digits |
String | Últimos 4 dígitos do PAN do cartão. |
| 12 | captureType |
int | Forma de captura do cartão, para realizar a conversão ou a identificação correta do valor acesse CaptureType. |
| 13 | receiptClient |
String | Conteúdo do comprovante - via do cliente. |
| 14 | receiptMerchant |
String | Conteúdo do comprovante - via do estabelecimento. |
| 15 | date |
int | Data/hora do pagamento para a aplicação de pagamentos. |
| 16 | status |
int | Situação do pagamento. PaymentStatus. |
| 17 | additionalValueType |
int | Presente apenas quando existe um valor adicional no contexto da transação executada. |
| 18 | additionalValue |
String | Presente apenas quando existe um valor adicional no contexto da transação executada. |
| 19 | accountTypeId |
String | Presente apenas quando existe um tipo de conta no contexto da transação executada. |
| 20 | planId |
String | Presente apenas quando existe um plano no contexto da transação executada. |
| 21 | productShortName |
String | Identificador de produto, retorna apenas transações de um produto. |
| 22 | batchNumber |
String | Número de lote. |
| 23 | nsuTerminal |
String | NSU gerado pelo terminal para a transação. |
| 24 | ticketNumber |
String | ticketNumber gerado pelo terminal para a transação. |
| 25 | cardHolderName |
String | Nome do cliente no cartão. |
| 26 | terminalId |
String | Identificação do terminal. |
| 27 | appTrnsId |
String | Identificador de transação para o aplicativo de pagamento. Esta é a informação que será usada para confirmar e desfazer o pagamento. |
| 28 | acquirerNsu |
String | NSU Adquirente para consulta e identificação de transações. |
Exemplo¶
package br.com.phoebus.payments.demo;
import androidx.appcompat.app.AppCompatActivity;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import br.com.phoebus.android.payments.api.exception.ClientException;
import br.com.phoebus.android.payments.api.provider.PaymentProviderApi;
import br.com.phoebus.android.payments.api.provider.PaymentProviderRequest;
import br.com.phoebus.payments.demo.utils.CredentialsUtils;
public class GetCursorActivity extends AppCompatActivity {
private PaymentProviderApi api; // Objeto para realizar as buscas.
private PaymentProviderRequest mPaymentRequest; // Objeto de requisição das buscas.
private List<String> simpleListPayments = new ArrayList<>(); // Objeto que recebe a lista simplificada das transações para exibir.
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_cursor);
TextView tituloResultado = findViewById(R.id.text_view_list_payments_get_cursor);
listView = findViewById(R.id.list_view_lista_pagamentos_get_cursor);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, simpleListPayments);
listView.setAdapter(adapter);
api = PaymentProviderApi.create(this); // instanciando objeto para realizar as buscas.
try {
mPaymentRequest = createRequest(); // instanciando objeto de requisição das buscas.
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
Button btn_get_cursor = findViewById(R.id.btn_get_cursor);
btn_get_cursor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Cursor cursor = api.getCursor("", mPaymentRequest); // Chamando o método.
tituloResultado.setText(updateLableListPayments(cursor.getCount())); // Realizando o update do título.
updateSimpleListPayment(cursor); // Atualizando a lista.
adapter.notifyDataSetChanged(); // Atualiza a adapter para exibição.
} catch (ClientException e) {
e.printStackTrace();
}
}
});
}
protected void onDestroy() {
super.onDestroy();
}
private PaymentProviderRequest createRequest() throws PackageManager.NameNotFoundException { // Cria o objeto de requisição de busca.
PaymentProviderRequest result = null;
result = new PaymentProviderRequest(CredentialsUtils.getMyAppInfo(this.getPackageManager(), getApplicationContext().getPackageName()), new Date());
return result;
}
private void updateSimpleListPayment(Cursor cursor) // Atualiza a lista simple para exibição.
{
if (cursor != null && cursor.moveToFirst()) {
simpleListPayments.clear();
do {
String cardBrand = cursor.getString(cursor.getColumnIndex("cardBrand"));
String value = cursor.getString(cursor.getColumnIndex("value"));
// Concatenar as duas colunas em uma string
String resultado = cardBrand + " - R$" + value;
// Adicionar o resultado à lista
simpleListPayments.add(resultado);
} while (cursor.moveToNext());
cursor.close();
}
}
private String updateLableListPayments(int qnt) // Formata o título da lista de pagamentos pesquisada.
{
return "Resultado: qnt.(" + qnt + ")";
}
}
Acesse CredentialsUtils.java para obeter a classe.
xml¶
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GetCursorActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="top">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<Button
android:id="@+id/btn_get_cursor"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:text="getCursor()"
android:textAllCaps="false"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center">
<TextView
android:id="@+id/text_view_list_payments_get_cursor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Resultado: qnt.()"
android:textSize="16sp"
android:textColor="@android:color/black"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
/>
<ListView
android:id="@+id/list_view_lista_pagamentos_get_cursor"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
Resultado¶
Ao implementar o exemplo, é possível obter o cursor com da tabela de pagamentos e exibir os campos cardBrand e value de cada pagamento.