Ir para o conteúdo

Realiza o processo de anulação/devolução referenciada sem paymentId.


Esse método deve ser chamado para executar a anulação/devolução referenciada sem paymentId.

A partir da versão 3.1.5.0

Quando uma transação é feita, anteriormente, poderia ser confirmado realizando sua impressão (ou via printReceipt), ou ao realizar uma nova transação. Agora, o estorno também pode ser confirmado ao usar o novo parâmetro autoConfirm - indicando se deve ou não confirmar independente da impressão - ou utilizando o novo método confirmReversePayment().

Métodos

Assinatura Descrição
void reversePaymentWithFilter(ReversePaymentFilterRequest settlementRequest, PaymentCallback paymentCallback) Realiza o processo de anulação/devolução referenciada sem paymentId.
void confirmReversePayment(String paymentId, PaymentCallback paymentCallback) Confirma uma autorização de estorno de pagamento realizada anteriormente.
void cancelReversePayment(String paymentId, PaymentCallback paymentCallback) Desfaz uma solicitação de estorno de pagamento.

reversePaymentWithFilter()

Parâmetros

Nome Tipo Obrigatório Descrição
request ReversePaymentFilterRequest Sim Objeto de transferência de dados que conterá as informações da requisição da anulação/devolução referenciada sem paymentId. 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 anulação/devolução.

Detalhe dos parâmetros request (ReversePaymentFilterRequest)

Nome Tipo Obrigatório Descrição
value BigDecimal Não Valor da transação a ser devolvida. Caso não seja preenchido (null), ou seja, preenchido com 0 (zero), o App de Pagamento deve solicitar o valor ao operador.
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.
printMerchantReceipt Boolean Não Indica se o comprovante do estabelecimento deve ser impresso ou não. O valor padrão é false, isto é, o comprovante não é impresso.
printCustomerReceipt Boolean Não Indica se o comprovante do cliente deve ser impresso ou não. O valor padrão é false, isto é, o comprovante não é impresso.
operationMethod Integer Não Indica o método de operação (QR ou Card) usado para o pagamento original. Admita o seguintes valores: 0 - Apenas com cartão físico (ler ou datilografado); 1 - Somente com QRCode; Se não for relatado, modos de disponível no terminal capturar.
productShortName String Não Quando preenchido, após a leitura do cartão e identificação do produto de bandeira, caso não corresponda a productShortName do produto em questão, o terminal deve exibir um erro em tela e encerrar a transação. Exemplos: VI=VISA, MC=MASTERCARD, AX=AMEX
ticketNumber String Não Indica o número do cupom, após a transação de pagamento realizada com um cartão físico.
cv String Não Indica o número do CV(acquirerNsu), após a transação de pagamento realizada com um cartão físico.
originalQRId String Não Identificador QrCode gerado pelo terminal de captura. Quando a transação de pagamento é realizada através de Código QR
Payment.paymentDate Date Não Indica a data/hora de pagamento para o App de Pagamentos. Quando a transação de pagamento não é conhecido pelo terminal de captura, ou seja, foi feito em outro terminal.
previewMerchantReceipt Boolean Não Indica se a tela de pré-visualização do comprovante do estabelecimento deve ser exibida após a confirmação da transação. O valor padrão é true, o que significa que o comprovante será exibido.
previewCustomerReceipt Boolean Não Indica se a tela de pré-visualização do comprovante do cliente deve ser exibida após a confirmação da transação. O valor padrão é true, o que significa que o comprovante será exibido.
autoConfirm (v3.1.5.0) Boolean Não Indica se a transação deve ser confirmada automaticamente.
Valores possíveis:
1. null (padrão) : confirma automaticamente caso ocorra a impressão do comprovante.
2. true : confirma automaticamente independente da regra de impressão.
3. false : não confirma automaticamente, ficando pendente aguardando confirmação.
merchantGroupCode String Se allowMultimerchant= true, groupCode é obrigatório Código do grupo de comerciantes.

callback

