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);
}
}
}