Realiza el proceso de devolución no referenciada.¶
Se debe llamar a este método para realizar una devolución no referenciada con tarjeta física, es dicer, sin QR Code.
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¶
| Assinatura | Descripción |
|---|---|
void refundPaymentV2(RefundRequestV2 settlementRequest, PaymentCallback paymentCallback) |
Realiza el proceso de devolución no referenciada. |
void confirmReversePayment(String paymentId, PaymentCallback paymentCallback) |
Confirma una autorización de devolución no autorizada previamente. |
void cancelReversePayment(String paymentId, PaymentCallback paymentCallback) |
Deshace una solicitud de devolución no autorizada. |
refundPaymentV2()¶
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
request |
RefundRequestV2 |
Sí | Objeto de transferencia de datos que contendrá la información de la solicitud de devolución no referenciada. Tenga en cuenta que no se requieren todos los parámetros. |
callback |
PaymentCallback |
Sí | Interfaz que se ejecutará para notificaciones de éxito o error del proceso de devolución. |
Detalle de los Parámetros request (RefundRequestV2)
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
value |
BigDecimal |
No | Monto de devolución no referenciada. Si no se completa (null), o se completa con 0 (cero), la Aplicación de Pago debe solicitar el monto al operador. El pago debe estar formateado con dos decimales. |
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 |
No | Versión de la aplicación que solicita el pago. |
printMerchantReceipt |
Boolean |
No | Indica si se debe imprimir el recibo del establecimiento 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. |
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 |
appTransactionId |
String |
No | Identificador de transacción integrado para el software. El identificador referido es el utilizado en la aplicación que originó la solicitud de devolución. No debe repetirse. |
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 "verdadero", 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 "verdadero", 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. |
originalReceiptNumber |
String |
No | Numero de cupón de la transacción original que desea ser devuelta. |
originalReceiptDate |
Date |
No | Fecha del cupón de la transacción original que desea ser devuelta. |
callback (RefundCallback)
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
onSuccess |
Método de notificación de éxito | ||
Refund.acquirerId |
String |
Sí | ID del adquirente. |
Refund.refundId |
String |
Sí | ID de la devolución. |
Refund.productShortName |
String |
Sí | Coincide con el productShortName correspondiente al producto de marca del contexto de la transacción. |
Refund.batchNumber |
String |
Sí | ID del lote al que pertenece la transacción. |
Refund.nsuTerminal |
String |
Sí | NSU generado por el terminal para la transacción. Los 4 dígitos de la derecha corresponden al número de ticket. Esta NSU es informada por el terminal para el PhAST en el parámetro "merchantTransactionId". |
Refund.acquirerResponseCode |
String |
Sí | Código de respuesta del adquirente. |
Refund.acquirerResponseDate |
Date |
Sí | Fecha/hora devuelta por el adquirente. |
Refund.acquirerAuthorizationNumber |
String |
Sí | Número de autorización proporcionado por el adquirente (aparece en el recibo del cliente del Titular de la tarjeta). |
Refund.Receipt.merchantVia |
String |
No | Contenido del recibo - copia del comercio. |
Refund.Receipt.clientVia |
String |
No | Contenido del recibo - copia del cliente. |
onError |
Método de notificación en caso de error. | ||
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 este error solo se devolverá si la transacción no está autorizada por el adquirente. |
ErrorData.responseMessage |
String |
Sí | Mensaje que describe la causa del error. |
confirmReversePayment()¶
Este método debe invocarse para confirmar una devolución no referenciada de que el terminal ha conseguido procesar completamente el tramo de autorización enviado por el Autorizador.
Este método no debe invocarse para una devolución sin referencia que ya ha sido confirmada, es decir, cuando ya se ha ejecutado el método confirmReversePayment().
Este método no debe invocarse para una devolución no referenciada que ya ha sido anulada, es decir, cuando ya se ha ejecutado el método cancelReversePayment().
Este método no debe invocarse para una devolución sin referencia 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 |
Sí | Identificador de la transacción que debe confirmarse. El identificador referido es el que se utiliza en la aplicación de pago. |
callback |
PaymentCallback |
Sí | 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 |
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 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 |
Sí | 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()¶
Este método debe llamarse para deshacer una devolución no referenciada previamente autorizada. Esta operación no debe haberse deshecho todavía y debe haber sido autorizada (no denegada) previamente.
Como se indica en la descripción de reversePayment(), es posible que no se pueda deshacer la devolución sin referencia para una entidad adquirente determinada. Por lo tanto, el método cancelReversePayment() puede devolver un error específico indicando que no es posible realizar esta operación (véase Códigos de respuesta).
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
paymentId |
String |
Sí | Identificador de la transacción a reverter. El identificador referido es el que se utiliza en la aplicación de pago. |
callback |
PaymentCallback |
Sí | 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 |
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 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 |
Sí | 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");
RefundRequestV2 refundRequestV2 = new RefundRequestV2();
refundRequestV2.setApplicationInfo(appInfo);
refundRequestV2.setPrintMerchantReceipt(true);
try {
paymentClient.refundPaymentV2(refundRequestV2, 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!");
}
}