Nome Tipo Obrigatório Descrição
onSuccess Método para notificação em caso de sucesso.
ReversePayment.paymentId String Sim ID da transação de reversão.
ReversePayment.acquirerId String Sim ID da Adquirente.
ReversePayment.cancelable Boolean Sim Retorna se a transação pode ser desfeita(true) ou não(false).
ReversePayment.acquirerResponseCode String Sim Código de resposta da Adquirente.
ReversePayment.acquirerResponseDate String Sim Data/hora retornada pela adquirente.
ReversePayment.acquirerAuthorizationNumber String Sim Número de autorização fornecido pela adquirente (consta no comprovante do cliente portador do cartão).
acquirerAdditionalMessage String Não Mensagem adicional enviada pela adquirente na resposta da transação.
ReversePayment.Receipt.clientVia String Não Conteúdo do comprovante - via do cliente.
ReversePayment.Receipt.merchantVia String Não Conteúdo do comprovante - via do estabelecimento.
batchNumber String Sim Número do lote.
nsuTerminal String Sim NSU gerado pelo terminal para a transação. Os 4 dígitos mais à direita correspondem ao Ticket Number.
cardholderName String Sim Nome do cliente no cartão.
cardBin String Sim Primeros 6 dígitos do cartão.
panLast4Digits String Sim Últimos 4 dígitos do cartão.
terminalId String Sim Identificador do terminal.
qrId String Não Identificador QrCode gerado pelo terminal de captura.
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 Sim Mensagem descritiva da causa do erro.
acquirerAdditionalMessage String Não Mensagem adicional enviada pela adquirente na resposta da transação.

confirmReversePayment()

Este método deve ser chamado para confirmar um estorno que o terminal conseguiu processar completamente a perna de autorização enviada pelo Autorizador.

Este método não deve ser chamado para um estorno já confirmado, ou seja, em que já se executou o método confirmReversePayment() anteriormente.

Este método não deve ser chamado para um estorno já desfeito, ou seja, em que já se executou o método cancelReversePayment() anteriormente.

Este método não deve ser chamado para um estorno que foi negada pelo Autorizador, ou seja, a transação precisa ter sido autorizada pelo Autorizador.

Parâmetros

Nome Tipo Obrigatório Descrição
paymentId String Sim Identificador da transação que será confirmada. O Identificador referido é aquele utilizado na aplicação de pagamentos.
callback PaymentCallback Sim Interface que será executada para notificações de sucesso ou erro.

Detalhe dos parâmetros

callback

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 Sim Mensagem descritiva da causa da não autorização. Caso a transação tenha sido negada pela adquirente, conterá a mensagem retornada pela adquirente.

cancelReversePayment()

Este método deve ser chamado para desfazer uma transação de estorno anteriormente autorizada. Esta transação deve não ter sido desfeita ainda e deve ter sido autorizada (não negada) previamente.

Como dito na descrição de reversePayment(), é possível que não haja desfazimento para a transação de estorno para uma determinada adquirente. Assim, o método cancelReversePayment() pode retornar um erro específico informando que não é possível executar tal operação (vide Códigos de Resposta).

Parâmetros

Nome Tipo Obrigatório Descrição
paymentId String Sim Identificador da transação que será desfeita. O Identificador referido é aquele utilizado na aplicação de pagamentos.
callback PaymentCallback Sim Interface que será executada para notificações de sucesso ou erro.

Detalhe dos parâmetros

callback

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 Sim 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

public class MyActivity extends Activity implements PaymentClient.PaymentCallback {

    private PaymentClient paymentClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_payment);

        paymentClient = new PaymentClientImpl();
    }

    @Override
    protected void onResume() {
        super.onResume();
        paymentClient.bind(this);
    }

    @Override
    protected void onDestroy() {
         try {
            paymentClient.unbind(this);
        } catch (Exception e) {
            Log.e(TAG, e.getMessage());
        }
        super.onDestroy();
    }

    public void doExecute(){
        ApplicationInfo appInfo = new ApplicationInfo();
        appInfo.setCredentials(new Credentials("demo-app", "TOKEN-KEY-DEMO"));
        appInfo.setSoftwareVersion("1.0.0.0");

        ReversePaymentFilterRequest request = new ReversePaymentFilterRequest();
        request.setApplicationInfo(appInfo);
        request.setPrintMerchantReceipt(true);

        try {
            paymentClient.reversePaymentWithFilter(request, this);
        } catch (ClientException e) {
            Log.e(TAG, "Error starting devolution", e);
        }
    }

    @Override
    public void onError(ErrorData errorData) {
        Log.e(TAG, "Error: " + errorData.getResponseMessage());
    }

    @Override
    public void onSuccess(Refund refund) {
        Log.i(TAG, "Success!");
    }
}