Ir para o conteúdo

Versión 2


reprintV2()

Este método es una actualización del método reprint(), utilizado para realizar la reimpresión y/o compartir (email) de la vía del cliente sobre algún pago autorizado. Ahora, además de la impresión, el método permite presentar en pantalla el mismo comprobante impreso del comercio y cliente. Como la impresión del comprobante original ya se ha hecho, la reimpresión del comprobante tendrá una marca negra. Si el pago ha sido cancelado con éxito, el comprobante pasa a ser de la devolución, en el caso, al intentar reimprimir el comprobante de compra, se presentará el comprobante de devolución, de esta manera, si intenta reimprimir la transacción reimprimir con paymentId de la compra o devolución, el comprobante presentado o impreso será el de devolución.

Parámetros

Nombre Tipo Obligatorio Descripción
request ReprintReceiptRequestV2 Objeto de transferencia de datos que contendrá la información de la solicitud de reimpressión. Tenga en cuenta que no se requieren todos los parámetros.
callback PaymentCallback Interfaz que se ejecutará para notificaciones de éxito o error del proceso de reimpressión.

Detalle de los Parámetros

request (ReprintReceiptRequestV2)

Nombre Tipo Obligatorio Descripción
ApplicationInfo.credentials Credentials Credenciales de la aplicación que solicita la operación, según lo registrado en PayStore. Básicamente, se trata de la identificación de la aplicación y el token de acceso.
ApplicationInfo.softwareVersion String Versión de la aplicación que solicita la reimpressión.
paymentId String PaymenId devuelto en la devolución de llamada del pago o el reembolso de la transacción realizada. Sirve para identificar la transacción que se está reimprimiendo.
previewMerchantReceipt Boolean No Indica si la pantalla de vista previa del comprobante del establecimiento, se presentará con una cinta negra e indicación de reimpresión. El valor por defecto es true, lo que significa que el comprobante se mostrará si no se envía el campo.
previewCustomerReceipt Boolean No Indica si la pantalla de vista previa del comprobante del cliente, se presentará con una cinta negra e indicación de reimpresión. El valor por defecto es true, lo que significa que el recibo del cliente se mostrará si no se envía.
printMerchantReceipt Boolean No Indica si el comprobante del establecimiento debe ser impreso o no. El valor por defecto es true, es decir, el comprobante no se imprime.
printCustomerReceipt Boolean No Indica si el comprobante del cliente debe imprimirse o no. El valor por defecto es true, así que el comprobante se imprimirá si no se envía.

Comportamiento esperado al rellenar paymentId:

Busca los pagos por el 'paymentId' informado.

Resultado: Devuelve el pago o devolución referente al paymentId informado. Si el paymentId del pago ha sido con éxito, el paymentId de la compra, se presentará en pantalla y para impresión el comprobante de la devolución.

Comportamiento esperado al rellenar los siguientes parámetros:

Si el valor es verdadero

Resultado: Muestra en pantalla el comprobante de compra o devolución del comercio.

Si el valor es verdadero

Resultado: Muestra en pantalla el comprobante de compra o devolución del cliente.

Si el valor es verdadero

Resultado: Se imprimirá el comprobante de compra o el reembolso del comercio

Si el valor es verdadero

Resultado: Se imprimirá el comprobante de compra o el reembolso del cliente

callback (PaymentCallback)

Nombre Tipo Obligatorio Descripción
onSuccess Método de notificación de éxito.
onError Método de notificación en caso de error.
ErrorData.paymentsResponseCode String Código de respuesta para el error que ocurrió. Ver Códigos de Respuesta
ErrorData.acquirerResponseCode String No Código de respuesta para el error que ocurrió devuelto por el adquirente. Tenga en cuenta que este error solo se devolverá si la transacción no está autorizada por el adquirente.
ErrorData.responseMessage String No Mensaje descriptivo de la causa de no autorización. Si la transacción ha sido denegada por el adquirente, contendrá el mensaje devuelto por el adquirente.
Ejemplo del flujo de reimpresión
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;

import androidx.appcompat.app.AppCompatActivity;

import br.com.phoebus.android.payments.api.ErrorData;
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.PrintReceiptRequest;
import br.com.phoebus.android.payments.api.client.Client;
import br.com.phoebus.android.payments.api.exception.ClientException;
import br.com.phoebus.payments.demo.utils.AlertUtils;
import br.com.phoebus.payments.demo.utils.CredentialsUtils;
import br.com.phoebus.payments.demo.utils.Helper;

public void printReceipt(View view) {
        if (!isDataValid()) return;

        PaymentClient mPaymentClient = new PaymentClient();

        ReprintReceiptRequestV2 reprintReceiptRequestV2 = new ReprintReceiptRequestV2();

        try {
            reprintReceiptRequestV2.setApplicationInfo(CredentialsUtils.getMyAppInfo(this.getPackageManager(), this.getPackageName()));
            reprintReceiptRequestV2.setPaymentId(paymentTransactionIdEdt.getText().toString());
            reprintReceiptRequestV2.setPrintCustomerReceipt(chbReceiptCustomer.isChecked());
            reprintReceiptRequestV2.setPrintMerchantReceipt(chbReceiptMerchant.isChecked());
            reprintReceiptRequestV2.setPreviewCustomerReceipt(previewReceiptCustomer.isChecked());
            reprintReceiptRequestV2.setPreviewMerchantReceipt(previewReceiptMerchant.isChecked());

        } catch (PackageManager.NameNotFoundException e) {
            showSnackBar(getString(R.string.requestFailed) +": " + e.getMessage());
            return;
        }

        mPaymentClient.bind(this, new Client.OnConnectionCallback() {
            @Override
            public void onConnected() {
                try {
                    mPaymentClient.reprintV2(reprintReceiptRequestV2, new PaymentClient.PaymentCallback<Void>() {
                        @Override
                        public void onSuccess(Void aVoid) {
                            Log.d("PayStore App Demo", "Reprint has finished successfully!");
                        }

                        @Override
                        public void onError(ErrorData errorData) {
                            if (errorData != null && !TextUtils.isEmpty(errorData.getResponseMessage())) {
                                AlertUtils.showSnackBar(findViewById(android.R.id.content), errorData.getResponseMessage());
                            }
                            Log.e("PayStore App Demo", "Reprint has finished wrongfully!");
                        }
                    });
                } catch (ClientException e) {
                    if (!TextUtils.isEmpty(e.getMessage())) {
                        AlertUtils.showSnackBar(findViewById(android.R.id.content), e.getMessage());
                    }
                }
            }

            @Override
            public void onDisconnected(boolean b) {
                Log.d("PayStore App Demo", "Reprint disconnected!");
            }
        });
    }