Ir para o conteúdo

Versão 2


reprintV2()

Este método é uma atualização do método reprint(), utilizado para realizar a reimpressão e/ou compartilhamento (email) da via do cliente acerca de algum pagamento autorizado. Agora, além da impressão, o método permite apresentar em tela o mesmo comprovante impresso do comércio e cliente. Como a impressão do comprovante original já foi feita, a reimpressão do comprovante terá uma tarja preta. Se o pagamento tiver sido estornado com sucesso, o comprovante passa a ser do estorno, no caso, ao tentar reimprimir o comprovante da compra, será apresentado o comprovante do estorno, dessa forma, se tentar reimprimir a transação reimprimir com paymentId da compra ou estorno, o comprovante apresentado ou impresso será o de estorno.

Parâmetros

Nome Tipo Obrigatório Descrição
request ReprintReceiptRequestV2 Sim Objeto de transferência de dados que conterá as informações da requisição do pagamento. Note que nem todos os parâmetros são obrigatórios.
callback PaymentCallback Sim Interface que será executada para notificações de sucesso ou erro do processo de pagamento.

Detalhe dos Parâmetros

request (ReprintReceiptRequestV2)

Nome Tipo Obrigatório Descrição
ApplicationInfo.credentials Credentials Sim Credenciais da aplicação que está solicitando a operação, conforme cadastro na PayStore. Basicamente, trata-se da identificação da aplicação e o token de acesso.
ApplicationInfo.softwareVersion String Sim Versão da aplicação que está solicitando o pagamento.
paymentId String Sim PaymenId retornado no callback do pagamento ou estorno da transação realizada. Serve para identificar a transação que está sendo realizado a reimpressão.
previewMerchantReceipt Boolean Não Indica se a tela de pré-visualização do comprovante do estabelecimento, será apresentando com uma tarja preta e indicação de reimpressão. O valor padrão é true, o que significa que o comprovante será exibido caso o campo não seja enviado.
previewCustomerReceipt Boolean Não Indica se a tela de pré-visualização do comprovante do cliente, será apresentando com uma tarja preta e indicação de reimpressão. O valor padrão é true, o que significa que o comprovante do cliente será exibido caso não seja enviado.
printMerchantReceipt Boolean Não Indica se o recibo do estabelecimento deve ser impresso ou não. O valor padrão é 'true', então o recibo será impresso se não for enviado.
printCustomerReceipt Boolean Não Indica se o comprovante do cliente deve ser impresso ou não. O valor padrão é true, portanto, o comprovante será impresso caso não seja enviado.

Comportamento esperado ao preencher paymentId:

Pesquisa os pagamentos pelo paymentId informado.

Resultado: Retorna o pagamento ou estorno referente ao paymentId informado. Se o paymentId do pagamento tiver sido com sucesso, o paymentId da compra, será apresentado em tela e para impressão o comprovante do estorno.

Comportamento esperado ao preencher os seguintes parâmetros:

Se valor for igual a true

Resultado: Apresenta em tela o comprovante de compra ou estorno do comércio.

Se valor for igual a true

Resultado: Apresenta em tela o comprovante de compra ou estorno do cliente.

Se valor for igual a true

Resultado: Será impresso comprovante de compra ou estorno do comércio

Se valor for igual a true

Resultado: Será impresso comprovante de compra ou estorno do cliente

callback (PaymentCallback)

Nome Tipo Obrigatório Descrição
onSuccess Método para notificação em caso de sucesso.
onError Método para notificação em caso de erro.
ErrorData.paymentsResponseCode String Sim Código de resposta para o erro ocorrido. Vide Códigos de Resposta
ErrorData.acquirerResponseCode String Não Código de resposta para o erro ocorrido retornado pela adquirente. Note que este erro só será retornado se a transação não for autorizada pela adquirente.
ErrorData.responseMessage String Não Mensagem descritiva da causa da não autorização. Caso a transação tenha sido negada pela adquirente, conterá a mensagem retornada pela adquirente.
Exemplo do fluxo de reimpressão
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!");
            }
        });
    }