Ir para o conteúdo

[DEPRECATED] Sincroniza as transações e fecha o lote atual


Esse método deve ser chamado para executar o fechamento de lote e envio do mesmo.

O lote é um conjunto de transações utilizado para agrupar vários pagamentos e estornos. O lote é aberto quando a primeira transação é feita, essa transação vai receber o número do lote a que está associada. No fechamento de lote, o terminal busca todas as transações associadas ao lote a ser fechado e gera o relatório para enviar ao host e para impressão. Apenas um lote é aberto por vez no terminal. Quando for fechado, a transação seguinte irá abrir um novo lote, incrementando o número do lote anterior. Quando ocorrem erros e transações ficam pendentes, não é possível realizar o fechamento de lote.

Métodos

Assinatura Descrição
void closeBatchV2(SettlementRequest settlementRequest, PaymentCallbackV2 paymentCallbackV2) Sincroniza as transações e fecha o lote atual.

Parâmetros

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

Detalhe dos parâmetros request (SettlementRequest)

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.
printMerchantReceipt Boolean Não Indica se o comprovante do estabelecimento deve ser impresso ou não.

(Disponível a partir da versão(.aar) v3.1.4.0)

callback (SettlementCallbackV2)

Nome Tipo Obrigatório Descrição
onSuccess Método para notificação em caso de sucesso.
Settlement.Receipt.merchantVia String Sim Retorna um comprovante da adquirente com as informações do fechamento de lote.
Settlement.BatchNumber String Sim Número de lote.
acquirerResponseCode String Sim Código de resposta do host.
terminalId String Sim Identificação do terminal
acquirerAdditionalMessage String Não Mensagem enviada no campo 63 de resposta EPS, para ser impressa ou exibida no final do fluxo transacional. O aplicativo de pagamentos permanece responsável por exibir na tela ou verificar o conteúdo presente neste campo, mas também deve enviar o valor recebido para a aplicação integrada para que ela possa aplicar suas regras de negócios baseadas no conteúdo deste campo.
batchClosureDate Date Não Data e hora do fechamento de lote.
hasMultiMerchant boolean Não Indica se o multimerchant está habilitado (true) ou desabilitado (false).
batchReports List<BatchReport> Não Lista de transações por adquirentes.
totalReportInfos List<BatchReportInfo> Não Lista com os dados de pagamentos totais.
onError Método para notificação em caso de falha.
ErrorData.paymentsResponseCode String Sim Código de resposta para o erro que ocorreu. Vide Códigos de Resposta
ErrorData.acquirerResponseCode String Não Código de resposta para o erro ocorrido retornado pela adquirente. Observe que apenas este erro 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. Se a transação foi negada pela adquirente, conterá a mensagem retornada pela adquirente.
ErrorData.acquirerAdditionalMessage String Não Mensagem enviada no campo 63 de resposta EPS, para ser impressa ou exibida no final do fluxo transacional. O aplicativo de pagamentos permanece responsável por exibir na tela ou verificar o conteúdo presente neste campo, mas também deve enviar o valor recebido para a aplicação integrada para que ela possa aplicar suas regras de negócios baseadas no conteúdo deste campo.
ErrorDataV2.errorMessage String Não Mensagem descritiva da causa da não autorização. Este campo é exclusivo para a mensagem de erro

BatchReport

Nome Tipo Descrição
productName String Nome do produto.
BatchReportTransaction.transactionReportInfo List<BatchReportInfo> Lista com agrupamento das transações.
BatchReportTransaction.parcelReportInfo List<BatchReportInfo> Lista com agrupamento das transações por parcela.
batchReportsMultiMerchant List<BatchReportMultiMerchant> Lista com agrupamento por comerciantes.

BatchReportTransaction

Nome Tipo Descrição
transactionReportInfo List<BatchReportInfo> Lista com agrupamento das transações.
parcelReportInfo List<BatchReportInfo> Lista com agrupamento das transações por parcela.

BatchReportInfo

Nome Tipo Descrição (Transaction) Descrição (Parcel)
item String Tipo de transação (0 - Compra; 1 - Devolução; 2 - Anulação de compra; 3 - Extração; 4 - Anulação de Extração). Quantidade de parcelas.
quantity Integer Quantidade de transações pelo tipo de transação. Quantidade de transações da mesma parcela.
value BigDecimal Soma dos valores do tipo de transação. Soma dos valores da mesma parcela.

BatchReportMultiMerchant

Nome Tipo Descrição
groupCode String Código do grupo de comerciantes.
groupName String Nome do grupo de comerciantes.
BatchReportTransaction.transactionReportInfo List<BatchReportInfo> Lista com agrupamento das transações.
BatchReportTransaction.parcelReportInfo List<BatchReportInfo> Lista com agrupamento das transações por parcela.

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");

        SettlementRequest settlementRequest = new SettlementRequest();
        settlementRequest.setApplicationInfo(appInfo);
        settlementRequest.setPrintMerchantReceipt(true);

        try {
            paymentClient.closeBatchV2(settlementRequest, this);
        } catch (ClientException e) {
            Log.e(TAG, "Error while closing batch.", e);
        }
    }

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

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