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 |
Sí |
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 |
Sí |
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 |
Sí |
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 |
Sí |
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 |
Sí |
Devuelve un recibo del adquirente con la información de cierre del lote. |
Settlement.BatchNumber |
String |
Sí |
Numero de lote. |
acquirerResponseCode |
String |
Sí |
Código de respuesta del host. |
terminalId |
String |
Sí |
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 |
Sí |
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 |
Sí |
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
BatchReportTransaction
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
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!");
}
}