Realiza o processo de resolução de pendências QR Code - Pagamento Específico
Esse método deve ser chamado para executar a resolução de pendências QR Code - Pagamento específico.
Para utilizá-lo, ao menos um identificador do pagamento deve ser fornecido, seja o qrId ou o appTransactionId.
Métodos
| Assinatura |
Descrição |
void resolveQRCodePendencyV2(QRCodePendencyRequestV2 request, PaymentCallback paymentCallback) |
Realiza o processo de resolução de pendência QR Code para pagamento específico. |
Parâmetros
| Nome |
Tipo |
Obrigatório |
Descrição |
request |
QRCodePendencyRequestV2 |
Sim |
Objeto de transferência de dados que conterá as informações da requisição da resolução de pendências para pagamento específico QR Code. |
callback |
PaymentCallback |
Sim |
Interface que será executada para notificações de sucesso ou erro do processo de resolução de pendências para pagamento específico QR Code. |
Detalhe dos parâmetros
request (QRCodePendencyRequestV2)
| Nome |
Tipo |
Obrigatório |
Descrição |
applicationId |
Credentials |
Sim |
Identificação do aplicativo que está solicitando a consulta. |
secretToken |
Credentials |
Sim |
Token de acesso do aplicativo que está solicitando a consulta. |
softwareVersion |
String |
Sim |
Versão da aplicação que está solicitando a consulta. |
date |
Date |
Sim |
Data / hora do pagamento. |
qrId |
String |
Não |
Identificador QrCode gerado pelo terminal de captura. |
appTransactionId |
String |
Não |
Identificador da transação integrada. |
response (QRCodePendencyResponse)
| Nome |
Tipo |
Descrição |
status |
QRCodeIntentStatus |
Indica a situação da transação com QR. |
type |
QRCodeIntentType |
Tipo de QR (venda, anulação, devolução). |
payment |
PaymentV2 |
Objeto que representa os dados do pagamento. |
reversePayment |
ReversePayment |
Objeto que representa os dados do estorno. |
QRCodeIntentStatus
| Nome |
Id |
Descrição |
| CREATED |
1 |
Transação criada. |
| PENDING |
2 |
Transação pendente. |
| WAITING |
3 |
Transação em espera. |
| PROCESSING |
4 |
Transação em processamento. |
| PROCESSED |
5 |
Transação processada. |
| CONFIRMED |
6 |
Solicitação confirmada. |
| CANCELED |
7 |
Transação cancelada. |
| REVERSED |
8 |
Transação estornada. |
| DENIED |
9 |
Transação Negada. |
| EXPIRED |
10 |
Transação expirada. |
| UNREACHABLE |
11 |
Transação inacessível. |
QRCodeIntentType
| Nome |
Id |
Descrição |
| PAYMENT |
0 |
Indica que o tipo de QR é um pagamento. |
| REVERSAL |
1 |
Indica que o tipo de QR é um estorno. |
| DEVOLUTION |
2 |
Indica que o tipo de QR é uma devolução. |
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());
paymentClient.bind(this);
}
@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");
//criando objeto de request para o payment
QRCodePendencyRequestV2 request = createRequest(applicationInfo);
paymentClient.resolveQRCodePendencyV2(request, new PaymentClient.PaymentCallback<QRCodePendencyResponse>() {
@Override
public void onSuccess(QRCodePendencyResponse response) {
Log.d("Pendencia resolvida");
}
@Override
public void onError(ErrorData errorData) {
Log.d("Algo deu errado!");
}
}
}
private QRCodePendencyRequestV2 createRequest(ApplicationInfo appInfo) {
QRCodePendencyRequestV2 request = new QRCodePendencyRequestV2();
request.setApplicationInfo(appInfo);
request.setSecretToken(appInfo.getCredentials());
request.setApplicationId(appInfo.getCredentials());
request.setSoftwareVersion(appInfo.getSoftwareVersion());
request.setAppTransactionId("123456");
SimpleDateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
isoFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
Date date = isoFormat.parse("2021-07-27T00:00:00.000");
request.setDate(date);
} catch (Exception e) {
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
Log.e(TAG, e.getMessage(), e);
}
return request;
}
}