Versión 2
reprintV2()¶
Este método es una actualización del método reprint(), utilizado para realizar la reimpresión y/o compartir (email) de la vía del cliente sobre algún pago autorizado. Ahora, además de la impresión, el método permite presentar en pantalla el mismo comprobante impreso del comercio y cliente. Como la impresión del comprobante original ya se ha hecho, la reimpresión del comprobante tendrá una marca negra. Si el pago ha sido cancelado con éxito, el comprobante pasa a ser de la devolución, en el caso, al intentar reimprimir el comprobante de compra, se presentará el comprobante de devolución, de esta manera, si intenta reimprimir la transacción reimprimir con paymentId de la compra o devolución, el comprobante presentado o impreso será el de devolución.
Parámetros
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
request |
ReprintReceiptRequestV2 |
Sí | Objeto de transferencia de datos que contendrá la información de la solicitud de reimpressión. 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 reimpressión. |
Detalle de los Parámetros
request (ReprintReceiptRequestV2)
| 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 la reimpressión. |
paymentId |
String |
Sí | PaymenId devuelto en la devolución de llamada del pago o el reembolso de la transacción realizada. Sirve para identificar la transacción que se está reimprimiendo. |
previewMerchantReceipt |
Boolean |
No | Indica si la pantalla de vista previa del comprobante del establecimiento, se presentará con una cinta negra e indicación de reimpresión. El valor por defecto es true, lo que significa que el comprobante se mostrará si no se envía el campo. |
previewCustomerReceipt |
Boolean |
No | Indica si la pantalla de vista previa del comprobante del cliente, se presentará con una cinta negra e indicación de reimpresión. El valor por defecto es true, lo que significa que el recibo del cliente se mostrará si no se envía. |
printMerchantReceipt |
Boolean |
No | Indica si el comprobante del establecimiento debe ser impreso o no. El valor por defecto es true, es decir, el comprobante no se imprime. |
printCustomerReceipt |
Boolean |
No | Indica si el comprobante del cliente debe imprimirse o no. El valor por defecto es true, así que el comprobante se imprimirá si no se envía. |
Comportamiento esperado al rellenar paymentId:
Busca los pagos por el 'paymentId' informado.
Resultado: Devuelve el pago o devolución referente al paymentId informado. Si el paymentId del pago ha sido con éxito, el paymentId de la compra, se presentará en pantalla y para impresión el comprobante de la devolución.
Comportamiento esperado al rellenar los siguientes parámetros:
Si el valor es verdadero
Resultado: Muestra en pantalla el comprobante de compra o devolución del comercio.
Si el valor es verdadero
Resultado: Muestra en pantalla el comprobante de compra o devolución del cliente.
Si el valor es verdadero
Resultado: Se imprimirá el comprobante de compra o el reembolso del comercio
Si el valor es verdadero
Resultado: Se imprimirá el comprobante de compra o el reembolso del cliente
callback (PaymentCallback)
| 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 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 |
No | Mensaje descriptivo de la causa de no autorización. Si la transacción ha sido denegada por el adquirente, contendrá el mensaje devuelto por el adquirente. |
Ejemplo del flujo de reimpresión¶
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import br.com.phoebus.android.payments.api.ErrorData;
import br.com.phoebus.android.payments.api.PaymentClient;
import br.com.phoebus.android.payments.api.PrintReceiptRequest;
import br.com.phoebus.android.payments.api.client.Client;
import br.com.phoebus.android.payments.api.exception.ClientException;
import br.com.phoebus.payments.demo.utils.AlertUtils;
import br.com.phoebus.payments.demo.utils.CredentialsUtils;
import br.com.phoebus.payments.demo.utils.Helper;
public void printReceipt(View view) {
if (!isDataValid()) return;
PaymentClient mPaymentClient = new PaymentClient();
ReprintReceiptRequestV2 reprintReceiptRequestV2 = new ReprintReceiptRequestV2();
try {
reprintReceiptRequestV2.setApplicationInfo(CredentialsUtils.getMyAppInfo(this.getPackageManager(), this.getPackageName()));
reprintReceiptRequestV2.setPaymentId(paymentTransactionIdEdt.getText().toString());
reprintReceiptRequestV2.setPrintCustomerReceipt(chbReceiptCustomer.isChecked());
reprintReceiptRequestV2.setPrintMerchantReceipt(chbReceiptMerchant.isChecked());
reprintReceiptRequestV2.setPreviewCustomerReceipt(previewReceiptCustomer.isChecked());
reprintReceiptRequestV2.setPreviewMerchantReceipt(previewReceiptMerchant.isChecked());
} catch (PackageManager.NameNotFoundException e) {
showSnackBar(getString(R.string.requestFailed) +": " + e.getMessage());
return;
}
mPaymentClient.bind(this, new Client.OnConnectionCallback() {
@Override
public void onConnected() {
try {
mPaymentClient.reprintV2(reprintReceiptRequestV2, new PaymentClient.PaymentCallback<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d("PayStore App Demo", "Reprint has finished successfully!");
}
@Override
public void onError(ErrorData errorData) {
if (errorData != null && !TextUtils.isEmpty(errorData.getResponseMessage())) {
AlertUtils.showSnackBar(findViewById(android.R.id.content), errorData.getResponseMessage());
}
Log.e("PayStore App Demo", "Reprint has finished wrongfully!");
}
});
} catch (ClientException e) {
if (!TextUtils.isEmpty(e.getMessage())) {
AlertUtils.showSnackBar(findViewById(android.R.id.content), e.getMessage());
}
}
}
@Override
public void onDisconnected(boolean b) {
Log.d("PayStore App Demo", "Reprint disconnected!");
}
});
}