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 |
Sí | Identificación de la aplicación que está realizando la consulta. |
secretToken |
Credentials |
Sí | Token de acceso de la aplicación que está realizando la consulta. |
softwareVersion |
String |
Sí | 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);
}
}
}