Realiza el proceso de resolución de pagos pendientes con QRCode - Pago específico
Se debe llamar a este método para resolver pagos pendientes realizados con QRCode - Pago específico.
Para usarlo, se debe pasar al menos un identificador de pago, ya sea qrId o appTransactionId.
Métodos
| Assinatura |
Descripción |
void resolveQRCodePendencyV2(QRCodePendencyRequestV2 request, PaymentCallback paymentCallback) |
Realiza el proceso de resolución de pagos pendientes con QRCode para pago específico. |
Parámetros
| Nombre |
Tipo |
Obligatorio |
Descripción |
request |
QRCodePendencyRequestV2 |
Si |
Objeto de transferencia de datos que contendrá la información de solicitud de resolución de pagos pendientes con QRCode. |
callback |
PaymentCallback |
Si |
Interfaz que se ejecutará para notificaciones de éxito o error del proceso. |
Detalle de los Parámetros
request (QRCodePendencyRequestV2)
| Nombre |
Tipo |
Obligatorio |
Descripción |
applicationId |
Credentials |
Si |
Identificación de la aplicación queestá realizando la consulta. |
secretToken |
Credentials |
Si |
Token de acceso de la aplicación que está realizando la consulta. |
softwareVersion |
String |
Si |
Versión de la aplicación que solicita la consulta. |
date |
Date |
Si |
Fecha / hora de pago para la aplicación de pagos. |
qrId |
String |
No |
Identificador de QrCode generado por el terminal de captura. |
appTransactionId |
String |
Si |
Identificador de transacción integrado para el software. |
response (QRCodePendencyResponse)
| Nombre |
Tipo |
Descripción |
status |
QRCodeIntentStatus |
Indica el estado de la transacción con QRCode. |
type |
QRCodeIntentType |
Tipo de QR (venta, anulación, devolución). |
payment |
PaymentV2 |
Objeto que representa datos de pago. |
reversePayment |
ReversePayment |
Objeto que representa datos de anulación/devolución. |
QRCodeIntentStatus
| Nombre |
Id |
Descripción |
| CREATED |
1 |
Transacción creada. |
| PENDING |
2 |
Transacción pendiente. |
| WAITING |
3 |
Transacción en espera. |
| PROCESSING |
4 |
Transacción en proceso. |
| PROCESSED |
5 |
Transacción procesada. |
| CONFIRMED |
6 |
Solicitud confirmada. |
| CANCELED |
7 |
Transacción cancelada. |
| REVERSED |
8 |
Transação revertida. |
| DENIED |
9 |
Transação denegada. |
| EXPIRED |
10 |
Transacción expirada. |
| UNREACHABLE |
11 |
Transação inaccesible. |
QRCodeIntentType
| Nombre |
Obligatorio |
Descripción |
| PAYMENT |
0 |
Indica que el tipo de QR es un pago . |
| REVERSAL |
1 |
Indica que el tipo QR es una anulación. |
| DEVOLUTION |
2 |
Indica que el tipo de QR es una devolución. |
Ejemplo
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;
}
}