Ir para o conteúdo

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