Ir para o conteúdo

Realiza el proceso de Anulación/Devolución al que se hace referencia sin paymentId.


Se debe llamar a este método para realizar la anulación/devolución referenciada sin paymentId.

A partir de la versión 3.1.5.0.

Cuando se realiza una transacción, antes se podía confirmar imprimiéndola (o mediante printReceipt), o realizando una nueva transacción. Ahora, la anulación también puede confirmarse utilizando el nuevo parámetro autoConfirm -que indica si se confirma o no independientemente de la impresión- o utilizando el nuevo método confirmReversePayment().

Métodos

Suscripciones Descripción
void reversePaymentWithFilter(ReversePaymentFilterRequest settlementRequest, PaymentCallback paymentCallback) Realiza el proceso de anulación/devolución referenciada sin paymentId.
void confirmReversePayment(String paymentId, PaymentCallback paymentCallback) Confirma una autorización de anulación de pago realizada previamente.
void cancelReversePayment(String paymentId, PaymentCallback paymentCallback) Reverte una solicitud de anulación o devolución del pago.

reversePaymentWithFilter()

Parámetros

Nombre Tipo Obligatorio Descripción
request ReversePaymentFilterRequest Objeto de transferencia de datos que contendrá la información de la solicitud de anulación/devolución referenciada sin paymentId. Tenga en cuenta que no todos los parámetros son obligatorios.
callback PaymentCallback Interfaz que se ejecutará para notificaciones de éxito o error del proceso de anulación/devolución.

Detalle de los Parámetros request (ReversePaymentFilterRequest)

Nombre Tipo Obligatorio Descripción
value BigDecimal No Monto de la transacción a anular o devolver. Si no se completa (null), o se completa con 0 (cero), la Aplicación de Pago debe solicitar el monto al operador.
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 comercio o no. El valor predeterminado es false, es decir, el recibo no se imprime.
printCustomerReceipt Boolean No Indica si el recibo del cliente debe imprimirse o no. El valor predeterminado es false, es decir, el recibo no se imprime.
operationMethod Integer No Indica el método de operación (QR o Tarjeta) utilizado para el pago original. Admita los siguientes valores: 0 - Sólo con tarjeta física (leída o mecanografiada); 1 - Solo con QRCode; Si no se informa, los modos disponibles en el terminal capturan.
productShortName String No Una vez completada, luego de leer la tarjeta e identificar el producto de marca, si no coincide con el productShortName del producto en cuestión, el terminal debe mostrar un error en la pantalla y cerrar la transacción. Ejemplos: VI=VISA, MC=MASTERCARD, AX=AMEX. Si se informa con el valor "PI" (Pago Inmediato), encuentra pago con transferencia.
ticketNumber String No Indica el número de cupón, luego de la transacción de pago realizada con tarjeta física.
cv String No Indica el número de CV (adquirenteNsu), luego de la operación de pago realizada con tarjeta física.
originalQRId String No Identificador de código QR generado por el terminal de captura. Cuando la transacción de pago se realiza mediante QR Code.
Payment.paymentDate Date No Indica la fecha/hora de pago de la aplicación de pagos. Cuando la transacción de pago no es conocida por el terminal de captura, es decir, se realizó en otro terminal.
previewMerchantReceipt Boolean No Indica si se debe mostrar la pantalla de vista previa del comprobante de comerciante después de confirmar la transacción. El valor predeterminado es true, lo que significa que se mostrará el comprobante.
previewCustomerReceipt Boolean No Indica si se debe mostrar la pantalla de vista previa del comprobante de cliente después de confirmar la transacción. El valor predeterminado es true, lo que significa que se mostrará el comprobante.
autoConfirm (v3.1.5.0) Boolean No Indica si la transacción debe confirmarse automáticamente.
Valores posibles:
1. null (por defecto) : confirma automáticamente si se imprime el recibo.
2. true : confirma automáticamente independientemente de la regla de impresión.
3. false : no confirma automáticamente, pendiente de confirmación.
merchantGroupCode String Si allowMultimerchant= true, groupCode es obligatorio Código de grupo de comerciantes.

callback

