Ir para o conteúdo

Consultar la Última Transacción Aprobada vía API


Esta es una consulta a través de Content Provider que permite que otras aplicaciones consulten información sobre la última transacción aprobada.

La última transacción confirmada puede ser un pago, una devolución de cargo o una devolución sin referencia. No tiene filtros. Devuelve la estructura completa de pagos + reversiones (aprobados o denegados). Puede volver vacío si no hay transacciones aprobadas en la terminal.

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

URI (Uniform Resource Identifier) para información de la Última Transacción Aprobada.

Para realizar la solicitud de consulta por período entre fechas es necesario agregar esta dependencia.

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

Parámetros de entrada

Nombre Tipo Obligatorio Descripción
applicationId Credentials Identificación de la aplicación que está realizando la consulta.
secretToken Credentials Token de acceso de la aplicación que está realizando la consulta.
softwareVersion String Versión de la aplicación que solicita la consulta.

Estructura devuelta

  • Cuando la Última Transacción Aprobada es un pago, se devuelve el objeto de pago y la lista de todas las reversiones asociadas con él;
  • Cuando la Última Transacción Aprobada es una reversión, se devuelve el objeto de la reversión, el pago asociado a esta reversión y, en su caso, otras reversiones asociadas al mismo pago;
  • Cuando la última transacción aprobada es una devolución sin referencia, se devuelve el objeto Refund.

La estructura devuelta sigue los ejemplos a continuación:

Ejemplo cuando la última transacción es un pago

Todos los campos de devolución de objetos están disponibles en estructura devuelta.

El último pago confirmado se identificará a través del campo "lastTrx": true.

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

Ejemplo cuando la última transacción es un Anulación/Devolución

Todos los campos de devolución de objetos están disponibles en estructura devuelta.

La última Anulación/Devolución confirmada se identificará a través del campo "lastTrx": true.

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

Ejemplo cuando la última transacción es una devolución sin referencia

Todos los campos de devolución de objetos están disponibles en estructura devuelta.

La última devolución no referenciada confirmada se identificará a través del 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() {
        //Establecer las 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 transacción           
            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);
        }
    }

}