Ir para o conteúdo

Sincroniza transacciones y cierra el lote actual


Se debe llamar a este método para realizar el cierre y el envío de lotes.

Un lote es un conjunto de transacciones que se utilizan para agrupar múltiples pagos y reversiones. El lote se abre cuando se realiza la primera transacción, esta transacción recibirá el número de lote al que está asociada. Al cerrar un lote, el terminal busca todas las transacciones asociadas con el lote a cerrar y genera el informe para enviar al host y para imprimir. Sólo se abre un lote a la vez en la terminal. Cuando se cierre, la siguiente transacción abrirá un nuevo lote, incrementando el número de lote anterior. Cuando ocurren errores y quedan transacciones pendientes, no es posible cerrar el lote.

Métodos

Suscripción Descripción
void closeBatchV2(SettlementRequest settlementRequest, PaymentCallbackV2 paymentCallback) Sincroniza transacciones y cierra el lote actual.

Parámetros

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

Detalhe dos parámetros request (SettlementRequest)

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 el pago.
printMerchantReceipt Boolean No Indica si se debe imprimir el recibo del establecimiento o no.

(Disponible desde la versión (.aar) v3.1.4.0)

callback (SettlementCallbackV2)

Nombre Tipo Obligatorio Descripción
onSuccess Método de notificación de éxito.
Settlement.Receipt.merchantVia String Devuelve un recibo del adquirente con la información de cierre del lote.
Settlement.BatchNumber String Numero de lote.
acquirerResponseCode String Código de respuesta del host.
terminalId String Identificación de terminal
acquirerAdditionalMessage String No Mensaje enviado en el campo de respuesta de EPS 63, para ser impreso o mostrado al final del flujo de transacciones. La aplicación de pagos sigue siendo responsable de mostrar en pantalla o verificar el contenido presente en este campo, pero también debe enviar el valor recibido a la aplicación integrada para que pueda aplicar sus reglas de negocio basadas en el contenido de este campo.
batchClosureDate Date No Fecha y hora de cierre del lote.
hasMultiMerchant boolean No Indica si el multicomerciante está habilitado (true) o deshabilitado (false).
batchReports List<BatchReport> No Lista de transacciones por parte de los adquirentes.
totalReportInfos List<BatchReportInfo> No Lista con datos de pago total.
onError Método de notificación en caso de falla.
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 solo se devolverá este error si la transacción no está autorizada por el adquirente.
ErrorData.responseMessage String Mensaje descriptivo de la causa de no autorización. Si la transacción fue denegada por el adquirente, contendrá el mensaje devuelto por el adquirente.
ErrorData.acquirerAdditionalMessage String No Mensaje enviado en el campo de respuesta de EPS 63, para ser impreso o mostrado al final del flujo de transacciones. La aplicación de pagos sigue siendo responsable de mostrar en pantalla o verificar el contenido presente en este campo, pero también debe enviar el valor recibido a la aplicación integrada para que pueda aplicar sus reglas de negocio basadas en el contenido de este campo.
ErrorDataV2.errorMessage String No Mensaje descriptivo del motivo de la no autorización. Este campo es exclusivo del mensaje de error.

BatchReport

Nombre Tipo Descripción
productName String Nombre del producto.
BatchReportTransaction.transactionReportInfo List<BatchReportInfo> Lista con organización de transacciones.
BatchReportTransaction.parcelReportInfo List<BatchReportInfo> Listado con agrupación de operaciones por cuotas.
batchReportsMultiMerchant List<BatchReportMultiMerchant> Lista com agrupamento por comerciantes.

BatchReportTransaction

Nombre Tipo Descripción
transactionReportInfo List<BatchReportInfo> Lista con organización de transacciones.
parcelReportInfo List<BatchReportInfo> Listado con agrupación de operaciones por cuotas.

BatchReportInfo

Nombre Tipo Descripción (Transaction) Descripción (Parcel)
item String Tipo de transacción (0 - Compra; 1 - Devolución; 2 - Anulación de compra; 3 - Extracción; 4 - Anulación de Extracción). Número de plazos.
quantity Integer Número de transacciones por tipo de transacción. Número de operaciones de una misma cuota.
value BigDecimal Suma de los valores del tipo de transacción. Suma de los valores de una misma parcela.

BatchReportMultiMerchant

Nombre Tipo Descripción
groupCode String Código de grupo de comerciantes.
groupName String Nombre del grupo mercantil.
BatchReportTransaction.transactionReportInfo List<BatchReportInfo> Listado con agrupación de transacciones.
BatchReportTransaction.parcelReportInfo List<BatchReportInfo> Listado con agrupación de transacciones por cuota.

Ejemplo

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