Ir para o conteúdo

Consulta da Última transação aprovada via API


Esta é uma consulta via Content Provider que possibilita que outros aplicativos possam consultar informações sobre a última transação aprovada.

A última transação confirmada pode ser um pagamento, um estorno ou uma devolução não referenciada. Não possui filtros. Retorna a estrutura completa de pagamentos + estornos (aprovados ou negados). Pode retornar vazia se não houver transações aprovadas no terminal.

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/payments/lastTransactions

URI (Uniform Resource Identifier) para obtenção de informações da última transação aprovada.

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

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

Parâmetros de entrada

Nome Tipo Obrigatório Descrição
applicationId Credentials Sim Identificação da aplicação que está realizando a consulta.
secretToken Credentials Sim Token de acesso da aplicação que está realizando a consulta.
softwareVersion String Sim Versão da aplicação que está solicitando a consulta.

Estrutura Retornada

  • Quando a Última transação aprovada é um pagamento, é retornado o objeto de pagamento e a lista de todos os estornos associados a ele;
  • Quando a Última transação aprovada é um estorno, é retornado o objeto de estorno, o pagamento associado a esse estorno, e, caso existam, outros estornos associados ao mesmo pagamento;
  • Quando a Última transação aprovada é uma devolução não referenciada, é retornado o objeto Refund.

A estrutura retornada segue conforme os exemplos abaixo:

Exemplo quando a última transação é um pagamento

Todos Campos de retorno dos objetos estão disponíveis na estrutura retornada. O último pagamento confirmado será identificado através do campo "lastTrx": true.

{
   "payment":{
      "id":"",
      "value":50,
      "captureType":"MANUAL",
      "status":"CONFIRMED",
      "date":"01/06/2023 10:45",
      "nsuTerminal":123,
      "lastTrx":true
        ...
   },
   "reversals":[
      {
         ...
      }
   ]
}

Exemplo quando a última transação é um estorno

Todos Campos de retorno dos objetos estão disponíveis na estrutura retornada.

O último estorno confirmado será identificado através do campo "lastTrx": true.

{
   "payment":{
      ...
   },
   "reversals":[
      {
         "paymentId":"",
         "value":50,
         "captureType":"MANUAL",
         "status":"CONFIRMED",
         "date":"01/06/2023 10:45",
         "lastTrx":true
         ...
      }
   ]
}

Exemplo quando a última transação é uma devolução não referenciada

Todos Campos de retorno dos objetos estão disponíveis na estrutura retornada.

A última Devolução não referenciada confirmada será identificado através do campo "lastTrx": true.

{
   "refund":{
      "id":"",
      "value":50,
      "captureType":"MANUAL",
      "status":"CONFIRMED",
      "date":"01/06/2023 10:45",
      "nsuTerminal":123,
      "lastTrx":true,
       ...
   }
}

Info

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

  • PaymentProviderApi
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");

        try {
            //solicitando a última transação           
            ProviderResponse lastTransaction = PaymentProviderApi.create(this).findLastTransaction(applicationInfo);

            Toast.makeText(this, lastTransaction.size()+"", Toast.LENGTH_LONG).show();

        } catch (Exception e) {
            Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
            Log.e(TAG, e.getMessage(), e);
        }
    }

}