Nombre Tipo Obligatorio Descripción
onSuccess Método de notificación de éxito
ReversePayment.paymentId String ID de transacción de anulación o devolución.
ReversePayment.acquirerId String ID del adquirente.
ReversePayment.cancelable Boolean Devuelve si la transacción se puede deshacer (true) o no (false). En caso de reversión de anulación o devolución de pago con Código QR Estático, siempre es False.
ReversePayment.acquirerResponseCode String Código de respuesta del Adquirente.
ReversePayment.acquirerResponseDate String Fecha/hora devuelta por el adquirente.
ReversePayment.acquirerAuthorizationNumber String Número de autorización proporcionado por el adquirente (aparece en el recibo del titular de la tarjeta).
acquirerAdditionalMessage String No Mensaje adicional enviado por el adquirente en la respuesta a la transacción.
ReversePayment.Receipt.clientVia String No Contenido del recibo - copia del cliente.
ReversePayment.Receipt.merchantVia String No Contenido del recibo - copia del establecimiento.
batchNumber String Numero de lote.
nsuTerminal String NSU generado por el terminal para la transacción. Los 4 dígitos de la derecha corresponden al número de ticket.
cardholderName String No Nombre del cliente en la tarjeta. Este campo no se devuelve en caso de reversión de pago con QR Code estático (ni tarjeta ni pago inmediato), solo se devuelve para pago con tarjeta física.
cardBin String No Primeros 6 dígitos de la tarjeta. Ya no es obligatorio ya que no se devuelve para pagos inmediatos.
panLast4Digits String No Últimos 4 dígitos de la tarjeta. Ya no es obligatorio ya que no se devuelve para pagos inmediatos.
terminalId String Identificador de terminal.
qrId String No Identificador de QrCode generado por el terminal de captura.
onError Método de notificación en caso de error.
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 este error solo se devolverá si la transacción no está autorizada por el adquirente.
ErrorData.responseMessage String Mensaje que describe la causa del error.
acquirerAdditionalMessage String No Mensaje adicional enviado por el adquirente en la respuesta a la transacción.

confirmReversePayment()

Este método debe llamarse para confirmar una anulación que el terminal ha conseguido procesar completamente el tramo de autorización enviado por el Autorizador.

Este método no debe invocarse para una anulación que ya ha sido confirmada, es decir, cuando ya se ha ejecutado el método confirmReversePayment().

Este método no debe invocarse para una anulación ya cancelada, es decir, cuando ya se haya ejecutado el método cancelReversePayment().

Este método no debe invocarse para una anulación que haya sido denegada por el Autorizador, es decir, la transacción debe haber sido autorizada por el Autorizador.

Parámetros

Nombre Tipo Obligatorio Descripción
paymentId String Identificador de la transacción que debe confirmarse. El identificador referido es el que se utiliza en la aplicación de pago.
callback PaymentCallback Interfaz que se ejecutará para notificaciones de éxito o error.

Detalle de los parámetros

callback

Nombre Tipo Obligatorio Descripción
onSuccess Método de notificación de éxito
onError Método de notificación en caso de error.
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 ocurrido devuelto por el adquirente. Tenga en cuenta que este error solo se devolverá si la transacción no está autorizada por el adquirente.
ErrorData.acquirerAdditionalMessage String No Mensaje adicional enviado por el adquirente en la respuesta a la transacción.
ErrorData.responseMessage String Mensaje descriptivo de la causa de la autorización. Si la transacción ha sido denegada por el adquirente, contendrá el mensaje devuelto por el adquirente.

cancelReversePayment()

Se debe llamar a este método para deshacer una transacción de anulación o devolución previamente autorizada. Esta transacción no debe haberse revertida todavía y debe haber sido autorizada (no denegada) previamente.

Como se dice en la descripción de reversePayment(), Es posible que no se pueda deshacer la transacción de anulación o devolución de pago de una adquirente o tipo de pago determinado. Por lo tanto, el método cancelReversePayment() puede devolver un error específico que indique que no es posible realizar dicha operación (ver Códigos de respuesta).

Parámetros

Nombre Tipo Obligatorio Descripción
paymentId String Identificador de la transacción a reverter. El identificador referido es el que se utiliza en la aplicación de pago.
callback PaymentCallback Interfaz que se ejecutará para notificaciones de éxito o error.

Detalle de los parámetros

callback

Nombre Tipo Obligatorio Descripción
onSuccess Método de notificación de éxito
onError Método de notificación en caso de error.
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 ocurrido devuelto por el adquirente. Tenga en cuenta que este error solo se devolverá si la transacción no está autorizada por el adquirente.
ErrorData.acquirerAdditionalMessage String No Mensaje adicional enviado por el adquirente en la respuesta a la transacción.
ErrorData.responseMessage String Mensaje descriptivo de la causa de la autorización. Si la transacción ha sido denegada por el adquirente, contendrá el mensaje devuelto por el adquirente.

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

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